{"_id":"@spartacus/schematics","_rev":"218-de777f047318a018d9160e26c65c779e","name":"@spartacus/schematics","dist-tags":{"latest":"4.3.8","RC":"4.3.0-RC.0"},"versions":{"0.1.0-beta.0":{"name":"@spartacus/schematics","version":"0.1.0-beta.0","description":"Spartacus schematics","scripts":{"build":"tsc -p tsconfig.json","test":"yarn build && jasmine src/**/*_spec.js"},"keywords":["spartacus","schematics"],"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.1.1","@angular-devkit/schematics":"^8.1.1","@angular/cdk":"^8.1.1","@angular/pwa":"^0.801.2","@schematics/angular":"^8.1.1","@types/jasmine":"^3.3.9","@types/node":"^8.0.31","jasmine":"^3.3.1","typescript":"~3.4.3"},"_id":"@spartacus/schematics@0.1.0-beta.0","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-PEOqvyiQeyf46MATG8Ug56RZi+u95PXTFIhx/hYpNGzLAvmi51kEv4RF2CeEoXPqMB2iMv0tvhYS4b3o+8ksTg==","shasum":"b686318542aed17b3e07f6147191cf8b85518c36","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-0.1.0-beta.0.tgz","fileCount":23,"unpackedSize":67087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZjAeCRA9TVsSAnZWagAAhm0P/2X+ZN6dJ0LKo0mXVCwW\nCeS+jLZ2CSwkaInQRaZ8fugP74L+RbdVEHPXMwNgzFjyjzKGFTMORfbiLFNH\nbUSLZ5RJG2NehFo7d8XaSViNF63vdw74WBrsINfwp7fn27ApWYcUIO7sp8Zq\nzt5NKIynZvPBbBtkuxdK0JCZwqRH6X6NVdGL0zLYXR/mjrBEtFagVPTpIi1Q\nMl63Gl8JyxUbPenLvj/4zhqiU0KAzNjtrxjyN5OE6DNuLr/FYlCj9g6fyNMf\nRWsZlWh0hp8P3QXSi5xmn5g5d5xObW4kdKDAT9jiZCVHK+L7gg1sPrN6kSAE\nn5cGsKBgRle33giCwVFMSoIcUbEMvu347T/OFx7EhyuVlEBnju7tvTYUPHDR\nf+pLUPlJDBpNaM1QXBXjJjQSfDx0hA21mrIMKEFZbd9OhoBPaOcM/hdg9obt\nnWjM110bsxwzuUXSRc+MbFR30nb1aQUJ36azrIZjWojlBsASXuIARVJ/OT4R\ngoWmUYlPGG7Hi/ypuNyx2Q4yOTijUocYv4Y+fmYvq8bFp4NKhENXYBEBteW1\nwEhtLIXExsWzvFYbrYQhtnKirG3OteLnEFngoT9Ag5jnqJFivoWvfKnUD3cu\nJ9/kp4/VoRs7Wg83eKgk/Nx9MY8BwSI8Dg4y3wKTvcDPyDyJpv3xfuLuzSzc\ng9Fj\r\n=/7Vz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ0dZHAlZPaPeQqgfpF6M7X7sfe2RdmBnuxAkcdZdChAIhAIoUK4IBhbkVbYSfrxY7J7T1Ye9I3DfshtMu2hDEY+RQ"}]},"maintainers":[{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"plabadie","email":"patrick.labadie@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_0.1.0-beta.0_1566978077942_0.05675576289165685"},"_hasShrinkwrap":false},"0.1.0-beta.1":{"name":"@spartacus/schematics","version":"0.1.0-beta.1","description":"Spartacus schematics","scripts":{"build":"tsc -p tsconfig.json","test":"yarn build && jasmine src/**/*_spec.js"},"keywords":["spartacus","schematics"],"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.1","@angular-devkit/schematics":"^8.3.1","@types/jasmine":"^3.3.9","@types/node":"^10.9.4","jasmine":"^3.3.1","typescript":"3.5.3","@angular/cdk":"^8.1.4","@angular/pwa":"^0.803.1","@schematics/angular":"^8.3.1"},"_id":"@spartacus/schematics@0.1.0-beta.1","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-i3tU+mZyVvUFoMdrRZSiJuAopkt4jdqsmACqCEwd2Wj15oheT/v/0STPm0UAkF2Mriw1QZn0am7iEWF+gmCfzw==","shasum":"5500e8382ec3f0df093d0b670d8ebe8c1874bdb7","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-0.1.0-beta.1.tgz","fileCount":23,"unpackedSize":66371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZ6wjCRA9TVsSAnZWagAArLoP/17pDSbM8Et0/SMKDvkp\n027V8goBla7N4Ydrb3emmhGxkmIcw24PfNqoe1QVPeARc798YJcspsPcr1q+\nRXecvdiklSV3XjXuEAVo65G3ZXwXFPNH8J5Nlmy3VgtxWArvqvn9m7RPvn+y\nst8T5OcYyc7IgSGpP/PtCcOuKg1B4hdoGbQeGsXnhade2hW7kCrfctNyz2aQ\nNwRg+wkfwd52SpcwxHbSO+KtnlUKFdfq4CCcGvvkRiqvAYSiAYCQ3CM/+XC7\nXMEhCAKw83O2KqkepkJoHremvUT5wATqUtdMGzTrzhghoI1nvUNdjJTXcNiW\nCy583jpnRLCaGyHQRywqXffyRcwbNSrjQoUOKCGNSqzteRpfiOhrMY8Hwb9O\nHKwxaCRHTmVLZgHCpdTvlBatvZDm40c2VcXplFj/L4CF1ZiIN8xeCBUQBISR\nUHXKU5C6/qGiTnInsQQZy/Jy0S+JLdPqt1f3qvPLggdoBffSMkGP0X0d67El\nIHEpGSpO4UBxLFcnScp4cqEcX2e5K3/d8b707ZZ5oFe6hIPTDS+GDCXZMIPB\nzBYhryLBX3ZhZcHsTYvCJTXrkj1nr4jny/nO6SSHPBlJ7yNonehsdLo1EBEq\nv351GSZKsXVuWZMBqzYJtAe8EEyKufDx/m9L117pEh4k8Z6EBnMiUZkeXQoZ\nT0P5\r\n=d36d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD48qKoJ4wYvTVKIv3gHas6CSFdKUGDnSeHdwNxQeX9AgIgD6YMjg1GBfrI4dT6vvLZ1+j+ngmRZ3bXm6Qsk1IQAfw="}]},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"plabadie","email":"patrick.labadie@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_0.1.0-beta.1_1567075363254_0.36654753924364947"},"_hasShrinkwrap":false},"0.1.2-beta.0":{"name":"@spartacus/schematics","version":"0.1.2-beta.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@0.1.2-beta.0","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-LeW1NECp9mLYUVmhqseTztuWLsB5pxA3jlJOVP+4gMhyCyeIuS/G0hM2eABMA45DVZR3NSwFpHSFE8KpTmQpKg==","shasum":"432910f9ad1ca15b4dc70da40bf3b97f9a5b78ac","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-0.1.2-beta.0.tgz","fileCount":60,"unpackedSize":128686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdkgXdCRA9TVsSAnZWagAAJmAP/3QvBmJMpw4xez18hT2m\nBnSRvVJndQ9W852+BCBOXbfNFQW+G0Sdg50ekLbkaHEVYTbxG79ZRQ219SoF\nNHsQa1+r74mYjABz+L7gFAYqT+XeyMTJ5//zNiV7FU9d/yGy1uqPtLIXCJT6\nuiOdwtxfpkmDdJTzdGefvXs6lgm33dSf6Us2sjwRSu1AgOPq7kxolIP87MB9\nnO4lnwW3rJt+MVR64NLC2T4Lj81E5QC6MmMQrcSucvowcNqJv92/0srmdLFa\nVuUpvFLhNPZwz0MmYP5u/LD4Jnpf9yHUtaOG1+Nj6goq0CcWM5gjH/yjc3ld\nB/77Ld6gq74WZIzuW9JsBhuhMpEi1KNqO0u5jv13KnmwuPo623qXWDrwR6Kt\nMpCO3zlhcBXhV/yCQqgCSd91JOkPA2UvXHIstsgSa8i6E/Vcln/tLNerdA3n\nkvto09vM8oFIm/V96hxAmsAIraEfS1y+wc1Az+QvdChRrv+8Y+pLIbimtP/y\nrsBrb2ildYJRR61tECrl3tN1RYHPJYP/Ce/Z7ZEV561jup3AuizBBPkvJQr6\nGs+Adnn8AgKyuLqhQS6WkAiIxBcPGl0D8KjpHG9HL/AH+KwxWQcbsguy9cDE\nqd/2TRYiLvoNMYxqgPBeVph8EFrJlT1ZYmxFf8dw3Zc0HOd+UdQmhhsrlltQ\nPaua\r\n=y0MF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7qncVZLiPi8lIsRgtLTHMrg7pAd5IUdUTP25hof9+QgIgApd0ZvjLxDuwV1LUN3lJQJKwSC4pE6rKmMohszl1UZI="}]},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"plabadie","email":"patrick.labadie@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_0.1.2-beta.0_1569850845028_0.1433355605804698"},"_hasShrinkwrap":false},"0.1.2-beta.1":{"name":"@spartacus/schematics","version":"0.1.2-beta.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: '1.2')\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands:\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n - `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n - `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n","readmeFilename":"README.md","_id":"@spartacus/schematics@0.1.2-beta.1","_nodeVersion":"11.10.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-LRQiOJy3GHCnhjAYba95Gscbz0JdkoS1q6B1TMwHKi5PhtdbuEKYDO0VOKP+NIiD1sXjAfTQff5s11ZtmmkQpA==","shasum":"79b5a33bd469f658c2d9fe994e0096c8f946ecd3","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-0.1.2-beta.1.tgz","fileCount":60,"unpackedSize":128956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdky+yCRA9TVsSAnZWagAAdPcP/jzheoUgVtT9bXjzLCvQ\npXpujFa+MNnVPS+/Hm123k6MjV7Kw+flBrzU6WJ80v2dPMyAHdhmQtWLpQxf\nnmylWinu3dxYGyaosM2SFPU+euJfUJuNgRnMPyZSmsAI17RYr3HJ2dot3m1z\nSVMLXQrRyVx3UTe51UDPqFT8I7ooC4RP3GtH/HG9dgb4q8fxGIGRf/sheGNH\niN8m/7it9WIjPGWA8q8pPn7iqDYP772SG7nUZ/Cop7oP/0+RR0IX6/Q7UD8M\nkhKHnEr6mFMAqVrz8aO3Igazi+OIAbEFA5qCbJrfFwa6wCwx5WJr8yqjNG6m\nkmGxY1u4RVaCDR44VxUuKJ2jIz1s32mgZ3FcMzVbs/U/PuVhqnpMKrLE+c4K\nLnXZK1Vev4GO9NzqvHIgx3Rb05oGy8gA+QiX8Pt3u0k+lLUZFEEdhwz9MjwM\nPLc2FWALpf5dpSe1aer77RJjUex09UiiA7o3hlGj9T2r9emi6Fwfgl6yDgng\ncJeprb1lIH0EgJPEpER9/kheFuVcDpRvKwhDCwgiZL8xxWpn1cKhNYbYsQCk\nDj67WKtpwPQZrKPrRxqJejXXgVp7AFvMQEfFkSUhd0tyPQyod1OKWzveV/sY\nzfJ0nvC9tFa0chLegGYEMxZNud8c7DAAKWglPW5XkbG+J1F1upZKSBqPUdwQ\nxlt9\r\n=ueAO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfAHLrN4tIVvwu1XxB3VLjQvYoFXlBPaU7IedL1D1YRAIgEZNlYslwDcEZ3C2EY/T9+OgoJPF/Z6clhwV/luPKjDc="}]},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"plabadie","email":"patrick.labadie@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_0.1.2-beta.1_1569927089584_0.2825481265538303"},"_hasShrinkwrap":false},"1.3.0":{"name":"@spartacus/schematics","version":"1.3.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.3.0","_nodeVersion":"10.16.2","_npmVersion":"6.9.0","dist":{"integrity":"sha512-TeP9g0sIpVzw0B88M2IvuNeZw/Ho6w4TMp5UwlA0UiC0GDeYkad8E86g6FTsiySL0ZaBRo1swQYGKoum5Q4ZOg==","shasum":"df65cdb64c7587caaf128e59782f6c349b36685e","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.3.0.tgz","fileCount":70,"unpackedSize":203041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd96TlCRA9TVsSAnZWagAA2CoP/2Z848HhydwPjXJTlbfA\nTKqVKXqoUP+D8cTZGuD7VKyNK8H/pFCu1tQcFZW7Mb2rPqsA+mVeprmDSQTm\nBNT/k/V0OC7I/h5geyK41WihNikl7rA5F7MwlmnVkvaH//mbfwnAemC9eiFA\ncwRlf6XKDXy75/LgJStuQHMP4H1bZFA2zKdSEG4AVlSr1k/Kh4dofxYzHOEb\nD20vT3ZZIKlwN2CpA7DXg0zseoVLa12+RSjJ/HgMTbbzYtTnKctW2THQ+mxS\nffypZ875eKka/x89JHUwkyNmJRf3eUl06ixSTnl9THyrx8GfKrHfUns46z8t\nURnsmF7h6dpuHOXNlMV1SDJ3Nv90CK8o8+lz80ig2JptVvUkrD9ps7dLJbpz\nGm2zISLwzNAiKx1+WPmYiBPGYncpR5BXcMHbEHPihWHQC80fymTQUUvcsjjz\niBIxW4oWouniYmJkHVJwuJFp03euGZAU3patT1aPgeCSq5KbY3BybDpAjfWs\ntNoBqQpfRqxkHbA00NPbzSnddt6Ea73mdoIW/er8h8+DzjxQ0dLEqTi9yFBK\n+6A79lgsdNFkTyI66bR5YlYEoQRVBZGhm8+TQJ0bUJM293kGa3IbW9unCjub\nbm0veIeu7c5RgnLSeduslHb0hqseC1C1ozadPQB797EZP6e55ETi+6geFi+2\nSSpi\r\n=9nu1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHBQkDYj9Rsq9VwAJuHqMQ5i8FuWXwh97VpyFJvM+TgcAiAZduNrGJ/5nDZXb3SxETdBMULDAZzdfkh3CU2CNzyR7A=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"michal.gruca","email":"pucek9@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.3.0_1576510693300_0.21044855038682386"},"_hasShrinkwrap":false},"1.5.0-next.0":{"name":"@spartacus/schematics","version":"1.5.0-next.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _1.3_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n","readmeFilename":"README.md","_id":"@spartacus/schematics@1.5.0-next.0","_nodeVersion":"10.14.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-difIVn0uxkAcL6Lvh85yHgof3JJvqxj77oaR+X0+JF53RPV6kAMXIOKMWsM80qwsPAP1X7sNE6MLg2D7rHjRjA==","shasum":"71fd95b1edabd1c6a8a053c64fa93060de3186ac","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.0-next.0.tgz","fileCount":70,"unpackedSize":206243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKf7HCRA9TVsSAnZWagAA7S4P/0UGlyamszDI1K/FnIzF\n0CBdeSlr58gg8rXSV51JoUKturJP/cLeYrD1DKGYbTrybeRCGySgBTcuBc37\nO8hzUk3bbDeJJsXJqq/+yYCt77d4V04/sToLewQLof4L3lQpEtH/tGmJSyFa\nYd55u7M33cmWuqhvR7rX18AmPS2HNMCBcBTSXZyEv984sU/fhKlck0AhhhCX\na6SKNYSfK5DjR769q8kA92FzWZ/Dno8LwsR3KkMHyh2oxOYs1VDtFZ2yEBGS\nqJtBgzRVrwKUALWkZSFJYMx3YQmkbfbyVkME+WJhmfblq2nXLmnpTo4icVxo\nulABWxiwnfh9buxdLtfLzjCIKYvgZX6B07DaswN7jqTSXipIiJ2bub9a0eG2\nI3HLpd6gcQXqwaM07NZ3Ir07Y6+ldmMfdkjiG5eu+gidK/x8DMPr3CmWPdXe\nqYHy+zLJjmYen2eIQN3ZbdWQD50/aeBtcIWwEppu8mbBWIVZS59qoo3a5lo6\nGG+HlB9/DLOVkHMG+JsxhnSVhs/Z18mSVRe4BtEm3/xVQZ4xVV3s4vnVakuG\nnIw5BP2+NNfGGpaRTctTQeul/TyWf0s7AsGopMECU5rtSlLcKGm7RklNiQhb\nmqmJyVAh9wnZ4lR/pZmPHkKXE0PQiibEBW3wSDL17pg4eTWhAmyhgadpGZpY\nXvvP\r\n=puie\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9IalxHbVpNKhdOE44P1P1hPI2C0fZoLBtlnp0X5AZUAiEAhVRQ9nrN+xLc1seW2IbUpcIFjvoZocZAjGWg703qdyU="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.0-next.0_1579810502751_0.3952057120842547"},"_hasShrinkwrap":false},"1.4.0":{"name":"@spartacus/schematics","version":"1.4.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.4.0","_npmVersion":"6.4.1","_nodeVersion":"10.14.1","_npmUser":{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},"dist":{"integrity":"sha512-O1EaJID36P5bBOOSoHHjN2ZIUB/stIiu1rRXnK/lW75/unBuvpzGEimF0Uhe1yGm+rxlYujYSuec0gXCJibH1g==","shasum":"d6c0a14e4756def2b2ae49af5a3018af8f336d0f","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.4.0.tgz","fileCount":70,"unpackedSize":200706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeL0WsCRA9TVsSAnZWagAAsZQQAJrtu+5HaXDAC16ya438\nPonadj0zJXfVfCIEyBFO2hJRjP3k7hKFmJMIfqxkLbVvOpVVze7KRnWlbrrR\nmu8RcA+R5C/s5cUbbQFkjThfRP0zZXy7/nhou7ac0rHUSliU0DgwGRZA86O4\nFWyMWEWu44QXtfY1i0duVanKR7Phd6NKxsjbireDbT5tixYKA0RKezPPrhlF\n38ULu6UGU9s/gqXuVmQ0reGrXGGS0YlEZFTxnW+CShBeoHx+OAsCPmwL2ZuR\nOPYKWgB0EN9J508OziAMSbZzL9oqCL6fYi/sZbNnkwoZSNy/a7cla5Tbu+1m\nIX2pArhcAEzGpQrHQqAQFjJG3Hv+awOxBV2gkdT32Wju5Tt1zKWDcchVoAbD\nB0sZmQsdrUCtfrgFreyCEcXvtxGPACRiplVvWxRXC7ABMbU3X+Tvp6l265ZC\ns6unHC0lECEOBOftGR4b56AM6+/RqzJ7XTF6Z+oOaLcEXb8dCdoIKZcDeRe8\nb3ebUZmuJrBHD1kkY5k3JhJ2KrDXR77W4K4u6emMhWf06ve7qjSrfp/yoeuO\nGYjkTcifl+kuxG9Mv41LFyrGzPsq1E9/UeB/dGWKYdnb3/Mc9KnExgu0grQA\nKswwjHJ2XU4O88B/HJ5CrVLUPyX4yyGwpo3SACD/8CmIrBrFdv7Z1t1kKfMT\nsVeE\r\n=Tstv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM/q2GPVmYF+O9HCUqLZkLt+QEao5AFTmLg++XyvR/RgIgPOMfXQDsLSRCTzCAkkRjgoK0SSh6r94NNG63NqXF8Ao="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.4.0_1580156332001_0.22551309229722483"},"_hasShrinkwrap":false},"1.5.0-RC.0":{"name":"@spartacus/schematics","version":"1.5.0-RC.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _1.3_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n","readmeFilename":"README.md","_id":"@spartacus/schematics@1.5.0-RC.0","_nodeVersion":"10.14.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-47P7tzPGSDZs4WP9jxTkwNP8awrr18beDo7ui2Zl77Af0u92tZo+N7i90vu6qQ1SQDHXPZmTJWr0oPMRbH5y2Q==","shasum":"4fab171725ab880e4dc7a3b54fa7a78510014b05","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.0-RC.0.tgz","fileCount":70,"unpackedSize":206241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeOv7xCRA9TVsSAnZWagAAs88P/20EJiGQPd6S01XIPhLv\nQP7vNp6bA9N67Fsy2bqTVE+srxKm5/QZnhjo93V5LS3UbcI0dslJhB06I4wq\ncQSBL7llNapQ06HarzeMMwtYpBY7k/ncC0Q/XRM7W5jvvChLTdF07zg0TK3P\njjFEikyc8WQIXyQTnfUKUua7oyQNQkUq0wd1nVhx9/1DrRnauePzuW+JiQWp\nXY3fM6+dp5ZLDV9qPJepJC1HfGpGdJHrbTPJQQRlpB013EDiww+tyvuUXksx\n7kgXHTgl+g2Uy4ef7x8/oVKnBz0wHhrGXQ5OK/bv54SRhP0LKaDpWaXK1zC7\nA6adzW8NvLdB6aSLcnf/U8UXAYj1hZRT6w8QlC5RtwdOaF7U5Q5faVyeaaGL\nnYeWZfJCI91UrI1++YjXOXt5l0cbuAatqTjAWBIQBg9T2A/chrY9Uvkood8l\nX0m3MNbu7aE6GrvgdsDCgYhrKm2gxlvFXwdvGq0YevNXcWE54eHNocP6HVD3\n6QZ/1DEleEQoHPtqEYnTPw07iWgtNy9pirkemFU0IjxUQaki0B+k8ZQr+wze\nEmVaAR/Oaq9rIyoiLEtS1MZt0OHHnaBvdBAi6C8UN4PZbJWsOJusi6tv24+B\n5k+XKC80Kp6rJq6km+5WT7uXlGrvawssCFCuzzs7gw9a5112UZ5153Q4TK8A\nWLJL\r\n=PHjW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICgXlVVGZl6IRnMiFqpalLVs3AuQWesQ9/6hdo0cJohbAiEA3uC6c9m9m5lkUrufI/GephH9VCBByuZo/+phdr7eRDc="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.0-RC.0_1580924656870_0.48713256245391534"},"_hasShrinkwrap":false},"1.4.1":{"name":"@spartacus/schematics","version":"1.4.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.4.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-QXkP26KxuQOHBCI5TiDYNK0fojKH8rMmUELrlGW9Upz6fkMqMaEbxNzDoIWdFYcJrEX+PhbdvvvT+4xEW/bFCA==","shasum":"d1352923d90fe6dde782e7665878329782c1af37","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.4.1.tgz","fileCount":70,"unpackedSize":203504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRRvFCRA9TVsSAnZWagAAijoP/Rd15LvmpN/MrgC0z9Jv\n+S1bBIlpPut0xaxlt/zQksfIg3ATNUk1XJK06tOTqlUH6f6ug1Oe7nrUnRru\nMPXm1UajIiD6mLGUj5yrSXYg0G+6VbonctP8sOBEDqygn+D/D1FU2d7cLj4/\nnYJ6YvLp6Kl9WEN9Yu+XL8w+MLN1NRH80tvZk9DA7hx4XHYJNPVydhoqyXk7\n7SOZvPNwFJ38Q+b52Zkaqt+wRg6wIz+JaeQiNMuRvLA1ytacg5lRk//JqUB/\nYn1i7rMzG73XkVgkV6VIvozGU49o72SGsyfgV69ROxPhjVuAyx32RajpQdWm\niEBL+KWWbWGgo9ZRBMWV8kR/oyWuoSJa2iUrBZ8t7MegJ5Rnh/qTIFprM3c7\nTgpf9NuDj4CUSbjkx+SfkFn5AyvFovyYzQjqjvmhkRel+2du+i/vq6PBIbG5\nqK2YwyWEmNlz/kFD4N+bgZExgWsVQvk9zxtqXab90Mw8PN+1YxlERh+V01ri\ns1VfScOL7ClavKMn6iFYXVZP6UJOR7jK+eXf7F/MnGNafV/n9jpHON2+auOZ\nXKTt2gq7ZWK79XnZJevtYhvSX9HioWQbdYjw6ghrJ9f2d40UHkTqyW3EAOn6\nhReeBmhwSVYGjIa2P0vz1lguyY+kAuElWmjpX2LOtLfIES+itnTeq0reXw/W\nKz72\r\n=Z9QS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDE18iauQ7qeKHxgD9lTcr1LRhLczpzM0h3RXFeDGSiAiALFQfTgYxkFMRqrjEfHIdS0OaSyfu+JXgrx78t2MlKCg=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.4.1_1581587397382_0.9382550480694314"},"_hasShrinkwrap":false},"1.5.0":{"name":"@spartacus/schematics","version":"1.5.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-ccgMIY8IR0v/yUNPKPH/mkzPoDDRBEGhyW3RleezmPe9vTcI4D6nP1elqqv0qs52gSBYkhEj5+ZhVGxH79vgvw==","shasum":"eb9203a185cff570313c13dd86aa18a902046097","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.0.tgz","fileCount":70,"unpackedSize":206236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVs07CRA9TVsSAnZWagAASf0P/jJ/7SKMCzwN43SnGaub\nOM+3ctLYGgBzrUUDq+WcEVaLabWfh+pk6NoYsy9YK5TTzkxiMXJtNIpXHKJ2\nxHddkntL/aEtt22vq37RUcCT33m/YXoLyqYAKz06yXWR4UzFocdA0Hvd3STL\nwsaqNFQVwoAu0SlxeEWrrbvDLl1FSY2zGVlCfek0n9iFwD9FULirumUwhgzL\nbHAPGi2S2+OUSGMKhPwa0mD7mHAKvCaEGzZeEkt/9loRAPfOITqi+aYxLWPT\nWL9VjUFY3MPmlad6oNizJhWx1oVzu+D/lg+gDrw6Mu3EnYE/XBS04zfAPNnB\ns+ZiD3iyj91AqD5Kt+aCTFY3wuxYMj96AX4aCEAoznBOmkThpDI1vpz8fRJB\nbCp3xWKLCw5kYPB5K0+b823wG1AQwMJwc/hBfptKfCPqxlzdI67hOeb146Tj\n3xr0HBusNhO2sug2EfDFcqYJFV8VoQRXXZPSGEYZszlI0KKazU0mYgzirI2n\n2Woip9N3zUUrvidFNL6/kAONr25ddbMBNxRopXDFlOK1mBaNsQiqddd9H7te\nIwnggNa7+zcoXznkixYcFEgbXEkwIku8u+OxtEKBktbiFd4EBezyoeh7QwHR\nuPyeaHHgPNbsmlv/bFO5hD/os8+hwdfMpZdDc8S4w1Oa/6pWoNPdF9T/lPKv\ncCCn\r\n=jriz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3PV3NYmwPBdKvJypU9+C2PYrHvSoE3Ou9Vbbjxtho0wIgIIIc5UcKIohleJHyOuwwwEKYaRsJ3xGv9pJLQAC8j1o="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.0_1582746939055_0.30200736541647655"},"_hasShrinkwrap":false},"2.0.0-next.0":{"name":"@spartacus/schematics","version":"2.0.0-next.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/**/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.0.0","@angular-devkit/schematics":"^9.0.0","@angular/cdk":"^9.1.0","@angular/pwa":"^0.900.3","@angular/localize":"^9.0.0","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^9.0.0","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","@types/shelljs":"^0.8.6","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.7.5"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\r\n\r\nSpartacus schematics allows you to install Spartacus libraries in your project\r\n\r\n## Adding Spartacus libraries to your Angular project\r\n\r\nRun the following command from your project root:\r\n\r\n`ng add @spartacus/schematics`\r\n\r\n### Available options\r\n\r\n- `baseUrl`: Base url of your CX OCC backend\r\n- `baseSite`: Name of your base site\r\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\r\n- `featureLevel`: Application feature level. (default: _1.3_)\r\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\r\n- `pwa`: Include PWA features while constructing application.\r\n- `ssr`: Include Server-side Rendering configuration.\r\n\r\n### Other commands\r\n\r\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\r\n\r\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\r\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\r\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\r\n\r\n## Steps performed by Spartacus schematics\r\n\r\n1. Add required dependencies\r\n2. Import Spartacus modules in app.module and setup default configuration\r\n3. Import Spartacus styles to main.scss\r\n4. Add `cx-storefront` component to your app.component\r\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\r\n6. If `--pwa` flag included:\r\n    - Add PWA/ServiceWorker support for your project\r\n7. If `--ssr` flag included:\r\n    - Add ssr dependencies\r\n    - Provide additional files required for SSR\r\n\r\n## CMS component schematic\r\n\r\n### Available options for CMS component schematic\r\n\r\nThe following options are available:\r\n\r\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\r\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\r\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\r\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\r\n\r\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\r\n\r\nThe following Angular's options are _not_ supported:\r\n\r\n- deprecated options.\r\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\r\n- _--skipImport_ option.\r\n\r\n### Examples\r\n\r\nHere are some examples how the `add-cms-component` schematic can be used:\r\n\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Testing update schematic\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### HTML and CSS\r\n\r\nTo handle HTML changes (such as the DOM structure changes), you can use `projects/schematics/src/shared/utils/file-utils.ts#insertHtmlComment` method, where you will provide a Spartacus component selector, above which the schematic will insert a comment.\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-/jvxeQaS3BOdUe1AxcDEQTxE5nxyZA7/E4TO2YYhrBytUkJD4rpgaaMHke+d8W7RRpY5VqhVp0vyuobOIFEcEA==","shasum":"36ee46c91368b4b159a88e82138f024ce8c702f0","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.0.tgz","fileCount":95,"unpackedSize":345462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXOI+CRA9TVsSAnZWagAAQFwQAJ+KoYAXOwQvaZZ/dHcW\nLsX4Yhc6vfm5FYzN6zeBMojW/VqT1JKozrRshrU3e5BN7joTIslj1ap9KSaD\nXKJ7X7UP7koGhWbvEn9Epy6CM6OL913yza5kCn6Kc7CUvUXVLXP6THC4GXj6\n7U6usAG+RsqqMTANYtEGvfbHq8V8SNUrQJpIYyx3nyGzvexjxwyTpZPUETwE\niMt/W0EOfNLZzCcOxEATPMYVSqAO/asMxqHi6EDQCZA036SoEjhncUY0Yper\n6iE+NydKDJElNPivFh+LzEJcTIRCCg9cOGbYzZ4QofcS+OCv7VRlqEaweLHm\nKs/rKRma1znaOMXejv+uLjCacZ+cs+L97v7qR6/mEbkaOPu3ReJV9HDM6zCF\nbRJpYAShmK6TCiWl+M6GginxRpDGznMyOKU9EtCwqlyIVD1THZHMC8OmP3Oh\njq4i3nLTZ3vxnvEnd6k3ZI1tC8YDQl4MAsgWcy/xPkRvukfK4vqx8pglxecH\n1IXql+oqMWF2yMvjMdFih9EB+ySJ1GTKUMdYENbSrJvffswHfF0xzOOqCeli\nV4wH5PKYR+17tem2Xk1NtGBcq0iD7VgntZFvxHP3U95Zc3j05VwRWxImul/Z\ngCNPlrNBG6r7Q4wBGPW1zJaAyWIuOjMCCZrCYx+fu1YWOEIPDm6ZdLhsysMk\nc5Yb\r\n=3MKo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAb4Jd6C+YwnWNNupSRCb9ojsak958qvLgPWNO97tjHkAiBH1UBwVjmfSIybIWVXXkDRMT6zspuSQy2LngUT/K2nDA=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.0_1583145534325_0.3101288886008302"},"_hasShrinkwrap":false},"1.5.1":{"name":"@spartacus/schematics","version":"1.5.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-9ExgVgJLpSGFz4cEp6TQ/yLzXpsLkxfRtN2t0I+rN1+hZ/SaglsdzoE6vtpS4nhROgEfnFVVGmt3uUpD9qyBjA==","shasum":"e3355d222eb3cb077a0924665444a29084af94fd","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.1.tgz","fileCount":70,"unpackedSize":206236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaQ18CRA9TVsSAnZWagAAkw0QAIoWadFP4gZGnI6IN4o5\nuFhcmqubcwAt5N2tdr7uTQ7mwoxzCDNXS46ZQJZyzAld32exlfIIvIhhQz8C\nxReBMemyPmQr9/+RxR5+OKeyUwbNQyLlVN8MA7Nh5WFPJ8B+MQvObw72ohU9\nN1nwbedaLdfYqB8ZkHY2EsWX8IxpLqUs8ex7INE9Bf//7+alWkMnBh1QONMe\ndhZBp32v06eJ2hiA4CbrmwbYRo1ozEW8uxTkfyTZLNEY0tSugaQu314zoiJv\nIgvqvpf1SKDxkResfxjbecKZ1Lebzo5H/L5IC3eyM0Skj4NOD1FDocHdTdcd\n5HK41YifiBsLXLSBYlmFCN4+O8UIL9rVec/sKH2OfQL/loub/nIpBmk3U3wt\nA18SNmYLDgXnydkRUXkaPw+HwIq+He1glKgy16ONghZJAa/Dv0H7KazrwbYj\n1SubTZn6NpmygOKdWWF7KhM+IOkGKC11Iqns8Hv928ndFgXD3cFlc2B2UB62\nrh0oxtIUKucshiEfXqRCrvZE5bY9MPQ/1p0GyePNMOlGE2k0AXyCXQKajSXC\nEEbh3fd/GiMxldqmqsD12h3xad1JGrMgnlTHj4XP/DBkUNgTw0PxzHOLxLuZ\nBEJsmTT+FTxCS2GuCrN58z0zjVg91mHZJmCHBHvkHT4FQ5EidIZ+RAo9X837\nH5S7\r\n=3PLl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAbS+XoaNEj68Sf/nFpw0NyaQCRiSB/sNvACGS/2Al3yAiEAgDgGhNvImYnYeNaiOWZcZOpTaaILNhQbuUCa+XQf16o="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.1_1583943035867_0.5499528739785182"},"_hasShrinkwrap":false},"2.0.0-next.1":{"name":"@spartacus/schematics","version":"2.0.0-next.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/**/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.0.0","@angular-devkit/schematics":"^9.0.0","@angular/cdk":"^9.1.0","@angular/pwa":"^0.900.3","@angular/localize":"^9.0.3","@nguniversal/express-engine":"^9.0.1","@schematics/angular":"^9.0.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.6","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.7.5"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\r\n\r\nSpartacus schematics allows you to install Spartacus libraries in your project\r\n\r\n## Adding Spartacus libraries to your Angular project\r\n\r\nRun the following command from your project root:\r\n\r\n`ng add @spartacus/schematics`\r\n\r\n### Available options\r\n\r\n- `baseUrl`: Base url of your CX OCC backend\r\n- `baseSite`: Name of your base site\r\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\r\n- `featureLevel`: Application feature level. (default: _1.3_)\r\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\r\n- `pwa`: Include PWA features while constructing application.\r\n- `ssr`: Include Server-side Rendering configuration.\r\n\r\n### Other commands\r\n\r\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\r\n\r\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\r\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\r\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\r\n\r\n## Steps performed by Spartacus schematics\r\n\r\n1. Add required dependencies\r\n2. Import Spartacus modules in app.module and setup default configuration\r\n3. Import Spartacus styles to main.scss\r\n4. Add `cx-storefront` component to your app.component\r\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\r\n6. If `--pwa` flag included:\r\n    - Add PWA/ServiceWorker support for your project\r\n7. If `--ssr` flag included:\r\n    - Add ssr dependencies\r\n    - Provide additional files required for SSR\r\n\r\n## CMS component schematic\r\n\r\n### Available options for CMS component schematic\r\n\r\nThe following options are available:\r\n\r\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\r\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\r\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\r\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\r\n\r\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\r\n\r\nThe following Angular's options are _not_ supported:\r\n\r\n- deprecated options.\r\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\r\n- _--skipImport_ option.\r\n\r\n### Examples\r\n\r\nHere are some examples how the `add-cms-component` schematic can be used:\r\n\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Testing update schematic\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \r\n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\nIf needed, there's a `projects/schematics/src/shared/utils/file-utils.ts#insertHtmlComment` method, to which you can provide a Spartacus component selector, above which the schematic will insert a comment.\r\n\r\n#### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-j778EU00usHHVDu6FLKEVpWN/rzgaFRzBKJs/GlAtmMvCOoLqUSkSsw6kN5clGf6EaeCeSkk/0aSdN+hK8N2PA==","shasum":"f4f87ef6a4a7ab97b9ebfdb37399dee9158bc9a0","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.1.tgz","fileCount":188,"unpackedSize":474132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeahdPCRA9TVsSAnZWagAAi/QP/0yskxAh6Iq8hqk0awjv\nmPa0I4kcXbbuh8ob5aRwh+kGHlw4VL0vc19niq4L779Tw48Aa+NVpDzRg8Q3\nnEoEHfJ1mnPNQDqqGQ/5MSydtjrBaU0rT0HoXnL0VEiybDu9+HYEHdkaG+7Q\ncc3rniMRE3h2B7U/DJXzziApqW9Kq4ViOlCSUKQvlCpU5VL2qQNDG6aUlMVX\nfMvpEv8c0YBikEF2O+tTg79PKWA6bmQnakiJRYC2MuJOTkvojxHTOY0GyXkY\nMiDMLGiABPqnEeXmdmK072ETFyRPxUDMGO9adQi5X3kk/ZiZ9wIHx3bu59Fz\n9Y/DxCJu7nemKYDWG5hDoetwouISf5vtD7lJRefj/o9SVW08y60l/wiiBRGZ\nGYmqaJ/woROq45JYl6V3qT0y0QsjL0a/wQ+kgEoa8CchPuHtRtKFCh7UhQCe\nIpLU3SckN/W9Zi4e5uXA3h6yCBKS6Y8DxnI3RfzTBsN+yBTVyrpBWohSBZe+\nDfTFd19A2s1hlDemZE1U/zTFGXvU5k8qizWFHNNjdWcwNO+1qCIwKyCibLHo\nGd1RYtSWASUTh5rx+v2xcxtEKGx+0KDcrf8/QAsqrXHbjdhEjPw+IPPJD5mt\nYd155WxChx/3IY78+RBggOLZyhP9FiVOkzkfFI1tRmig1N0IxOVi6VttmplO\nixGK\r\n=8N0H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqaY7xw4NZKBKjapmh31nxqCpZxREJftTzp435qn7eBgIhAKVCrzmqnV8fYHBrt7z2ZuzdlbnNaIs4zeQPrVLR8YKO"}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.1_1584011087169_0.788890856839608"},"_hasShrinkwrap":false},"2.0.0-next.2":{"name":"@spartacus/schematics","version":"2.0.0-next.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine 'src/**/*_spec.js'"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.0.0","@angular-devkit/schematics":"^9.0.0","@angular/cdk":"^9.1.0","@angular/pwa":"^0.900.3","@angular/localize":"^9.0.3","@nguniversal/express-engine":"^9.0.1","@schematics/angular":"^9.0.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.6","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.7.5"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\r\n\r\nSpartacus schematics allows you to install Spartacus libraries in your project\r\n\r\n## Adding Spartacus libraries to your Angular project\r\n\r\nRun the following command from your project root:\r\n\r\n`ng add @spartacus/schematics`\r\n\r\n### Available options\r\n\r\n- `baseUrl`: Base url of your CX OCC backend\r\n- `baseSite`: Name of your base site\r\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\r\n- `featureLevel`: Application feature level. (default: _1.3_)\r\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\r\n- `pwa`: Include PWA features while constructing application.\r\n- `ssr`: Include Server-side Rendering configuration.\r\n\r\n### Other commands\r\n\r\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\r\n\r\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\r\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\r\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\r\n\r\n## Steps performed by Spartacus schematics\r\n\r\n1. Add required dependencies\r\n2. Import Spartacus modules in app.module and setup default configuration\r\n3. Import Spartacus styles to main.scss\r\n4. Add `cx-storefront` component to your app.component\r\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\r\n6. If `--pwa` flag included:\r\n    - Add PWA/ServiceWorker support for your project\r\n7. If `--ssr` flag included:\r\n    - Add ssr dependencies\r\n    - Provide additional files required for SSR\r\n\r\n## CMS component schematic\r\n\r\n### Available options for CMS component schematic\r\n\r\nThe following options are available:\r\n\r\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\r\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\r\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\r\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\r\n\r\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\r\n\r\nThe following Angular's options are _not_ supported:\r\n\r\n- deprecated options.\r\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\r\n- _--skipImport_ option.\r\n\r\n### Examples\r\n\r\nHere are some examples how the `add-cms-component` schematic can be used:\r\n\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the future migration scripts should specify the next version - _2.0.0-next.2_.\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them.\r\nAt the same time, all the scripts are going to be ran for the clients that do the upgrade for the first time.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Testing update schematic\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \r\n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\nIf needed, there's a `projects/schematics/src/shared/utils/file-utils.ts#insertHtmlComment` method, to which you can provide a Spartacus component selector, above which the schematic will insert a comment.\r\n\r\n#### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-DOxCl7J5H8Oc7jkdVkvTIqAIqAdbnxnqej2PLzNiiIJ6BDOz5bZRGUyCes0lAvm6UGkfxXrlFWRRLy+ydLwBlw==","shasum":"a730fdb81af37aa6bde4cc577d6e507a2e0c5867","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.2.tgz","fileCount":236,"unpackedSize":535162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeePXaCRA9TVsSAnZWagAAZCAP/idvuJPB/IX1Ku2+jgY6\netgBSrcHd08Fskzr1d5QKzskhzL10j95LLlgYOzKTpSnaq9oUXB8dlRz8GJw\n3kPeyJ7UkzYgVavFmOajfIrx7ygutQXjggrAu3zOfyMCkauk5djqFDgcmIg+\nw+s9kDIXPzcSgbU9y7jcYkDy7p6Wv/votfkayhFavWZbQOFMtSEYANq9W9I3\nC/GKhovJxxL9hYMx9hGmIiL2ynRdvXG0WNSCafe5BGfr6EMzcrnXsDo3T0Ku\nNhNvjvnE0T0eGSbyCmY0BQbjaK0kzv8f+B2RO+aHib+fakmcsCIFB23+t6ey\nG5Khh8E+OgY6KMSTJd3vQjHpDbVlXtNjLnXQpKIJhiuPLx03eIMvqqpWLrpP\nm0PCTQtNFx1j8M4Nk5WVI8qQUieIqn0YVvnMgT9IFkXtoEeydQQluqqJnrrd\nlTO3bi82ChU86mo87PHWFc+kg1oHsavP3rrJJkMkMjfIG2WxffE4v2VBGoxL\n7/pbhTj9BH74z5Ki09aQ5IyRkTQuGN8wbNUgA8257q0Pj3OGNGPl3eb/Yd5j\nqwgXg6MZ30JLLdFz3XIABbQZCcSon8/g5NozQ7axukUQaW0zRVcEDXTR+5me\nxyfytFIeLYEhiR0jSSpg7JX2EyW0lMRhCDy6FoHNA/bNAk/JJQTVP/E1ebVl\nLPVO\r\n=6CZ6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsYJ8ZxeA1JPUJDDw0YRh1vRxI2Gy8Ed2koFU0wT85YAIgJtxY11OD8KaE71etyZeZmM5vAl9apS5FqiQiNetbvvI="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.2_1584985562355_0.6320275114978349"},"_hasShrinkwrap":false},"2.0.0-next.3":{"name":"@spartacus/schematics","version":"2.0.0-next.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine 'src/**/*_spec.js'"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.0.0","@angular-devkit/schematics":"^9.0.0","@angular/cdk":"^9.1.0","@angular/pwa":"^0.900.3","@angular/localize":"^9.0.3","@nguniversal/express-engine":"^9.0.1","@schematics/angular":"^9.0.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.6","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.7.5"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _1.3_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how the `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n\n## Developing update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the future migration scripts should specify the next version - _2.0.0-next.2_.\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them.\nAt the same time, all the scripts are going to be ran for the clients that do the upgrade for the first time.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Testing update schematic\n\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\nIn the project in which you are developing the update schematic:\n\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\n\nNow create a new angular project:\n\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n### Iterative development\n\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\n\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\n- in the test project:\n  - revert the `package.json` and `yarn.lock` changes\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics --force` command\n\n### How to write update schematics\n\n#### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n#### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n#### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n#### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n#### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.3","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-/EB1vfbbpsCRdwwz3A2y2H1/8QmqCQNfYXk1TntpeUiBTTiY6lD5QSGgwZD44jOAQqS97gQBIxTyJ72ufPO1Sw==","shasum":"0b8197757d8ef87ebd46c3bc75f6b9b5bdaafe11","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.3.tgz","fileCount":257,"unpackedSize":570592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehLNECRA9TVsSAnZWagAAOnkP/0W2xY4Rd1c9ZsZj8d19\nkQavA77eIJKwAMGRTBj0hB1WERrUKKjsRcpErlsFxi+5wLqc/fAPJD8PSYM0\n5TJihXCXePiP+/lGhYXckVP2PY36BoWMphr8RxdtIVqeXVQHM+Z74ONLgbNY\nG5G2pJeMdbVbtgkjb8gM8wgZuvwOk6xGDwpSYOHYL2HXy8NqJVB2s8wRBuo7\nucd+rYY+sgZtYT+M+zcYy6gBYca59J0xkoByQfA4m75Q9SmlUVtLQu4KAkt5\nuHsD3MLIjYvf+GO4Abw9iXAiII++Hd/nBjAzhYR5vV96XagLWRnjVNqqiS9h\niB3CFgEL6yxM6HFm03oq1LBgCbAbUn0BooCSeN9mOs7f6wmsdCB2Ff5rN7QZ\nwy+MjRJCcW0nioQVnm/e52/yRZYLBInEHl30Gm4vOCYo4YHBM8Mp3M1hiWZB\npUGqXsA9b8r5GPFwlKRdghe9o3brruUj8U/uRVuGgB+h9kjPGzL5aczX3P/c\nWqklfJvNXs4wu2BjThCQHJkUrWBN4l6/MJQpIArgYXQUuf5peNWITLtTiC2C\nB1pishJtBCl2ySYdTZSf3GMj6ZmPZHWbF2DYWYxvPw3O1o7/Pev2Q96wIe3W\nsod5tAB8thUOMXeenrIX8KJfS5zTdLBx70CmviNPrSqqSqIv+bQkucUzOl5u\nZFGL\r\n=mU+L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqa3Cz2Y0rqlbVcVFEuqEQqZgzTY4O2RUXsJiQRZyp+AiEAqgyRdtDtXkFWaIx4dB4PhBIfwZhEeNRo+0Np0We2oLo="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.3_1585754947566_0.24625638076921552"},"_hasShrinkwrap":false},"1.4.2":{"name":"@spartacus/schematics","version":"1.4.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.4.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hlYtsu/OCpqtOV0/UhDbbdhq8C/7y0ZNSj8DQ0STmWIEjIwJIf4JLu/+9ZQZx7hT8I/IYUuMKtsNkyr78uTLaw==","shasum":"5f6fdda7d472f99cc8c95ba91e8e410be869bdc5","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.4.2.tgz","fileCount":256,"unpackedSize":452616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehyxdCRA9TVsSAnZWagAAEXEQAIHf3TgQ14ME62yz++Nk\n08qZJHL/sLwqukGh4E444C/X7nlqnlriLZDRaM7shN1sUxkfS9UcEHYKMFkM\nvs74WaKyt06JZf8vxhd/2nJAw5b72vZXGcbd9O/1tNLZKZYSLpIMRQ11Pp91\np/dT6rcTM4MtV11mS2dWSr5gPoQGJrpwTUz4EokM33bs2yeHB0vglb+5NA+t\nXK1g05tcCQNh42nVaXEOleWOgUnaFjUHXRxW8CJvzw11E313cpB+F0jsfIm9\nQM+U01phb6bmeYKCnzbnM1MVXMuClqH8IRG78ddeoq/vRn2Cs6QZV6asi+GK\nQJpC9tuA1omXxOSHvGrkUCAfMVcKjihhG+Sf201uixxP0XEvQufUpHDQ60xZ\na6MWdY4ylT1unckKzIFjeLNIAUr9Ds6Xfo7TQ/9xREC2eqxq0FHV8ay8vnbl\nASUuuO+3EY45ChBwSw9Ca/RWKTTO/07igoy2cB8ogSuj+qt7x6kTVYGJ6sJz\nIC77d2OxLL+oVdhCYo+ghhPIRdKbkeMnnlMkjR4cFT8EYcpv2tDaVwiYYqR8\n7RrJHT+YKxpylOqrTLtxBXR8vR5qIxmFsYlMcyeGi3Cp79bsG2NDKYOaWxy0\nuzEiKYgLru1hE6H58PZZEMj+7TTEzH2rOtbtgYzeGdfxIQaXlPWvNcWoucFh\nlH1t\r\n=2WIN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUaEbKAw7DLv9e1oghVOCzD3epVVbRkvZlhpGcPQhmlQIgKzpZUYPWab9XrM7m48Ot2YbmyNRt+sOMusWr5qRFpJk="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.4.2_1585917021258_0.5302988943702436"},"_hasShrinkwrap":false},"1.5.2":{"name":"@spartacus/schematics","version":"1.5.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-nhGuH5TrjNnGOXDqhNIrOD9/7wWIWSmqQ/5gNh0qcsoFfafjgpzeC4rCcgh/+vM0ewlfNzDD9kwZSXWHQzQgFw==","shasum":"6e3200f2cec04dc146d832f1c02608edb4021dcc","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.2.tgz","fileCount":256,"unpackedSize":454814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiwBvCRA9TVsSAnZWagAAcfsP/3SBINY6EIFFvMwGumF6\n37H9TsfRHwSeM+bCpwPMR4/Ov/FrjjQYVwvpDhX7AtW2/dlCKQD8UXuXsjtl\n/Ifnsa1enr+U1tDjl/YHCAeI1+jlgaJwWEaIdOHFwkmcYOpt7R5/FAS5RELi\n9rl6CNuwDsRG2AkSha/mQ6KbuFnJOX6zHsRv6R/mSMx3+5AcA7lqxWwsXt2k\naQadYERGdkVtRnZ0DX5SfOVeOUyrQzWI0FoZ7mu/g/GqJ2dqNnQIia0Swz2d\nKOsFLCNDo3D7Mh5yVZ09c/wwVkw22ySnTI2C2JXbeMKnvgxk3Uh1+2ZgrvxP\nSnLp/NeHrZU7DAR2NcCN/Ebe9N6Bys6qqugzAjLvowFuwXaHLgEKwPERleLt\n6CGwZvACEm4oRaDiYnKeqyMHvzGxoGXNLWyrirpdboGwYprbxyYniBqCXQux\nj8+n5MXk2PoYC5i8SUo1li5YpU4ooSHZxe2BbMZom/rOnWYp/D2hMnC84NBX\nMaZnYiUx5/MsL/T5rmfxoM7RPblxwqrlreKy0jMu54HYmUanIuz+8Sj91dbB\n0SfDhKFAIRHImVzRzcXFnIRS3B13g8VeH8YegA/ShsOb1nIFbDXfTWVQ8TL6\nl5K977Yt9n61iKdQgJQSdKmN4pboerECMhY4pfy1Lj+Z1VglwTloykEQlNz1\nTOL1\r\n=1rkY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH72cxSIhlEotrXWONqgm9wHRrNamAEz069ygKtXcuNsAiEAsJPwnR7uOAQWYfnSbajb6jUbl7DUzHn+kCmA6Q4Hf1c="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.2_1586167919086_0.6713170592425333"},"_hasShrinkwrap":false},"1.5.3":{"name":"@spartacus/schematics","version":"1.5.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yfMUGmTyNzoDrP3rzEByyafuVpv2MPkZkxYCnpAQbDdgDT1IeXW67lyMpdHl2o18UxWzNKRr4wBWuDJUXVNo/w==","shasum":"0063bf7ef2e00afd8058d0e34235d9da58367e05","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.3.tgz","fileCount":256,"unpackedSize":454814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejHG3CRA9TVsSAnZWagAAY38P/RhHdwAmbtKa1lD1/KTq\nTi6b7uzz7gnJPrlsmmy7ckvBjVNlRKufSMXf0WLY5+Ru/7FeEBCK86sDbx4H\nD7Lzfta5msSyOEugPBhqdrK7ezh6H5mEDqJHM0Z0zl0D13aVQnL9F0j++nEE\neiWt7K/L8oM8zn99eqAYevuVbRnTcEOnVlz4pBcb6g+noKODqoRRhjQ5PftV\nYIqpxcqX1LB7gYh3vHboHfm4kE+hseE6VfxEXTSkWXZnWnnx/+gZ2/4LNOOT\nkOm+rebCu2q5WyotFj2lCkQr1gHt5vW8kvc5v3UYBeiGG/oY5l8PHD/jT1m2\nKoIdVuUSx8nfisqjCp7x25g1EA2KsabAs9ZUzu+aLn/6x+U26sL8gHeDQQOA\ncgyolpNcxNJ4KojYjwpCgEnTv/wwxoLpji/gjOoeKN0+dScPjw11An4mrHZD\nBjGTPqvTM4zsWC60DBSgtwcNtB/tFM+jioE0usrQwHu8gYsmBlzotHKDPuza\nM8nMTw8vZFsjqRrWHrFnYpYEhAL8MqUeqov6A+/BtocX6J77tymg8gXxw9nW\nbt9hKVUN4Eh/QWxQmHVm3hCQA6i0dy4woMnKjY+Uab4EZusXC1NIKvqGn5sa\nbzJw1lKed/icaSNShN4eNkrawfB8b/rt/548dzufxxfkzhzX9pybC1nCe1iw\n3a+l\r\n=/y03\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBu+tSOv3r23+NU7peKJO+TJcvGXeAb7hAsqcN8SvvytAiA0dqDTTChcf3CtBOcHYZwCn6Yv2FCKrjyC+TdKarZxBw=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.3_1586262454823_0.8534726606388345"},"_hasShrinkwrap":false},"2.0.0-next.4":{"name":"@spartacus/schematics","version":"2.0.0-next.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _1.3_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how the `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n\n## Developing update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the future migration scripts should specify the next version - _2.0.0-next.2_.\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them.\nAt the same time, all the scripts are going to be ran for the clients that do the upgrade for the first time.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Testing update schematic\n\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\nIn the project in which you are developing the update schematic:\n\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\n\nNow create a new angular project:\n\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n### Iterative development\n\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\n\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\n- in the test project:\n  - revert the `package.json` and `yarn.lock` changes\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics --force` command\n\n### How to write update schematics\n\n#### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n#### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n#### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n#### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n#### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.4","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Fvo63k8Zyo2Dg3tMPZF3gNu+Z2VsjTom0xRjz6ct5P5R4VswrJ1uYYDuX3m4iMnHwJAt8M3LvU//XipOIrMWBQ==","shasum":"4edf44b61df192ebaf064f39274f0c18efd7fac3","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.4.tgz","fileCount":297,"unpackedSize":641719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejumeCRA9TVsSAnZWagAAyAwP/2wxOl7zPIiyZTHNl8iv\nH5KVDfVZ/KRDKIgIm6ah7dE1YholjvZD4MsyThfRD7bjJoCr4HHhdf0CQeO1\n1tiiKsa4/PHG0+eKKz+FsZlSJIYNSpTZgqU1UXMVkORNYeoeTixykgDdTL2O\nybrsiyTsZSdvr2XgPxfC3Fj+ee9RV7Mx0icw2M0BpnIz4l3qoUgdPhMaKlbM\nPZsAOeCb/9Taqkj5Qd+ekfeq3QKAGnaS2Odjvzoo6jddVkkIvJ6JDb3Ab/CE\nD7IOjvyiLVrY6AnmWSZPbWcvHDr1OcqzZqB6ls4ksPCJtfp+NOnN1cQSIb1T\nqxk/QPoBIogiKTw5cZ9iXnIs7jfuRuT8jzamKI2Y+YmcIfrtUVBoNFS+kwZt\noJopbH7/P7ZHXYUSK694IGmNkThWPrvouEsvcLMNg1zKRakhYePVpXnDFdSC\nMvLYgkW40vcFmai2czKn3t1b+5FWE2euDxZUs635JtyELgL5drccxyvpi7+i\nHk5DRErtpP94z367QrYiO7OeQJxoe9Yn3wyHnRHNXFjicIgaQjpxie1ffKao\nWyYunmlEvvCOQl6uLZKN4lubAFSKhkK9Jwf92FJSR6mQnP++DbtTo81sMD+b\nSCJsZHP1hY67uRNly0TdIAG6SafL4Wi1cJfb4uD+eNUBlAOC5xxEWcFXgCLP\nFsLX\r\n=EVb2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGn7WUlZpLVOg53yNAPSmZNvEz2UEtrTChMll3RWTC4EAiEA9MiYbnGIBifX+hG/cphUpY4m+aop7Zp7a5kXrX/eVAM="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"patrick.labadie@sap.com","name":"plabadie"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.4_1586424221969_0.32799191574790076"},"_hasShrinkwrap":false},"2.0.0-next.5":{"name":"@spartacus/schematics","version":"2.0.0-next.5","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\r\n\r\nSpartacus schematics allows you to install Spartacus libraries in your project\r\n\r\n## Adding Spartacus libraries to your Angular project\r\n\r\nRun the following command from your project root:\r\n\r\n`ng add @spartacus/schematics`\r\n\r\n### Available options\r\n\r\n- `baseUrl`: Base url of your CX OCC backend\r\n- `baseSite`: Name of your base site\r\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\r\n- `featureLevel`: Application feature level. (default: _1.3_)\r\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\r\n- `pwa`: Include PWA features while constructing application.\r\n- `ssr`: Include Server-side Rendering configuration.\r\n\r\n### Other commands\r\n\r\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\r\n\r\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\r\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\r\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\r\n\r\n## Steps performed by Spartacus schematics\r\n\r\n1. Add required dependencies\r\n2. Import Spartacus modules in app.module and setup default configuration\r\n3. Import Spartacus styles to main.scss\r\n4. Add `cx-storefront` component to your app.component\r\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\r\n6. If `--pwa` flag included:\r\n    - Add PWA/ServiceWorker support for your project\r\n7. If `--ssr` flag included:\r\n    - Add ssr dependencies\r\n    - Provide additional files required for SSR\r\n\r\n## CMS component schematic\r\n\r\n### Available options for CMS component schematic\r\n\r\nThe following options are available:\r\n\r\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\r\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\r\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\r\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\r\n\r\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\r\n\r\nThe following Angular's options are _not_ supported:\r\n\r\n- deprecated options.\r\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\r\n- _--skipImport_ option.\r\n\r\n### Examples\r\n\r\nHere are some examples how the `add-cms-component` schematic can be used:\r\n\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the future migration scripts should specify the next version - _2.0.0-next.2_.\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them.\r\nAt the same time, all the scripts are going to be ran for the clients that do the upgrade for the first time.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Testing update schematic\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \r\n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n#### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.5","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-KB6eT9KYxvY/zAqATAU0i5xKqM/OXRz2kdD1BKxH8/P2Lb328/0TjypoQnBYAjtx5Gd2eL8HlkMJmW3QIwfGTQ==","shasum":"8636fab2da61cdf7e78a3119bf633010e0fec86d","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.5.tgz","fileCount":324,"unpackedSize":670651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemEUJCRA9TVsSAnZWagAAijwQAIiJDzNq5pTaqFHO8oX1\nSsPoQnY2PObNScaX9mYnVPoHRlQ5yCshsdwZfqfvz7vGjyBXGhWcwcYvM8pE\nlbObFCAu+gZp2jVxCQqtoTDIgQpNLOW9NOoHjQuSDG4jNZuaWnGyVFrAvHAt\nuHq9hw57KZgPTABu8hURrpnWZUh91VaMO0zfT1zJLI1f64tf6LhvxPGkXndE\nct6sSwHzzH7gafawEUkVCfK3V0Xs7J8ibvncNJTlpXIp6foPURqmWF3xyQTd\nq8ZylSsaeHcW7tsaZP8IUxgSpJ6hRoZHJ8FqGubLgzzYWdHSZH/HhkQrqold\nH5o8qynSXNOhDR0S523sr/Bo4x+Yi6FUQ5tbC4KsIXJK1HFGIuFPI+9PG+41\nFey0fhry7s+/MJh2hgvcZKhVGTyjx3arB9sMo7Vpkpr/D2RGC6/8lc5Shatq\nZ9ohExGucIhmcRyWAEObgaF15KgRipxo/qYV5A9fkQd79wWaQKF95Rk55Evy\nJKrydeKq6GDyH+Sep6RWOg5Yu777Fscw9c7hTlaptXDHXHiKI45FUHIpLTLn\n3nASAyS32AjHYdzUPmRi52biwNZ9QKQScltCOCdYd+eFDVHwEd4Odqjov2g7\ntxpvhSoUOOrwDBcNhPYzvXnrSJ+PwqAJrl+IYmU1dZQI2qOZmKs0vL9NoPwV\nui1a\r\n=l73v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICdKYeeDzi9qnJ6eRxSgug8d8fX73DLsQqlYqbzndltvAiByK4jS4SG34dUyToAhaxoGlE1g+Rw5p8hpVr2C58yDjw=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"michal.szczepaniak01@sap.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.5_1587037448565_0.8459487913172925"},"_hasShrinkwrap":false},"2.0.0-next.6":{"name":"@spartacus/schematics","version":"2.0.0-next.6","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\r\n\r\nSpartacus schematics allows you to install Spartacus libraries in your project\r\n\r\n## Adding Spartacus libraries to your Angular project\r\n\r\nRun the following command from your project root:\r\n\r\n`ng add @spartacus/schematics`\r\n\r\n### Available options\r\n\r\n- `baseUrl`: Base url of your CX OCC backend\r\n- `baseSite`: Name of your base site\r\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\r\n- `featureLevel`: Application feature level. (default: _1.3_)\r\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: false)\r\n- `pwa`: Include PWA features while constructing application.\r\n- `ssr`: Include Server-side Rendering configuration.\r\n\r\n### Other commands\r\n\r\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\r\n\r\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\r\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\r\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\r\n\r\n## Steps performed by Spartacus schematics\r\n\r\n1. Add required dependencies\r\n2. Import Spartacus modules in app.module and setup default configuration\r\n3. Import Spartacus styles to main.scss\r\n4. Add `cx-storefront` component to your app.component\r\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\r\n6. If `--pwa` flag included:\r\n    - Add PWA/ServiceWorker support for your project\r\n7. If `--ssr` flag included:\r\n    - Add ssr dependencies\r\n    - Provide additional files required for SSR\r\n\r\n## CMS component schematic\r\n\r\n### Available options for CMS component schematic\r\n\r\nThe following options are available:\r\n\r\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\r\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\r\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\r\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\r\n\r\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\r\n\r\nThe following Angular's options are _not_ supported:\r\n\r\n- deprecated options.\r\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\r\n- _--skipImport_ option.\r\n\r\n### Examples\r\n\r\nHere are some examples how the `add-cms-component` schematic can be used:\r\n\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the future migration scripts should specify the next version - _2.0.0-next.2_.\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them.\r\nAt the same time, all the scripts are going to be ran for the clients that do the upgrade for the first time.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Testing update schematic\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \r\n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n#### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.6","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-ShJDgwuSqYDUt4wifQVR8vAlshA+N5xQ1ag50QUyzcDb51YgBDOniVljhtcygb10zq51JYvRlXBg8tW90NwcUw==","shasum":"a1e1095c54cc335f1c310263e2eb09d5e4b95662","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.6.tgz","fileCount":324,"unpackedSize":670651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemGkhCRA9TVsSAnZWagAA2ngQAJhYHbYJ4iT1Rg3J8FCI\n3T0bJNN+p8Gng/SlmSbIVebUygF5S4q6uYsoH4v3nJ3mw3O3TcZhdsT1UCTJ\nVh2I8PATktGsCSXcvuxCypBle8jV5pJEFrk03DMzDST+rxTayLGz5o6yAQQA\nssyvV13YOVob6FMzLJGPtGjJMUkKROXRJHVBNIui+9YaudI9wXAlsjRAW0od\nn/0k4ZDfYi255DuNR54mZgVPY44gquFc5/Qnk5uUQUGq1AK7tpr6lL7haZAM\np8HUBqyJLCaaqwcsIhPmgeA0wF1Qm9gRMKHe1LMwHTSAsMlPVa8+z8uGxYZi\npSm2sY0sx4JTj3sA76wdMxWhN4dEBidBYRBxSsiwF9rsmAmH2WiTVvizTbPG\nP/ExoaNH1NZOvNIKIKFTtuIUAnZGLniP3aMvZJ/Q7a2qpPwZapGxqgeijJg0\nick7w+JkreOGzrI9PWh/C/MX4FEDCIN68x84GmvCQVw8tjwrMQO0a1V/IzJN\nT3IXr3+Tj6Ytv5a00eA0Sj/4F89Ty9NXgZ76m4x04UnKjjG+IvTipXeke7zl\n8c8yLQeDGCAO0IYdQU699cXYzz3mk3Gh/dSdoZhLmSiHLRlzWXBdWaCVKgD0\nEA29TL935xj3j6H1dXpotk7OvM+qu3oRNDTGtUFAuc3hOMtXJhsr9QTMGTpW\nLnI4\r\n=soea\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcOtx5NHCu8g6zLWsXo61r09WPu1J2dx1qrZIMIpK75AIgDy3Syew8BgljFG1TKaXmU+sAbHLJmIlz+W3+iC0J5/I="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"michal.szczepaniak01@sap.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.6_1587046688792_0.35194205947974755"},"_hasShrinkwrap":false},"2.0.0-next.7":{"name":"@spartacus/schematics","version":"2.0.0-next.7","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds"]},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `occPrefix`: The OCC API prefix. E.g.: /occ/v2/\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _2.0_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: true)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how the `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n\n## Developing update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the future migration scripts should specify the next version - _2.0.0-next.2_.\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them.\nAt the same time, all the scripts are going to be ran for the clients that do the upgrade for the first time.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Testing update schematic\n\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\nIn the project in which you are developing the update schematic:\n\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\n\nNow create a new angular project:\n\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n### Iterative development\n\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\n\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\n- in the test project:\n  - revert the `package.json` and `yarn.lock` changes\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics --force` command\n\n### How to write update schematics\n\n#### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n#### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n#### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n#### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n#### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-next.7","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-KfrRkil4YsFD0wa9gbrQetoQ8BXououoSO3an50HdmgOdvJJLla3NzeXeBnMWE6m8o/HOt97atE655/xF3L9HQ==","shasum":"fec2ca9edf5da413f84dc3f8daf6710413212ef6","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-next.7.tgz","fileCount":360,"unpackedSize":725758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoaOICRA9TVsSAnZWagAALooQAJbCiyqOD3F60lAxz2eo\nhML+yPyDX1mlAEaefl3eGLzCHyD2zZPp1ctYjhf65044zdG7B9Dh7j96Z1p2\najhpY+zOiRZ9F6EzYFqlY0lDkSAVcW4lqUAz3bvaR4UEZ2fL3y2uhmmHFTtF\nnIUoQDFkZQ+drb6DILILz1nmwEEfHurNmix9irfh2hsuwvitc60j0OLUbRHN\nVb+Wi2/F2eCnCX3Dj2Mz5fhUPMV8vAIjXBzklD9d3Z+CMOEVtJ5b3O/pWvRV\nrG+NcnX1BJtKoW6RCzDyoG71XyA+7neW53LHzd8tWv9a481CrqN2/WiVolej\ngh6kUQxIsMQMJK1hkA4+DO3jdvaSIzcYBpnoKKt+TvYfie/wXc7wWkp3afHQ\nH2z6OMQQ0pknhONHRwR2IfTAUsrb/RpoDzcdWjZiLedflXqqE9Dgpq5Eh2Gw\n7T7aYo67hXn4E8I0g1jWGwbcqp1UARm6xxmgrrUoXYz2JgdhHJ4E37YjfMZU\nF4oxd9ORGoDvJwI23A3eVSa97WJVdmIJv74krqm6VSWCZ2bt2z1Jc/0BJ3AY\nRXEv8r/vsJk9eRO9RFyjkIfiKeI3VDVyuXBvmobjlhmHUZ3i4ufO1R64TNKu\nNQKOrRLECOINSGdZfUkoq3RKR6L0ca6HuHrA6d8hnL4B8Sn2W7FdHXRKLwt6\ntSIe\r\n=5SH/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCb6zlFeVgM7A1A8zjTc7pdfdpRpTOAdT0lAUVBjzKIUwIhAIL8ISacbKsSeA7RJN4jPy09L71e02fISMGl382FRKKJ"}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"michal.szczepaniak01@sap.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-next.7_1587651463543_0.6770727388070046"},"_hasShrinkwrap":false},"2.0.0-rc.0":{"name":"@spartacus/schematics","version":"2.0.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"readme":"# Getting Started\r\n\r\nSpartacus schematics allows you to install Spartacus libraries in your project\r\n\r\n## Adding Spartacus libraries to your Angular project\r\n\r\nRun the following command from your project root:\r\n\r\n`ng add @spartacus/schematics`\r\n\r\n### Available options\r\n\r\n- `baseUrl`: Base url of your CX OCC backend\r\n- `baseSite`: Name of your base site\r\n- `occPrefix`: The OCC API prefix. E.g.: /occ/v2/\r\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\r\n- `featureLevel`: Application feature level. (default: _2.0_)\r\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: true)\r\n- `pwa`: Include PWA features while constructing application.\r\n- `ssr`: Include Server-side Rendering configuration.\r\n\r\n### Other commands\r\n\r\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\r\n\r\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\r\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\r\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\r\n\r\n## Steps performed by Spartacus schematics\r\n\r\n1. Add required dependencies\r\n2. Import Spartacus modules in app.module and setup default configuration\r\n3. Import Spartacus styles to main.scss\r\n4. Add `cx-storefront` component to your app.component\r\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\r\n6. If `--pwa` flag included:\r\n    - Add PWA/ServiceWorker support for your project\r\n7. If `--ssr` flag included:\r\n    - Add ssr dependencies\r\n    - Provide additional files required for SSR\r\n\r\n## CMS component schematic\r\n\r\n### Available options for CMS component schematic\r\n\r\nThe following options are available:\r\n\r\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\r\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\r\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\r\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\r\n\r\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\r\n\r\nThe following Angular's options are _not_ supported:\r\n\r\n- deprecated options.\r\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\r\n- _--skipImport_ option.\r\n\r\n### Examples\r\n\r\nHere are some examples how the `add-cms-component` schematic can be used:\r\n\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\r\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Testing update schematic\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \r\n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n#### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n\r\n### Releasing update schematics\r\n\r\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\r\n\r\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\r\n\r\n- `migration-v2-validate-01`\r\n- `migration-v2-constructor-deprecations-03`\r\n- `migration-v2-removed-public-api-04`\r\n- `migration-v2-component-deprecations-05`\r\n- `migration-v2-css-06`\r\n\r\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\r\n\r\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-rc.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-o+bPZQB6IR7bDcCcJeWcbOBFolzeGMeprjM0KlWdmAOB8LCLyqlUp0rc+pMu1IsZRbPKe4iuM48eUIVQIeSqGA==","shasum":"62030ef72a152ad3ccaa8066b76934a5a55a9a97","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-rc.0.tgz","fileCount":381,"unpackedSize":737483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqA20CRA9TVsSAnZWagAAugYQAIK8tFGFr3ZD1pjspHr7\n1B15rG6UYDJz0MHZGU3r9XII0O8Yy/M6dXhgtIqjtzy60evkNhO04HgDBxkA\n58Bsnx/h/MXofaKNBLVPeOx3IDflnRstmwFhAtaM7+F3tk5CS0Xa8MjGWZxO\ncfNEJqG0M4wKY2Ulzi0EWzj3b+hFZrvM3EjECJ08cA7RiZY1vxNSaL25yW9U\nzrR0rWtuYr8hzcakTU/DWr7snVvdrpJ2aOuAJbg3q1MtdKadLBddVpQYWgg4\nLrY9Rnp977bB+utVf43iCPKnGgUQL2+Ob05K8IhgFvLARB9Ub/0MQTNHeVP/\nHAy+mRRSmWrGkqco/tHHBeIe7KPQRVoaTWfEiRzNLoEhHaI1p0LYJiJNqlIo\nsSeDE3HtFCm6O+/HazPs8CddRD2FOTzbO5woLNWmSXafpjd45hYXvvczE7M7\nBgQR+RJfOyOijo7/yGEpJyEKu6DCqn6wZrznYMBFEEtaCX+N23vNiECwp0AZ\nQ78boip5QpH7ZTOodcEsHGO07av3ZZeKuMx25nj893eIxsI+MXlM7vCnRg6x\ntiEDAuF6rPsUvCQzXB5OQnAun8KatV+625TOM3SdJZep4HZI6c+ip0XI25hK\naoGr8hPv3725G9tukKTZRWUERWL7stoZcjphI1ZUPH2P7/wchDonUA5/9ekQ\nZ4md\r\n=pak3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDZdtihkrPgoXMbRf6M7jHRr98npbtJU8D/pWDnHMKRcAiEAhZeIJIS63ELaOUGUmbQWk/O64RsQeb1Kh1q8YQqXYTk="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"michal.szczepaniak01@sap.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-rc.0_1588071860051_0.3770575488167969"},"_hasShrinkwrap":false},"1.5.4":{"name":"@spartacus/schematics","version":"1.5.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.4","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-/FMwDIwHL6GUY6uNX0kucBVhMuc8QqGyDyDW/obc/eUmJ1liRkIyu+0maDTmedpR7dhtv2CpxcYfoRbbq9t6Fg==","shasum":"dca4100e40a1dbe7e148f9c8401d15425188b4ee","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.4.tgz","fileCount":70,"unpackedSize":211457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJess5uCRA9TVsSAnZWagAARuUP/2geBK/C3NqIv02/Zepf\n3KgJobaM7NAaKRn6EeWoWJucWCDEuS4NajjYzOdgDyS6QNyCwIl9nQ01G7t3\nVOkem6mJECL3bwNOwuhHXDU5XL7KcT0PM7yboqTmO2BfWO0Fgm8ut4GTmeOd\nqttUm3bBOA7e9QwwoHp3rOJzbwHgO1vmjl10cybnfUi6Gmv5jyg4r9y6HDxT\nwo7TlUnQRr0maQeeqNNmhtRY07ILfv8yQwf552CmzVJOLNIJeO+jitz3J98p\n3dLDVYrmrRMYDxPZzCNFXVbUTYb0zYVGNkXuXJTNW6k38rdeU3WmGGm8moKY\nRie6rmBjL+c/Cx1D6nWa+k2BiqZJ0SlGZtTjBWzXmqyj49xEm4oyScQB74UL\nTW6cHBQMVgsJsaaR713NlphEd2tTxFPRF+3YWcXc94PTe7GoNksVUOri4Zyf\nzd6AgKCxunFyWRIZhNImPIb+1LGHc2LhDGf4D2Itu2muWyNBMja3kXAybxKM\ndSDVa+HNZLUNlE7VQZEYvmHrs5QN+ypXBKXqx9FxxFX14RZ7jVH9DOHnJHk7\nBcxyVb7UShoy0rvHbWu9mtitbtJkRu8TReYcZInNScAs15/8VWjJm6oDSLKL\niXaOkz3BLTFFyTBiacJlp0+aEen4XKdarorIqtqsY5bpRwLnYjTZtudcjlK4\nvQo6\r\n=ZBxp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICQeaOO7NdShNP2+9pUNo64aDWBcnBlFyFYxShLeRxmCAiEAvVx30nxvOB6B5E1CjvF+CBjO7BMiQTr80D7EdkW+OYY="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"michal.szczepaniak01@sap.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.4_1588776557638_0.19911659523166136"},"_hasShrinkwrap":false},"2.0.0-rc.1":{"name":"@spartacus/schematics","version":"2.0.0-rc.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `occPrefix`: The OCC API prefix. E.g.: /occ/v2/\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _2.0_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: true)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how the `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n\n## Developing update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Testing update schematic\n\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\nIn the project in which you are developing the update schematic:\n\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\n\nNow create a new angular project:\n\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n### Iterative development\n\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\n\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\n- in the test project:\n  - revert the `package.json` and `yarn.lock` changes\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics --force` command\n\n### How to write update schematics\n\n#### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n#### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n#### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n#### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n#### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n### Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-rc.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-qwGJupuzyGtnDr5z6/eAoK1VGfjaw4grSTVW985Emp4BoJd30RaJ1wnDJ3gIWFNQzx3Wkbyd5No1FOf3EOws+Q==","shasum":"ca5b5b9e6efd5d30cbd6209000a5a9b079a25a68","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-rc.1.tgz","fileCount":396,"unpackedSize":750554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeswLhCRA9TVsSAnZWagAALbEP/1UkadypgrMIPn/1HMaA\n1sI8XZ4VDraiH1moczlxfebQgxGqqcMlFu9O2uOuLQ0/cQTjeXt3+TeX3ZM/\nf0fdqk3f9FNwTMAuDmIIkP66IZ2SBNhFuo1Girdx9Ekw5TS32NFS4exVOMI3\nQ5unCjxyGSL5OKwH4v9HDauks9hLxtHMx84PWtFPcrPKnnUfLdCK8yzC7cxt\nwl49tiShvIZxyqMbWFKM4sk6cH5BxYCFw6FC6tKaDd5tzXtBge7Y8fwonx9J\nNJDcrYvBybbiDXU8gE4bSQhh3YBzxha2ULjMzmT+FHoQN7Uq+TxaEVDPpdAV\n4OH1PFnng5CUWh7ndhtiU3lgOkUZezBKihmMnOvqe/H5RB5oBAlmfr1Lx2eF\n3m33Eyw3t5bHNxulxFf+EnDq0/iawcuWgYh0Mjv3U+ic10KpgaCkaokUu/UB\npxZtaUR8MShkW4i2pX0Skjmkdn+7TN8xT08mXvFT62XfFKiF5Gi2PmzMYxpD\nLsVW27ng9oWYuBibTGeleHyJdreNHz1U21INH5GYAdSja+izClPiLlfX4ypn\n3S3dHtk/DqrPIfvSq2MQo2dVpvUnjA81qgarSnvUlOZblYkbytXwHquxDRSW\nLA9h0CXhn4H4+o0Timf3DvO0nhQb6/5KSIl/FkP+lFrdTNOADLQY1iLc9c7i\nPBkJ\r\n=wQ62\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCljxRdTb34OJzIDJ2jeR/X2zcoNP2OBTuPhqUPby2Q4gIgZriVkxdwjuza4qPCzzW7pzI/cRS7fstQ9g2waBjLE0I="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"michal.szczepaniak01@sap.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-rc.1_1588789984865_0.23097648189434228"},"_hasShrinkwrap":false},"1.5.5":{"name":"@spartacus/schematics","version":"1.5.5","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.5","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-K5keQz2nXYBq7eZDipAH3rvuic9mvYezKEhtO6KJN9j0tHQsMrB/iZVctfF3STiqnaOnwbAnakp5naJVRF27Ag==","shasum":"4b2c37b6e5b4bec454d01e311e12d104a3c6d2fb","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.5.tgz","fileCount":73,"unpackedSize":218032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeu/KqCRA9TVsSAnZWagAAiKAP/jHUg5LRF8CCZ3tULHfG\nNB9xGUGfjPEx2ks5Fu9zRpl+CPkT60LuSXfn83lknb7V0JwAWxSbvrplSeUs\n91JuRhSFFbbZVh3Sq86SCfG+rxxRm+mcq4wemX/1h3t7GAidtGcR3Lyjj+EX\noqLlVp/eu7FUuivWNbuT5GZL3KJrkYfuK1G0IulEw6ipjvbD9Ko0zF3FfcPE\nUyOFQqkBvZ84/j5AuDKMdpMck2pUuBqN4ouVOUxrVJhCgnviVhrugtb3TmMj\npiQ5vtA3FMpOluaWc2QiAoCT+M73tNlU5CntvFqYZoJYjMEV6Y0XxOLwDzzN\nieMI0AKn/IRqsFa3phMzTRp1oyvXlxwCj5VukcoWkY/yYWPMi3jp2Bh2YYH4\nJUtLA+5HOAaHlkHJIYK5/Xpsf1ZOH1ZAbt7ThmjoOrUEyE0C+MF/1b2/r8tW\n+nWeQ12z8DCQN2juMeRv8VP+b7EWlpOvuXDrSo7DMKX48tm48uWOnZKIaP9l\nL+2NBeCUZTr34p0yu3i/QLz4VUIgAOinX4kgoB0gITfs4Cg0PRLXipTQgf/6\n4KhU7vR3m2olcmtQCPiEYS2LDj50eD9gLeN0XC8u2OCfBX8egdsJpVcnAygW\nrN4Somhw8vjwfqdtXj3PvIj24aWItB1+oEof2tNxkRWOpufgrLAs34Sj3RFy\nqZBy\r\n=Pcqt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD76XDXSev4h40Xw2Mi8A6OLt1Q9D/Ea5UcsqRwGAfbFwIgf/lG/a9Q4TwFN31Dc63w6Tv7z8EoVIfgF9fRBpm1VbU="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.5_1589375658366_0.9331487334925852"},"_hasShrinkwrap":false},"2.0.0-rc.2":{"name":"@spartacus/schematics","version":"2.0.0-rc.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0","@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `occPrefix`: The OCC API prefix. E.g.: /occ/v2/\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _2.0_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: true)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how the `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n\n## Developing update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Testing update schematic\n\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\nIn the project in which you are developing the update schematic:\n\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\n\nNow create a new angular project:\n\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n### Iterative development\n\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\n\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\n- in the test project:\n  - revert the `package.json` and `yarn.lock` changes\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics --force` command\n\n### How to write update schematics\n\n#### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n#### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n#### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n#### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n#### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n### Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-rc.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-NN18I5vNFysrY7WMFt9AtHUP4K1HOBC4Mpg0Y/hyvlKxJOHxT5cVqA970aYmeDXcD/Z0ggoqbm5Zt/SDnDWYBQ==","shasum":"eb07a16aa037744abc94abcb266c75f54228f87b","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-rc.2.tgz","fileCount":420,"unpackedSize":770393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevCsrCRA9TVsSAnZWagAAkH4P/RCrNFDMyhc8XzX5QmlF\n/9OsI2mA9yJ9GfYC17FKwUm3dBP9eE1d/Yk7Y/zu8fW9vr3QW2YcNoiHAGg1\nqPmpV6DkH3MML36pSrvxi9kjpSG3nY5+xQmhJYv/SBGxYM9ilTI/aB9Js+gb\nxWMOrKc+J/CUvkgd0J02WChWZsP6stFAsGitL9lEy2rH0hhDeL2rTmM+Xkt0\n8Fyav7h9PzCb2okJDLJUCyvr+GyZYqU1XUj8+BfwnKfPzqDc200kzlceBvzb\nHlkbLjsvo8TYBuJsywn7XaZApoM89SMq61Bt21NIRZETOp0jikwKchhAH0jK\nHNaqgh7+j3YkKhBtpKc/v7F0uXEypKuglsekSvhr6CPSyg3ID29E29ZkOaeN\ni+L+JUyboCfLUr+/D+pai9mQG496h+FLkoGKE9ubwcI4Hfh1zN2ZzErYmzOy\n3XIGo59nT3yRlVaL21RXBJ5QnM9yyWjQ8cY92P94Bu1XjAslo/m9s8U5S6IS\nIHVPhmTo1hQt1caSflGPuD0oA0FkXfHxJpKgN3UFYExv2IQStAOjivYL2Cot\nNBAEZBb9bo4AwR5PUi4Goh1RvUUV2KN5+K4Y24yXvPFkuVYI3rxxEQHb5Cam\nKQZMxF8uAQPvoS8NAB/1HHP6059p80TUPingNCQreUe6SSqcqXNjnK1ps/x3\n1Ooi\r\n=03d3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3kMcLgiKuPCPxBA9p0wC4EWGLjXmUVbg2Z03WAGwTqAiEAno9/c1I1nQP3gX4QaXsyuX1VrBUihEHDGCzbbLcCv2k="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-rc.2_1589390123117_0.14062141669196637"},"_hasShrinkwrap":false},"1.5.6":{"name":"@spartacus/schematics","version":"1.5.6","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.6","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-qTw4Xk5H+t1FiHbS/KmvZFZAiBev53J8YLE4yfWImYvpPf4qcZg0D93Y7dh3yty4Q9Qfh8Qgqjq//wi5/MHu/A==","shasum":"4c577af4f56831f2c488378831ce4831aa0d30b4","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.6.tgz","fileCount":322,"unpackedSize":533279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexlTICRA9TVsSAnZWagAAOBgP/RLiBsCW+cnt41D51wX2\nzKiqpOcguzmqrzvld2J+mqDSQKNW0rvBSg951VOaR2WUYaiyLIX+oGe39k1u\nVURToBNViidbmswhbO8ZEhVfD8l51m8E5r2dlVR6VrFcXFxiY6wEj7SyQhX1\nBPJvsoYEkuIDlGv4e7Ub5KvAF4Zz/TlHL9RSNZpLA+jI5n+xTaat8UDpA9aw\n5xRu/bQe7M2LPys53shZvZYaiDnWAliO3dOfo9Mn+oArxiXkgqM2bS/s6Lvc\nkGMWbkUGHMeKUU/hGjyv4HUc7Rp+1uFAtE3mc59YbA3o3OXkKLfec0SG7pz0\neMLzXBVfJJrJrExP4x2YN7O17hpL3E5Q5kUi8unq4IHwzqamcHorwtI+f79U\n8CWkVG3XOs0nUW1ZLhucStlgUZXnW436dukCwEUjrakHGHq5w9Vj2OvSIZlQ\nSW13ZiDqekzBru0Q6zKtdO5XDNJwUTFuE/HRALo2ahtwFicRIMCiW+3d2yAz\nrV8PTP6F+7jOopwGGqEmTwfJbDJ2bTHVuM8k9mAa89l34xpyy6XMFo+HS8aI\ncxjAf1HBf9rPdpRP8bV4H+38bzrHolU9HgCAcZbO5KC3pWSluMvTprs5oS79\n3sAiQxipMnj8sLtyuGFCOpOMhpunKngMKUnmtx6j+lYvGuxFPhnPVgs1UinP\nzTg+\r\n=5H8b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB56MEMXaCXnaEtq5a2f7wnWR3ixp8XlmbKebQtTemDBAiEAxh4Y0zbEPLv+6+jV7grdg8JM9Sm2ADUyurrwUu267y4="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.6_1590056135904_0.24538929864493442"},"_hasShrinkwrap":false},"2.0.0-rc.3":{"name":"@spartacus/schematics","version":"2.0.0-rc.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"readme":"# Getting Started\n\nSpartacus schematics allows you to install Spartacus libraries in your project\n\n## Adding Spartacus libraries to your Angular project\n\nRun the following command from your project root:\n\n`ng add @spartacus/schematics`\n\n### Available options\n\n- `baseUrl`: Base url of your CX OCC backend\n- `baseSite`: Name of your base site\n- `occPrefix`: The OCC API prefix. E.g.: /occ/v2/\n- `useMetaTags`: Whether or not to configure baseUrl and mediaUrl in the meta tags from `index.html`\n- `featureLevel`: Application feature level. (default: _2.0_)\n- `overwriteAppComponent`: Overwrite content of app.component.html file. (default: true)\n- `pwa`: Include PWA features while constructing application.\n- `ssr`: Include Server-side Rendering configuration.\n\n### Other commands\n\nBy defaut `ng add @spartacus/schematics` will add only basic spartacus configuration. You are able extend application with features like *PWA* or *SSR* with commands listed below:\n\n- `ng g @spartacus/schematics:add-pwa` - adds Spartacus-specific PWA module\n- `ng g @spartacus/schematics:add-ssr` - adds server-side rendering configuration\n- `ng g @spartacus/schematics:add-cms-component` - generates a cms component, and adds the CMS component mapping to the specified module (or generates a new module). For more see [CMS component schematic](#CMS-component-schematic)\n\n## Steps performed by Spartacus schematics\n\n1. Add required dependencies\n2. Import Spartacus modules in app.module and setup default configuration\n3. Import Spartacus styles to main.scss\n4. Add `cx-storefront` component to your app.component\n5. (Optionally) update index.html with Spartacus URL endpoints in meta tags\n6. If `--pwa` flag included:\n    - Add PWA/ServiceWorker support for your project\n7. If `--ssr` flag included:\n    - Add ssr dependencies\n    - Provide additional files required for SSR\n\n## CMS component schematic\n\n### Available options for CMS component schematic\n\nThe following options are available:\n\n- `--declareCmsModule` - specifies to which module to add the newly generated CMS component. If omitted, a new module is generated.\n- `--cmsComponentData`, alias `--cms` - inject the _CmsComponentData_ in the new component. By default it is _true_\n- `--cmsComponentDataModel`, alias `--cms-model` - Specify the model class for the _CmsComponentData_, e.g. _MyModel_. This argument is required if _--cmsComponentData_ is _true_.\n- `--cmsComponentDataModelPath`, `--cms-model-path` - Specify the import path for the _CmsComponentData_. Default is _@spartacus/core_.\n\nBesides the custom options, the `add-cms-component` supports almost all options that are available for the Angular's component and module schematics. The full list can be seen [here](https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/schematics/src/add-cms-component/schema.json).\n\nThe following Angular's options are _not_ supported:\n\n- deprecated options.\n- _--module_ option for component - if you want to specify an existing module for the component, use _--declareCmsModule_. The _module_ option is only applied to the Angular's _module_ schematic.\n- _--skipImport_ option.\n\n### Examples\n\nHere are some examples how the `add-cms-component` schematic can be used:\n\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel` - generates _my-awesome-cms.component.ts_ component and _my-awesome-cms.module.ts_ module\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ and adds it to the specified _my-cms-path/my-cms.module.ts._'s CMS mapping.\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app` - generates _my-awesome-cms.component.ts_ component, _my-awesome-cms.module.ts_ module and imports it to the specified _app.module.ts_\n- `ng g @spartacus/schematics:add-cms-component myAwesomeCms --cms-model=MyModel --module=app --declareCmsModule=my-cms-path/my-cms` - generates _my-awesome-cms.component.ts_ component and adds it to the specified _my-cms-path/my-cms.module.ts_ module. It also imports _my-cms.module.ts_ to the specified _app.module.ts_\n\n## Building and using Spartacus Schematics from source\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\n\n### Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\n\n### Building and testing schematics\n\n1. To build schematics use `yarn build`\n2. To run tests use `yarn test`\n\n### Running schematics on separate / new project\n\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\n3. Install and run schematics in your app using either:\n\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\n\n## Developing update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Testing update schematic\n\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\nIn the project in which you are developing the update schematic:\n\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\n\nNow create a new angular project:\n\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n### Iterative development\n\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\n\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\n- in the test project:\n  - revert the `package.json` and `yarn.lock` changes\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics --force` command\n\n### How to write update schematics\n\n#### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n#### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n#### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n#### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n#### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n### Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-rc.3","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-DHKZV+hT1sh2u4E6HD9f56rnx1i5DgiitwqJgBrxLRR8NplC648uXoHmB3Y+X7DKfOSE8YTSbak+BqL3sO4alw==","shasum":"e0076522b4a8d583869e8854813e9c87510ca02d","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-rc.3.tgz","fileCount":438,"unpackedSize":797303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexpfoCRA9TVsSAnZWagAAlEQP/3SoEF38/MoSxBHXL3Fp\nUmV+jXCGFqMngU0KixS38MJJMIHLLfnKoudQ0WNl2ZSA12vnaLVsTXqDI7El\nyD6vJj65IjL9i8UrCByZB2kG8UMqADNt44b39wTWYgjv7sLIE8RUf1/JbxTd\nSl6CAhqxbwT96ugn5yk6dloiWtzeqxss0Bwqn5joVruL76jnmvKWlTl2G2JO\ndR04MEo56tcL1hvYkOZr2LwPTb1GGzWW8B9u1Y5qa9HPim0O1MWmLr1vABHs\nxwCNplb1RbF/F16aVukBdNDOBQd6/NOMXHXmZkb3PigaqSzT08+t9QRboW6Y\nNg8ZXJ9JSs6I5e14w12BRgQZluUBAWP3ZnFLB3U2NHqRmMcC+6aftJLLg9f6\ntzC6IHZlyRKBZBrCLE/SBod5vb+BuUxnTBWE3c94CcparDk3kPD5jdzqLoqW\n9vyWxRFYmUtzJJOU0ZY7MOK8Lds4CpE1MrPqFJzYdKla5X8q5fL+qvr5StEG\njT3FX50a6IflrLKi0ZYzbpXzbt0unOvDmLMSAvSawAuC6UTKfM2Eaes/Vscr\nmWdRAG+uZXAxOkKysuGGoNFXw6dC1DXJSxpCc4j4JBu50y2LsJS6L8BijfJN\nnKzsX42rdLeRVApOWvpmJOgLGhuwX2kfwfNkxy40JCunUxMvKYzssgcgqnsE\n0R1x\r\n=4alR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC74uogZRjJBaX/7uVNVUtUI3v3br2IzdS803eWyfJ3dAiAp+RDskQEqUvFaq54SLr3GH80gMAvv7sj3MWJrYS/7qA=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-rc.3_1590073319822_0.9458442371558571"},"_hasShrinkwrap":false},"2.0.0-rc.4":{"name":"@spartacus/schematics","version":"2.0.0-rc.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"readme":"# Getting Started\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\r\n\r\n## Building and using Spartacus Schematics from source\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\r\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\r\n\r\n### Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`\r\n\r\n### Building and testing schematics\r\n\r\n1. To build schematics use `yarn build`\r\n2. To run tests use `yarn test`\r\n\r\n### Running schematics on separate / new project\r\n\r\n1. Run `npm pack` in schematics directory. It will generate the `spartacus-schematics-x.x.x.tgz` file.\r\n2. Generate a new Angular app (using `ng new` command) or choose an existing one\r\n3. Install and run schematics in your app using either:\r\n\r\n- `ng add path-to-file/spartacus-schematics-x.x.x.tgz` (it will execute default schematics)\r\n- `yarn add path-to-file/spartacus-schematics-x.x.x.tgz` and `ng g @spartacus/schematics:add-spartacus`\r\n\r\n## Developing update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migrations for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n\r\nThe best way to test an unpublished update schematic is to publish it to a local npm registry.\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\nIn the project in which you are developing the update schematic:\r\n\r\n- make sure that the major version number in `package.json` is _higher_ than it was. E.g. if developing an update schematic that's going to\r\nupdate Spartacus from v2 to v3, then make sure that the version in `package.json` is set to `3.0.0`.\r\n- also, make sure to bump the peer dependency version - e.g. in _storefrontlib_'s `package.json` bump the peer dependency for _core_.\r\n- To publish the changes, navigate to the `projects/schematics` folder and run the following: `yarn build && npm publish --registry http://localhost:4873`\r\n\r\nNow create a new angular project:\r\n\r\n- `ng new spartacus-update-schematic-test` and `cd spartacus-update-schematic-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@1.5 --baseUrl https://storefront.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com --baseSite electronics-spa`. Note that the version `1.5` is specified in `ng add @spartacus/schematics@1.5`.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scope. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n- run the following update command `ng update @spartacus/schematics`. If there's an error about the unresolved peer dependencies, you can append `--force` flag just to quickly test something out, but this error should _not_ appear when executing the update schematics without the flag. You should see your update commands executed now.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and displays an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - \r\n> open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n### Iterative development\r\n\r\nWhen doing iterative development of the update schematic, it's for the best to do the following before testing the changes:\r\n\r\n- for the schematics library: unpublish the previous version and publish the new schematic code - `cd projects/schematics` and `yarn build && npm unpublish @spartacus/schematic --registry http://localhost:4873 --force && npm publish --registry http://localhost:4873`\r\n- alternatively, you can run `./migrations-test.sh` (located in `scripts/migrations-test.sh`) script which will build all the relevant libs, unpublish the old versions and publish the new versions to the local npm registry. If you want to skip building of all the libs and just build and publish the `schematics` changes, you can run the script with `skip` argument: `migrations-test.sh skip`.\r\n- in the test project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - make sure that the version of the `@spartacus/schematics` package is lower than the currently developed one. E.g. if you are developing an update schematic for v3, make sure that the version of `@spartacus/schematics` is set to i.e. `\"^2.0.0\"`. If any change is made, make sure to commit the changes.\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics --force` command\r\n\r\n### How to write update schematics\r\n\r\n#### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n#### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n#### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n#### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n#### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n\r\n### Releasing update schematics\r\n\r\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\r\n\r\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\r\n\r\n- `migration-v2-validate-01`\r\n- `migration-v2-methods-and-properties-deprecations-02`\r\n- `migration-v2-constructor-deprecations-03`\r\n- `migration-v2-removed-public-api-deprecation-04`\r\n- `migration-v2-component-deprecations-05`\r\n- `migration-v2-css-06`\r\n- `migration-v2-config-deprecations-09`\r\n\r\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\r\n\r\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.0.0-rc.4","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-+wK8tMGYjI500CnO9/uSDSftkgUDarwYslViIpmnaJ/5imvcWnXJg1j079x9N0OUsVzhlvppN0wivBPyGNeCcQ==","shasum":"ce1a7970097b4f21edd2a0529257c586c50590d5","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0-rc.4.tgz","fileCount":441,"unpackedSize":799979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez4K4CRA9TVsSAnZWagAABbkP/RSXIUPvOmNA8NgyJgPE\nalLFdLulSfG9EHpxcTr2YixJvSImW2bZkts72KAz/Vkxb7N6ilwdcQO7KxV7\nuC4YjneJSjfB9RB/wgpE55yXtKkx/FGkuPE3b0DmhgAk0je0gzkbExe763Uq\napa62SUm5825C1HHi/GBQFb6LnV545S4zxfnQdtGzhRGm48dME/Shr1siGv+\nEN2qYkL6xa4Y6ZzBWstxJWqeQluHPqbECENFMMr9ZVkbO++pJcrqFfGnlmVj\nkGyhaaBYFIgVybxydPgVx385zLBqyDRuqpS8jbZovYPpnU0PGh4g3LaZ7BOZ\nFxMarXDPFHuw80NVGhCVaCtZCoE/zFufE/ZcTpO8uI+5C272PdeHE4CCxiNA\nFYtw9JbX4PI31cbiyrTePAgSeONqUd2LdCw8wzAoTNycNGdUPa5AVJhle+NC\nreHT3IPDfIF3DliJP7HxJq6zGhdfLCDLgB+NibPe9XQ+DBmnWsNEUNNtMf+8\nscp5JZKPGkPTTCiVtfozPitwS6QKtHQU5GwF2RvG/uCZ2QGgfWOgoxqbK/iN\n5+ysP5sQztzDDtFuh6tl3xaZRk2QH8cpz4zyJ+2elDPFLaSnmOUDzsSU6CxD\n4xpQYkJLd4fsyIVW56QlOUeYLcB+5aBirx/HF2H7keMCo8xqbd4Jwo1TH4Vo\nAk8Z\r\n=XgBZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBZ1wb7uslnlqEyIr0MPKvcTv14TRjqXbuct9TNHP/3PAiEAiMJ1W4OYfb7jTSviNoSNd/7duwWcbIshRUR2WxZevBY="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0-rc.4_1590657720280_0.4802119214152001"},"_hasShrinkwrap":false},"2.0.0":{"name":"@spartacus/schematics","version":"2.0.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-otOQxLSI/465jRD6axDlAUJnJe+ZAG2x+eE0gtMnV33REfIiY7zWmA+btZ+FlPicxkPaF0JC8TITqY/hvTUNCA==","shasum":"e310632c33e33f67035440877a2c5eb6a26b28fa","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.0.tgz","fileCount":447,"unpackedSize":811736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe15R/CRA9TVsSAnZWagAAKBQP/RqWplOzAGwbNp1l+5by\njLAIsHrtxxGaDYVXvMnk32T04b7Mkdn4bphUdTsb9U9lO6H1ToDulDBmhYQj\ntV9YZtr6RycQcxwHRYt1pRpBGUszrju+3t4+nDY/B9N6ccLZCAfnmEYPwy62\nRKOIfd8Fte+WibUYosev17eaGwFxNRrGiOqT3EJhPm/bZf9VBjo01uIeyfRW\ngmye8EVEuutDzEeOtBb6m5jcoKcnwpWX163ikO85jYS6U/XHo2aEJ7QWxlBL\n5su2XXlYq6Agl4o+l9xPA1TupLXQomY7QNwXYYenr4efgBHeLCsTgKG8q+aA\nEDsT49hhbXpkOrg/AHeyBC0S3FUP0t59ku5g2rjn56zawIEdZV9yLHC3Fwyk\nfT6vhKbf+tX5Ruvr17pj8k17WBs7ZLm0J0e3is4o9XHxToWIptvNbgEFmBsP\nkzTzU/69KFKFVraeU/J6466YL4//kkrpx/1qMBTa7mWSA+FqeD9w5Nqnlr7p\n5GRfiQy4BA5phOl4GOMkIMUiCeV/DoPjOLoz/YZlbWiay1uNgCNbYhMsVWUu\n5ebPQ15UpUzwAMY21OOYtGPhUxm9LUMc6oMAGweJvC1evs94nJ3Z278sc2dF\nmuvmtxS8rOmhs4+NIqLquqMc5OzEP4Pw0EDAEHQyA7KiUbtHr5EEv0+75XD7\nGyd7\r\n=Jccv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCpnPAnOjOnHfTY/2LS0WFfD6h42CrJF9uObDtEwj1yJwIhAM3DKwPp4G7guBUukMb0sjV1xC1L24qX2IQe8v9gCQxb"}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.0_1591186558642_0.7838467337648556"},"_hasShrinkwrap":false},"1.4.3":{"name":"@spartacus/schematics","version":"1.4.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.4.3","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-cEsX8ALDYOoQSig/hSxPWFDLN4mphy1K/FMpN0QK4YNa4xoIFM7K710D8JXI1hrvnT/SFW07q31l1KrRhe5nYw==","shasum":"7c338191ef4ab5ab1708a1b8dbbca7147cad92fb","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.4.3.tgz","fileCount":70,"unpackedSize":203504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe3NxyCRA9TVsSAnZWagAAMU8P/0rdQRzV6bEZf3JmpZpl\nU7Fbxpd1HqN6cI699CFBFcuh9htezu24Vo8gpn3hkfZXCqZeHifDbQS7xuVZ\nUWnRDg4OH5JAWJpavNCPZZXlrnoXxIpSFCHljqXppBFrfhg5LTmfBTRwjou3\nsHfzRzYvxPnv7jCRzb0sCpKX1c2RWxhTE/MXjbQarFYWl/LnKPT4Bk/Ovnpe\n8vfNtRr73huLWuf7K8l0J/kmFK+OFSKdQ6SKI0GBHcvTLuI37FDcWWRH4xqA\nxXIRCeb+Gn+h8W3mNYlFDy42dIrRrErsGYeBla4H+7AHzPiIdgQOwlQp/9Ut\nPrJWbiDOnqOFcvkyASnpkktUiA9NTtDvkLY4d8zqX/UCZtEBu5soyROw8ftU\nWE7KRsqFSjBumsT9J1BFkV+Wj/GKkWT1YK+B31qMCt1iWvNwyksAvljorv5j\nPVrafu5rYz5gtgn32a0Qn1rVd+gA2NzsgKzvsddN8YP5TKga2QnmckEJvA4w\nRaKdONRY/EMS97G+URijX7i0wW8rEPrLspejHgR3IgsYUn/z3ADqPm60zctt\nmqwhHGnsToCTtB4Z6lm18OKx9EvPC62NBOwTDeqxt701AcWCYd/NdwBX0/uk\nhIAb47n51OzDOcgg8LrArdGLJC8BrWFyx3zgCAgZMWVYUJIcKDPxN0jeycRO\nXbSf\r\n=ezyW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtbOUw4jbSPBf2xL2kG2J/niLRrSjt31qjCtHbx+k2tgIgfQfXMcWmWKu5atSVC1wFgO+Tg6J/tXh96FKZ0P7Nl2k="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.4.3_1591532657742_0.6743501497225466"},"_hasShrinkwrap":false},"1.5.7":{"name":"@spartacus/schematics","version":"1.5.7","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.7","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-pXVOeBTa/eJL11PRT2fRIX7QMCwppX6jKiDTgb+7qFpRoqG8CprWahZUUZnwCVy+HV06tzwhjp7PdqZymZ6tMg==","shasum":"8fb6b3a5e84b525468a8ee8d81e9c6f5d594542d","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.7.tgz","fileCount":455,"unpackedSize":710997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4KojCRA9TVsSAnZWagAAuUYP/34Jhx2flAnv+dabGaqv\nSJofTE4pdaDkdgT8hCE0oQLYgXFD8z6QR62OUoXZo8Hdpzb7XDaJCX4KTcUN\nZearc+vx8WLloa5LOE1FuB8JxR86daKB1WbW5kGPGa33ZYGhju+CjQIm9oe9\n+emC7cBwd+KUvMDN6tIKy1lVZd8OQrN7CDEyCUsunEpsMZl6SZA1mwW+FqSZ\n1raVWhXb1nNlcruohgo1ulBllj1n9T8XBIT3NMcKtjdYJEqxdDSWL8nYyC4T\ngsWOih80J7OBudEs906sJR1L+jYFpZUr0o9sipVXq2nVlXo91L45Hs7RTS20\nF5/BmjPeBkvSX0uvSQ5U3ooOjWNYL9daQzzab35/C1MapJQRlWMVjLM78AdE\nHrCtipBU5WxV7LOlflbLhUftJdhCggUX6ck6zY9sd38jdfB7R3ipdXF9rDhY\nPP096E8a/Cfx158JHUEWPPSED7uigXzhDwGHKqTRfWVAKExkezWGS584NicD\nK24n3B+wOENHNL/u0I+whn0v6xVDDGWiAyYiFdXRZqZXg2zKcSuFCGUWVduH\nnY/IUxblq7Ucn2dbxGU6rW9rSMj8aOr9b720aXhW0/wSD1Ruri8df8SOYzAj\nSaPQCg8FFn0diMbPjwOakFbLMMWXNn5+11UY7lNGgO3d6yGx+nny9TWSapu+\nkWdr\r\n=OsCJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGmecs7grZQ5zDk0tHHoMxw1Id+CPAYe5/XzaQO0XuxxAiEAn0E6P38kmUy+Ht8YKaFoR+cVKhqnTS4XnPLI4BWcNI4="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.7_1591781922653_0.7465891231943316"},"_hasShrinkwrap":false},"2.0.1":{"name":"@spartacus/schematics","version":"2.0.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.1","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-5Pfx1vEc7MwSEc84A66T6dUVLREveQeYKCLdBdDFKVE5/yh2CcrogRVwZIEcAPSu11ZS0rX654VaGTiLy0F8lw==","shasum":"f0bf952ed1bebb1596905641c86d071593ec2ca9","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.1.tgz","fileCount":465,"unpackedSize":877885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4QemCRA9TVsSAnZWagAAoiUQAJyGRolREzx/5LKKFiCr\nhBQWE5wy4YaD/hCsyiI9MlcuUN9s2u2dIoy4r2SEMaMAYSYOlRtJwFnw/pO1\njU2TI2NW1rfvDepLhPSPg+bwyTM+dDpnOsS8XgfFA7MuKgLUHa5PbxcfXx4I\nQemUHKQz94m/w13aHG5EX1XPC7c2WROW+lcYWzr7SMAo4APqnrQkuwaxGH7P\n6EBFobt/r+6a+GbUi3nggRiNPt/LG0ou5mzvzPYiUm+ECKo/YuV5w1C5WENq\n9elNn0lHguwkEsK5qc+woazRfpO9DGqOmvvFYTaOiJj0R5iFDI8/aO4kU3iH\n/OxJGgwyJ4oeJvukeD4bLYU10xXZlHZKlpU/Kw+k37x3UxwH4rt3uQkWPRlc\nEqlIUumSKehwRmBZWwYwxzkY72w6y05eNzIQ0NePGyU7v6hzYB+aVRd9VXny\nqtYgyBh5ACYA3btXsAHqpwDf5iOZ4vjKKYtwZUBoWgVDnEe6tZ0XvkRPhDa9\nAty7TnL3BNz5OzDID4WuCby/8G3rDGi2h8jojPjN0NBqMVE5v4F1ZBZAeM0X\nKcbIHXvq3DKdoswogVvJj04eYvxlc9/742ZMXcR+9Toi6DrjoQMjeU/Powhk\nOsnP07KD15p5pUxVMRCMZ7lMNBsIO3J5gPTSSbg5LsXYhZ1EP43zciLlV6hi\nCU8z\r\n=m5/i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDi8dvMppeNNCChWND2JGO8hG1Q8eauTVeJ8Px23yTUBAiBmzEUQuENhRpqRJT1A6QnlOAeEq2hXeN+RfN+EoBHymg=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.1_1591805861835_0.9893125604000399"},"_hasShrinkwrap":false},"2.0.2":{"name":"@spartacus/schematics","version":"2.0.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"dist":{"integrity":"sha512-4O2/RFURoaAGzy6ar7uDinXqZLOapioz42GoWCG08tc7f+JFzpRqG1Cuzn5C3x7dnKgnaT9mPCmoXsxVyNLtMw==","shasum":"e748286a74e05bef3e02aa7e9b6d9209c61df6c5","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.2.tgz","fileCount":412,"unpackedSize":543516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe85QWCRA9TVsSAnZWagAAD8cP/0N2TlZW3smXfmDZjmZh\n3mK9h65gcTa7ziXoe/zDpVq4P/+4unVVaPi94xfEPhoi0cn0fsY217dfwQES\nrLPJCd1+l4ZA1kgH9oocPm5XkPb//yvyhfrJhS3q68oQe/gT6JNyZlzsi8a4\nVzZUDr6tKKNN9/5M3tVsJvgWKAClZLFW4bMRDwxPPzuAdRxa2/Gyof0vjzxY\nJYi5oDzjji2fKP/39x1Hwey8KlCwR4uU4cYEmoPiF3ZR3+2IdmnDKVI8+FKB\nK8VgpVyiw1/2ZnvvcUfAzZ+Y86SbFEDNmwzy6iSolVGR8Oz2svxbM9xK7Q8Z\nc/B6hkwRayMDiF6hcEFGif7rLgzywuUVNwCj0pp82yTB1CD4QKL3/F7dvG/i\nNQQcmqaQIs4MpOl2Jc5amwSOT7AW5xj1slpP1M9rYrfY/yrqpeDP4Db4OXSo\nk+8k853ySjgp1NwrPYIOuM+d+KmMFAIiBHUv+IOo39RQ2p7PC+JBx5PvWVmF\nAb1VeNAlolLwYqyXLc05aJSbMQzzOLhdw0RpnwgLJfavKF+5GE1wb/Z+7Fws\nMmy/0NnSpMPpCG/AoDtAmzRxKVIYACfLI9gG1aifY3tAACuUWVVYjqGRBc/5\n6maMaVfTny5ln0qlA4dpbPSX3sbxpGf5qj12U8E82dNQ0aNj6+Q8iwl1OxNH\nKmq1\r\n=kIKo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSM2hcXLzMGE8WZ200xLGYsR9LMn65/02LfSCEZJ6VcgIgTuoXESoOymLvj1+AuryA+wfkjR+HizoaHF3dl74TeL8="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.2_1593021462221_0.7431939234547154"},"_hasShrinkwrap":false},"2.0.3":{"name":"@spartacus/schematics","version":"2.0.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-D+m6kHR/9fiT5JLUOv+m1uOuuQnGsZnecixCF9N6vkgEOG9YrbZC2vCASLWLoz87OKJppjBerk+2PBcdGDgBjg==","shasum":"ee3a01bf9f5d13063f0301b483a05db6b55c2d5b","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.3.tgz","fileCount":422,"unpackedSize":631718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/ertCRA9TVsSAnZWagAAjmAP/0JOqVHslFw6KhRB3S9d\nEfmLZEcHwysg3rGLUuby3BbB1++CskkZWbGWnzWO/PWKseDzt5D2PYMX7B3B\n/3v/yjmoxlnZdUuTa2+5+JUCYRLvIcEkep2e9bXz7GitHe1Rp1nYYih/D+Nw\n9mueTeKMIpva7gHprBpHVyaUHSIa5g+VJlxsjNRbxIQS1nTm1ADKCxWkucUM\ngl7RTdl8F1w3uNh/zg65M/l/J5HrqiHd5LejtmWzYF0RjD1k8u0kQLzdpnS7\nKmGQ8QJHRNP7SssukuEMswyo0aJIAf0V0NuCmEKI9pbyBqvZ7M0Bn2nEdnYe\np7nppWzRkzhTlUH9bY7WCE1QLLHy+6U7dyMS1rr28+uUHKAXwCACLM4qCUQS\n9/NdiksWTXBQnSz6/cNCmAiUwHd6QFrDlG+FtwsAHpZydDg0OE5dak+fID3y\n7TD6U1z29Et6UV8VIYTsXFwi5C5Zq7J1NWILjcNWdjkYjY+wT7YksAvW95er\n7vKAFa6ImmaDnhFfXkgaEUREQq9Pt97+4KgaAcq6VVuhVcpv4bxqcLpQKAYz\ntiYJN9MYVvGn2O0kik//HMfjZOYFbI2taTflSTqfXnZ15eHlEYwGUrCrTwtz\nDG5JrKztBX6JsTnPABkp91pI+dk3DoQMFfhAl7LXlh6tqvui+syzNwcqD4C/\neVRA\r\n=Xd/C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICAvqQVdPl3B4NLMO4QvJvypDFtgHFtxs59TOiK4rN79AiABuz+sUn7g348ZizKW2AqIowJgLaT74iZrvi+bGLrlUA=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.3_1593699052675_0.8197292196015924"},"_hasShrinkwrap":false},"1.5.8":{"name":"@spartacus/schematics","version":"1.5.8","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.8","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-lnTrYf7/uPHyDf3KHntVhODNvcliaox7GjTJE4a0EVvp6R6Oer6+nF02XpyxDq4EtBA6uFlfkmfPyiGJoR8jRQ==","shasum":"69d841232770cf5be25e1b5246f19b2d6e42b9de","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.8.tgz","fileCount":436,"unpackedSize":648417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCF3ECRA9TVsSAnZWagAArFsQAJzEVOWNlYsrARBDn5uh\ndT2D6b+qRStDVVSaobNwXLfU3patGmJPg80DusvYen+f4kbS0/OLJxaaDrDD\nz6eAfeI9kspOPKwWRJr5FG3Vpl3V881HVdjsWz7NDTHt0DDJRWCpap+EnnM4\ncWBE/HzTBFcfPTHTaQTDwBCQ553iY2vBmkLdvQA6XKg0DJAgaRk+wd41GTh5\nTTspBWGeddr4004KCl03s0gZLhKgl30CNFXfb9urU/ogjRlTefgd5ahF4AEH\ndPSqKDPguv3+w/xJufdBq+H0HjE/2n/D0k5NEBuL8m6jI5lP0WQWiaWAXC7A\nhss4ecfthybkhvjCIzXOCH2iEBbLBEst3kc7YEqx5PJcbT7Ggt6fCOKO0hyk\ndb2eN1mfHrELilsuqHR/63KgURzZ+0CBUwJv9pcflCD9pIQNmm/0wx9xS4UI\nUUjWK7EslF899LIS+kim37NkGJC8d1yklgfxJiynnd+hHCI01uVV4TcLEvxE\n+rYY6mNORBNuGJPMtefHe5t9bySIS8+RlCEf0BMucfPkqJRF2KHEa2KbTjVI\n333YaB1/Sd698r04oyXqc9o3RaCOZB7pfUXT5mkLR76IFXl+bj681ODREeLU\nVCTt4IO1n1CM93XYvm0zppjN3K1tUVWdTSepFzj2ZSETgKYfSSzC8pRLFMLG\n7Te5\r\n=a4oD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICBtiLvRb/yPkKceWir6Yt59PBpxckTXXdwoY0UDyOyBAiEAnp0e/mOYVczr4xEeSn7G/BE6/csTBK6y2lPmlGMnBzw="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.8_1594383811566_0.4469925182988024"},"_hasShrinkwrap":false},"2.0.4":{"name":"@spartacus/schematics","version":"2.0.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.4","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-WxEw/mx/uyvk/tySnb7mST+jdhPSGe46UMD/zqmpRd9Pye8tYF+K4Smrk9omLkCdR23SuUEMgC17KXse1RmaRA==","shasum":"a86b51b37442dc34bd42e18c05d3cd57da0674f8","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.4.tgz","fileCount":412,"unpackedSize":542856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDdjuCRA9TVsSAnZWagAAZDQP/ijkmORuu9CQQINH77Yd\nBghhlQgA3lLrm8TBw11FtKwULXuPr+LSSk5R63PkQq5jyYRQtT176MzdvgMD\n+1W8KRS1OpMm/j7KreAMrhVFgYEx+tU9QG1NsmzPZqY/yH245u+NZlZ7pKCP\nWUH+MKX9CsylDOjC8kRhbvHUfm9yWkKlbqG0bI4xyagKk13+0EQe8Ab8boQ0\nBGLKSvCS/gRScSYUHcGzYA0Eojy+TJJwbyDTi3VfagDKK32yIigY43umziNM\nyjJruM2ivYZhEvfAOrKNo9iknommGpgPdfrJSgpzGDr13nqlr9S+pN5bhwV0\nJ/XG3xaesDSWoyDjzlkBKAFuQ8F7oIr161oUAL4hAiIrTR7VFBXHLYM5oOfB\nKRM0f50slhWfAeHiypiTFnwNj1mIhLvGGkuQh7FK+hvvpnbinK6XHm4sYPDV\nLLLqxle2jWuWdoSxdeP2WSJh9eJZGDcgtsCP1WtakUC7K5eo+93hiO4IUCCt\nOhqew4AhTnt/QhN1tYHISw5UdQ+fS5IspjDwDePsINHIeWjSjKoY3Rs3Uckw\nKweSe5/VU15QOsds4iXsmmHVdJFS2IGFjwrfA4ZdZO01rMP4ElUe/bqbGR7U\najALs7zVW8uuHijsy6wuHwe3zXpO1RJq8+ZcyU/1HPVznS26biL2eL9rLRcE\ndS99\r\n=GCFk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFkfWM2/RV13xthRKiAwSipM3O6Fj/wTdoIwngx12uYdAiEAvtSSUB1vepzgimfSWIaGE6bt2GtR2pwfQwc8LpSWC5I="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.4_1594743022335_0.7158830902304487"},"_hasShrinkwrap":false},"2.0.5":{"name":"@spartacus/schematics","version":"2.0.5","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.5","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-3l/mqd2EryRGZ0kgXCaaA8YsT/KIdD7I7q9o5ahCUKxy7USQrx/0h3Ib/GRw/j5o/otHPYk76VOt0eQ14m+uSg==","shasum":"eab24c45cb7db644c18d408ea8f8658141c0a2ac","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.5.tgz","fileCount":426,"unpackedSize":569135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGZaJCRA9TVsSAnZWagAA4PAQAIppE6+qTdhKpbOPz0VX\nxuszm+Z9R0fHkfP9AuI4pQXsAW93eN5FlWOzBHx6EsTweDvIa3grvjs69xPI\n8ZpWioKcgK0eudkNOZYjSj8BdtYKzX1755xOA1CJFVq4tu73EStCSfewQmZK\nIxEUqEJFd+x1pBv/Cr4JFhmoG6x8u9sYBCUJQvIGk6uGK9X9KrT7cvjH9CRu\ncgdxaIY4swskRaZ4gDSyzhyWh9hnNHN8Sg9sbNbVhXGYljIV37vUUpWAs59V\nh7rU7CHvB25w15/lGOqq6pBeliPH6ilUqWwwmR8SB56WZaNzzhiYnV7EThJb\nbqQtnGr/Tfxm/UzZC/B1whJAxjzIUWeqVipeY6Ed61QY8xoI3Ddn7J24TnCG\nSSXQSaPtqKWXlV0TmeAGfSYhMUVof+C2Xw12QaUbEZetGsDiR+p+l3JWrvpK\nSmmOaoXKCsvUXF66jY4URSJc0RbpAbxQkX1PFanrINiRFqJuRtQWKcpsZRxV\nLTdntBVBNCZUo48le9CbYKYrLj5BeuKPnlYhq81C9ur6FLiVtr/bmAECEwWm\neIvaBqyv99QYg6uS83+Fm6we6uMT8HkESrpc0Uh0EwyQj4mWu/TvPXxjBDtg\nRDhU+zle2+L8Cdx6HH1z6bSzZGmiM0KhGMKhJM0D0QZHSgnW9DrdB0Idb9MS\nGCR2\r\n=qWFU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFXLoDDv3KJH+8XJ/CE4q0Omn6D6Kcz2DUEX8H/FxYCQAiAHfidJre18lzTeoTjx4OD4rLDyWITypwsY4UBJG3wrPg=="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.5_1595512456716_0.464496474704871"},"_hasShrinkwrap":false},"1.4.4":{"name":"@spartacus/schematics","version":"1.4.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.4.4","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-v7wVzdEt8kAL5XYKXQB+Fx3VHNyTYVY3SeIBw7Hm6IC6rncNY1/vf6/aZMmWFz63zFSYAObkM+rBq1og6GwwtQ==","shasum":"c7b8c207520baeabd84a90ec2b52e3a8fb1b890f","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.4.4.tgz","fileCount":70,"unpackedSize":203504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIRu7CRA9TVsSAnZWagAASGIQAJXAyhGqcFPM73GEfmlq\nDRNx91Pe7R3kp36vx7J3QOIzUBYikJpl5lg9jwzlG2oss6L26nW4JSZcIXCN\naC44ozQLsdUvcas2j1DO70uEb43Fyx0e+K+aFUU5jXdZKKMY0BOqTrXYDsNS\nZZEAwFSWP//eLQhBN6IsRn+uhtqKFsaxTAKZvVJrNXrQ9FAJcdsVGImv/ANj\nPn8h+HoP7EEHUhjUhnGPOKzNl2Z+bGboFpnnXFXRHD8Imn9hf8QlpK8KhcRF\nOFm+vMm004ot04xnKhg9I6YocpA8Jw5kEYESRWOrTYGXVVL07a1584hzQrro\n+fvVKLfyeBU3VZiiBhdfri4a6jr+jaI4HGRCK91Q+7h1CHdhp7Bpt9zkAvrv\n6g7wV0R7b1Es1kP5Sm3mnRIszrx8W5nNYqZhNfDYdUr48CmkGQVJRTkibsRW\n31IzwHxls591tiefZqp2Ob+mUSXYnhlrV8g7mRPU1jEwaarBysnYJTW5Dz4V\n+WjOryA3W88KqGyIpTqf9fWkXNEiic/nV/bu4nOokEq512Czepq3+vByahWG\njktAYpVoN585yPBj532RItLHDNrqwgiotMsTPWUUTbYNm/NL0QDiqSz2PTUM\ndRulSi5iPKDl4Tt0uqjujEotu04zAWVFl73ZPFaDO318jVFPP7Is539EdwTl\nzL9U\r\n=x+c2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVulxW0xVptuBNqTpfU7NaFdCPpsnuB9uh2jptQ0opiAiEAi4KccwF/wCWeHNUtqZtJAIxfQyCoyc2Ya0AgM0/ECpY="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.4.4_1596005306716_0.3310423461970451"},"_hasShrinkwrap":false},"1.5.9":{"name":"@spartacus/schematics","version":"1.5.9","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && jasmine src/**/*_spec.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^8.3.5","@angular-devkit/schematics":"^8.3.5","@angular/cdk":"^8.2.1","@angular/pwa":"^0.803.5","@nguniversal/express-engine":"^8.1.1","@schematics/angular":"^8.3.5","@types/jasmine":"^3.4.0","@types/node":"^10.14.19","jasmine":"^3.5.0","typescript":"3.5.3"},"_id":"@spartacus/schematics@1.5.9","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-aDTaR/J8tBZ6vEjwLHNAuYZCaVzjENh7MYLT3rHqt+p5wGR3KzyOO4L4ecnVJoo8qrF24KD71TBAq+PXiWQkRg==","shasum":"5e22a2f4bd778c6971704c0e4a5666736a1b0325","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-1.5.9.tgz","fileCount":70,"unpackedSize":212345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIR/DCRA9TVsSAnZWagAACJ4P/jnZWoZXED6HiN75pMQF\niIqsEe3QxYnmbuYWykrd0psskJWF29Yfc6exXXWxnYmzL63uNMO2DMk2/MK9\nIdsgpyC0M+bIX8LkJnaTkfNNPsV1OLkdkpdE5MyNgytP/R+2vT9rchVPeVdj\n9IsYN+DVjs24YMHaVo0+gpV+noKAIj5f0+QvDR8TLwz7P2w/cSY9U0MhknNp\nm3+ULCYnFgc48r2djaz2dQnVkQlpBBUGEiByXj4mheX4SNZZH7QOo8TqOyo4\nIbkZ0Z4Wrjwi7iqHVmSMZR4F4fwqM4ae7YkSpkWLRR6ouFD0QbCbq/X3vI6T\nvBD1sCNLcFeWuQ4WtBuwnHEHt4MeEgcpv54Ym0KRkWBYkni8XB9Ujhuq89Rt\njZMHaTqeM8O3/UIhJpp+IP0YeBUIJHqD+QgU4ophejy9bcnXoJbntIsbupI5\n4gTQthIoe8e+boh/aUDw2Mx9ORR/nUaajsAfvuD8Ip0JZue3qN0EzkKo0oWF\ncwNl86OeYO4MHErGhkj68sa+ESvNfHVLUosEtz18GfsSXniXY9a6vkD8S5+V\n7d54caTytN9iM/pHOb5dbap6oGkDkLxnxMyz9+U9/9Z1AEazuMVCSRYBtbNV\n1uUZLXyUNseEIdJBulJNL87oIvFX++up4EBNYZaobMvAm37wMYeM8g3rBwOt\nks1f\r\n=CgF9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIESB2Ps0L3K9WCfurn3iOSPNiRurvFrd6OryZHvussGIAiEA2iBkZ7Pyk+qurAKYofZi2XcU8pJFfJ4viZMfiJZzNDE="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_1.5.9_1596006339306_0.930664883346942"},"_hasShrinkwrap":false},"2.0.6":{"name":"@spartacus/schematics","version":"2.0.6","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.6","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-P22V4u943AMsWaRp1u/3WB23R9nm8nf2UrXL3QBJOqIP4U5H+FhoE6Z5poiEVe4JK9/xGX3+/y/pNa13/Y7rsg==","shasum":"f5a18c262e54fa99bd2922dce4fbc646915b2cdf","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.6.tgz","fileCount":412,"unpackedSize":535208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIY1OCRA9TVsSAnZWagAAVW8P/RslBFJdNZyCGQCgDRDi\nLb3pJ39B9jMWf/jgKerGE34nTXGu3gymHxFHHp4BoSxWDL7jr0wprcs/XaFb\nUTYNSmue9A4YOdoUrAZR5py9Pzda7mdqhuQvpb9mvANr+GmL0WncGjBdKN/l\nbFpBZXXv4lNfcT8oDpCOwkHNLBqGe/ZLzefIaU7OSQX3SJYCaUDTGbgXprih\n6WzYgoBksL6M+x77HDen5z+yHpyTm7cGGk0zWxbud7vaFEjE2STIDvS7J5SY\nzumvu+q+5a9B+Ek34lRdxsEdt6qTu6iEtZbZ3lRF0rmKtvsWTNt1Ysa0SzA3\nNZYX+A7JPfJhCfjH18w5Hz41RtR5xQmvGDWweNYiainbe8P7BSplztpYdfH6\njOMuXUxFLk4zD1Tqc88YeeBydg0oJM3DPkGUnkewZMpVRT7tOKzRZ+NTg8W4\nXCz2u49J0xuqHykSMv2eeMGk+jRpEx+eHMM2qpBl2IxcYchTyozda8VCUKOW\ngJdwGah2ocuexrtoaUeWzcP6MMzmiROOlKvowZrBpFrtSyRpiGV5PXpQy3me\nqdfbp6M8nHaT0LhXngPwC6TpEQDPL3nFkWj2q8jyTjVuLBraz5rQnpHihd4l\nbByNHpUZWELG1L/0AKXDzsu9EPW7UItDB1q7FBUjCTKJWmiyabM/avIz4qLg\nVLtV\r\n=TEot\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDrUC24bIBkdJL+9ExufSpplICDavt+saQ+VEMqcYF7QAiEAqRD0X0Yg5QHyFWDqW9Gy6xalGwLfcFcpDlYWmjTbW8o="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.6_1596034382126_0.4931498967477457"},"_hasShrinkwrap":false},"2.1.0-next.0":{"name":"@spartacus/schematics","version":"2.1.0-next.0","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.1.0-next.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6FQuDA2/7BqCCx00hoqsNf1Ev4j2MnzLqmh61saoW+vvmP9WosjgG6yOdPpUUttMCnFxZ9Jv7eM2JTN8AQoHGA==","shasum":"082e1977770b7fef2b8b7d66e44dbe05b1081b44","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.0-next.0.tgz","fileCount":423,"unpackedSize":536701,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLSKQCRA9TVsSAnZWagAA/2gP/3ZEunViURQ4hcDvjz9f\nz6nX9wi8A+DOMSsmHwUr3sPej1UrrVBXOim8vMFI01gFaDtwiN3CoYKKcFQO\nJX12MwyA+WYo2FqCA8eLTzgnzjYwkYzbcpOZDe/R9YndzMN2SN2XrD3uBRfB\nWBds5pNQ+zqTahB91EgxSJuH0IACf5tm42NIUbC0/OkVOGhA4TkF6jQGlEYF\nh6fbl4Sct0oNnm6yVU5XDt/ji5OCcbOx8+YaDCoVkgwENcLidWtpu22t5PZa\nW37yYrl8O3ymFZ/tGoMeHUJkuBO+KOq4QTPvBQ0zLaVK2jdUfAZebL/B/cLV\nETB/AsqJg98aX+vI7WdzoSsxuN2VGkt6t83+9Isx3TbL5YxD+56Ty7m6h2Nh\nl/rn/VydpaH1x1VayNbGmlQLYTiReZKCR1XYEFo3XZLvL/XwplaObZg+/h22\nQtCy1jPzRPMd3BGagl7SzsRaPwqV2zAri8LP4QWlZjMGOgtLsG+iJAFwjGD8\n5On+t7SrwoAqa/dyJqE+gxVHKN/dGFgBbol0e43/E1csrM4W4C7grdM6pSn3\n8ZGOLToYa8vkI2as7HsMBcOT8JL4+E29UWFKXZ6yayU8xuWWxGoa7M8ca39N\n+nDioGjs3grhBA0g7/F3ay55WE2Y+cvXPrOZF+eBFRHsflsyexsxK0/+vX/d\nuBKQ\r\n=kXPS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaOW6kFTqyLHy96ieNvIlWJSF1ay7Ac52ROPJal+6YwwIhAIlsE78ZIHrW9KXmliS7LNCj909TFpOlx2PJ5E0ioe/L"}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.0-next.0_1596793487743_0.27337574622199234"},"_hasShrinkwrap":false},"2.1.0-next.1":{"name":"@spartacus/schematics","version":"2.1.0-next.1","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.1.0-next.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-MT9H4WkZTlGgdtcjZXdo4be98oVejsVRy9WFpiYJ6gUt3r1Ax+QBX96r4EVFFoGRmFU64l2meqJshufeOGn4Gg==","shasum":"6f80a15d329cbf238c5a9f80c6ce2286d7860d83","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.0-next.1.tgz","fileCount":422,"unpackedSize":536555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNAv1CRA9TVsSAnZWagAAFqgP/2aDLbbxZ2thnR+LeiUh\nGkZbvZi+mHaXgw34OaV0m9QE6Ku861f3P0feyoXHlOlYpZpiwBe41NIDZVac\nicdTkwWytDsyD+P3oCL3TqhLsI6fGLtBNPkmfSatA7y+6xwzslSo26h9mWty\nraVb718865j5/ebAsb2W3HncoRVyWGgA9iircjkcxTsfB+8f0n3v9Uy8hUwy\n1IafuctWXS462obAO3UrbHCFWjWu3sVKixVlW6rHPN5pH6BBO0bxKhSAs2WO\n7WuKkqbNd2CSks/sPHkdks+BMpE3zHQ4ntksPByS/B+REmxWdKVpDURKp/gU\nMF4tq4CEpw7zWCuhl9BqrdsfJms1Tfrhvx6CEiPfNo4nYXw6lUgjU5NSfbKX\nrcbQN+KtuUjbQAc3tBW3UKT39SZ6VgRxWCCyb3Z8xLZnereZseGrx8mbcm1R\nsn1FhYu0F84pUujqRE5FXZHhvJIcjtWb4Fu0fu0v+vP5r7U/uEDIvi1bXDwu\nEt3/EfOg010EksG1KQE3R8ikQXZpcF2uzkE/OinZ6PrnjKqc8chJvH4aNZU1\nlOmwzIZ4A0TEDaM8WrDkGn3deRM1ScKNkGzJZ5O13S060EwAwivhukWA6vsT\nUJFSgxEnC0c5+tlP25Z1MlMjdHqlaDJiyXqPLEPjGbSJ18PQ41aKsowmifuR\nRxzv\r\n=iHUQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDjQ5r5queRz29RrYY28GsSlNINArecwS85RE9+pcJBIAiEAy5f6/4Yt2zRPHNR1j/PuPp/9XyyY82rVtAk8XmcPszc="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.0-next.1_1597246453178_0.23518538430247626"},"_hasShrinkwrap":false},"2.1.0-rc.0":{"name":"@spartacus/schematics","version":"2.1.0-rc.0","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@2.1.0-rc.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-oiUaTWh2lhGEPTzVj8AypUAb7MFoq+0TxwlByayVsVpIOvzijePL3qAddO9+Be4I2YeVX8GaHqZZRc0QiKC1vA==","shasum":"067f10db461a15206560bf250526652fe7bc11e8","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.0-rc.0.tgz","fileCount":423,"unpackedSize":618327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPlCXCRA9TVsSAnZWagAA/OQP/1e7PeOuEI4tQrlo5xct\nDdBB/7YuQ8TtsR5gu6PnbY3dZdRiGBFkVTGVDPDeT4WG0LITuPAAQi/8mmHF\n3fe+M86aYiURrgn3XO6t0j54bnIiuVe2lPIzxMFdyxAF29iBd4PHpAWBvJ6X\nSx1boOs8yLBvEGKN4L/X2pLIRAVGhXE+H++O6T2iqjmo3VWkQBbkdk8rSCkm\nn2lQoH4BmoHF1RccFd1P2Umr5jHTiSSNXf2iW49FZUS5hTLCauNOkeNgo/ZQ\nayipeqJZpcOYr2OmlNTI755l5heO4/8tP+jgh0nHEE09i5Z+/fQgBh9X77mt\n++4SpTx4vgoWm7Uryk6/kGenzmfAUo+F0xoKdYbUQnbNNMNcJnQiuH4W7R9J\nx1iznFI05n3FfOzSF+S7e8FZYwwCoAjDPFqFMN3QuKaaK3sYIDMy6uDVMW31\nXFs9eQVLnvZLX+5roOOXQmippuiX/OZ0K3WEfy9KEK4XscSvn44N2abl4NOn\nRbmi8eXkj39rKqOjDs9D9XdOQ1Hz0K+ZNCkb6a+ObNOMENzkhNbRFZ1Qfjvi\nsfxA9HLbWdgLSEaB4uI6WLjKxHYKmA50hZL9x8N9FpKpJjlJ9DVKeG8B9zHW\nSn8G/CLEymXfHAYrhqQOwvQCnWflKHlUzt5FWX7gR65KNk9rFKZ9ekwm0XVh\nQvQl\r\n=0nqg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2/3KNifPI17VSksN8+EQ6bzdMp3b+IOxr14VuSbXvTAiEA7ck7d0w12DberCzty+OqSnonKFzXR+2qEhklIA62FV4="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.0-rc.0_1597919382631_0.44385145174621665"},"_hasShrinkwrap":false},"2.0.7":{"name":"@spartacus/schematics","version":"2.0.7","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.7","_nodeVersion":"13.5.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yYHKWr3Oe3yrWfWa11g2K2Rhf3uucMKWK8WMw/+DnWFjwEi7nVy3bDNY6/BcBteCZQiPUftmjnAzwAZ4KLFhQA==","shasum":"9a9086c3b443c7c8fd3836b7cdef3000742a8503","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.7.tgz","fileCount":426,"unpackedSize":569072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPm5lCRA9TVsSAnZWagAAogwQAJUgPQaK93F6gpAoZIDp\nAAxT2jjxvlrjuazaklutpgInaKBsAFw50Cp5+6J1kOFM6ks+FYWiin/4x4W3\nJcMJAtI674kwQUOCuS7jpsYGrfYWY/jaHAHsgo4pQ72cIOf/1ztzak4f6AYg\nIYHJiesaBM3GI6Ia16WzFUUkMKn3ts+A4gF0D9LWF0haJaJnIV2CJRu1t13f\nBqU5w8IlimY3Nm4HH4ub+LhPa7sPb5NMpmqi1j+SHGQfLF2ul0Od4aykz6zW\noW6ZmnCCtzCdLBcF/zBOb9Q3qwnlLO1h0HxAOkLez+nN2R7hfBdoC1ETYJEv\nRBDok6PM2EsB1Ly26IRafPPKAoD/h6X7PWGV/31GqV7GtmmZEKZmA6OAQSsn\nrvgZR33Fobg7OXRA/CmPFQmr6FIOkrNPu0FUJ1ZX7oS79jUpCvkZdE8xU9ms\nVBRjfeTCsAScr80qcm5CEOE22mni1lynYtPxE5wIt/Foq3irQjPsGP6F9SZE\ndSrR/jdshtZYj5DcRF9l76KEbV02X/q+odLhQQLhDTHY5j+rssHt+74ZsU3A\n48+7nZQiM6gQ7osRU0ExjsVlHRN273V47Optb5cJczyitmwK3lEB3KbxEtR5\noQDq5mMj17Pd87lIH8TAxR8VFKQQEVCK3W08OgsFpelMCSUHjxX/FyWqDMw8\nfUev\r\n=RC/R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeW8urJJTfoZJ2M+HcyHqaZ6Y4PB96Li9ksqTGrcFzEwIhAKoTJgGO0JSm/2+q1FLs34ut09lzcTTEdZqP1OOFy6nv"}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.7_1597927013144_0.22147057298780526"},"_hasShrinkwrap":false},"2.0.8":{"name":"@spartacus/schematics","version":"2.0.8","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.8","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-eYnnjNHsIs2ANa5Iyz0BlH+PKUtKDRAyJxrzOlOQgl0yl5uBrJO4MhzTQ/sVEZafjkR2a3u2vLut8yUG9aMVGg==","shasum":"b2b16938a788da6c2e276963f2e1cf75fd20d0a3","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.8.tgz","fileCount":412,"unpackedSize":542856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR5GrCRA9TVsSAnZWagAAvGcQAJopfSgt+3FZrTd6qHxD\nVSwuF2mB0R5eIY2t9IECx5XkGcu5H2G9aKQd7ZpuInDvzJnH4Ph/samo4vek\ntapvZeLszUs162bRnY+/e/abpriQmGNNJqxY47K1LecHofrTg+UkS7oVqgb2\nbSc8uogO0iQ3Y1C29opyukmkY/7zwDpVEd34kwIjuT5Lw7O8FByE0vyZ2VjA\nzWnYWXPYl2PJoHQiBYA6EAwnTFP8B/QUAfs5oXnuzzm2SHv086ToXOu28+u+\npZnNqxdxOvvmB5GQ30R7V8HZT/vybDzR0TxTPvg8Hv9w+IJQo1xWvpz65fJJ\n6mkF+snekoCBD4xhrXgAFrW8CnFkloPS0df5HHZdx30ScJVj5itjqT6QkMQ+\nl+Sc2TLgyxdZVDaN1eElZsLPmLAxv456v5GYz7jWLpP/4QnzZWkcCTguAxHy\nZeNFcW/FcPQwwT64L8i7+faygYs8nEncHIlghoxUHSEv823ZHinBrVei+e0s\neW4Yt7w/uvwWfXoAd5RwZz8oiDbONiwDDsREXjwWj7jpNuAHXpjf5z1hPFmv\ncucpJ1ZCfaw/RwWxxZaWKMovgco2YKPfOiUvJF/H70FOOAhYLogG7J58TWa/\n/28YxvprZU5ichJINKA8tNEaxEWF5X80FizUgbYFYnLWJ1gW54ak1vgGQ31a\nG6Gk\r\n=tfQO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9U1G8Ybe8XPPwhNQ6048Pf83i0T5BQjZI1w5SmwsQeQIgVPFb869r9AqXDZvXLSYby/JQEQqkKSBOvOfntP2Le40="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.8_1598525867360_0.23203551929919253"},"_hasShrinkwrap":false},"2.1.0":{"name":"@spartacus/schematics","version":"2.1.0","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-KcDMm8x02suCCV6A71pZb9tzPJlXa4E1cSiAmCOwT2wtONCz6o/hdw/ZezKtFLzQMWaD2i3DFkCe4W1LCCu7CQ==","shasum":"37b060aae479d4b184f833dc4ca49b6af6f076ce","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.0.tgz","fileCount":423,"unpackedSize":618474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR6fxCRA9TVsSAnZWagAA2z0P/RkKV3RV1UxuqRrqKBi/\nN+FrsOlaODBc8Y8BWPU4jg7mXD6kXO4sen/OFO0agHNIMW1XmPWyG9Ut6f8U\nUg1x0BivMr9K+QbcF5UI6T/uJjazhPpkEEc/U8blobvQ9BMF5H5x4VDfLrc1\nbjeio3bNkhlb2mpqeDuuxYmfnsZBuXGahHin0mZOpS74CRCsxyapoNw+iiFy\nJSkzzv6hQwGvWxAaj7lNxarcr4Xrw+SgRdl5NABMegEvK5MzLSlLhc7R/OTI\nv7601nmWCnhfrF4RXdFUdboWFO0hYeUErPkb1r5QWbvGE+Ye9vu31k6RD1Sn\nCcoNA5fJJoFFK87ioFpYC8UFYTnBl0AD3CXyq2oEpCzLZ5rLFfCEHfxVJjbO\nwoskbRTAlFsuSrK9q8M5qszwLbMOP8A6UYz7/0qyOQnqHZuaMIIWmzYtDDyd\nN92mokvzShr0lq5w/3UaFa5Clc0ef6u7Eqj5XdRuf224RPnqQgYikwgXxCFQ\nrOkJJaZllfKmV80BvRFlJrOvLbMBxgV5+P/Fuge9c8mVz6aua/ZeRKtNvaNL\ndLFePW4m+JYwwsc6WAhd6hE98aB64+jQ0C0y6uyxvGnyUMHm8Fdeb8PGE1Q3\nLNU+F1AM0DDzLmsHZUb4KZJZ9a8T6pRyYQs1Ou/EOHMqWzQ03H1tQy0HfKmK\ntHq1\r\n=cOum\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkd+H3rv8ZEh1l/g0pF9Mn6wHqD6IlzXfdRu6Bhg0cVQIgTieKcT3UQtJtVuWMwMfIAC3nlQP3YDO4s299x4hfjbE="}]},"maintainers":[{"email":"gilberto.alvarado.jimenez@sap.com","name":"hackergil"},{"email":"louis.pierrestiger@sap.com","name":"ltiger14"},{"email":"lasakmarcin90@gmail.com","name":"marlas"},{"email":"pucek9@gmail.com","name":"michal.gruca"},{"email":"admin@mirkosoft.pl","name":"mirkosoft"},{"email":"mr.szczepaniak@gmail.com","name":"mszczepaniak"},{"email":"patryksmul@outlook.com","name":"psmul"},{"email":"sivaprasad.kare@sap.com","name":"sivaprasad.kare"},{"email":"rotherham.c@gmail.com","name":"zeyber"},{"email":"nikola.zaric.ns@gmail.com","name":"znikola"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.0_1598531569052_0.8790871793486488"},"_hasShrinkwrap":false},"3.0.0-next.0":{"name":"@spartacus/schematics","version":"3.0.0-next.0","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-ZjG7YZ/3HFwRofnedbJ6qMqGhgo4ZXKMxSkiBrUrxFUx6acKR0aBQ0DKQq4g30uQGCPDT4N9qHZs5VwRIrzDLQ==","shasum":"125390d5b3798aab4d17d0cad9306e1012237dce","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.0.tgz","fileCount":422,"unpackedSize":544455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW9LqCRA9TVsSAnZWagAAyf4P/2ef0D/tplBRYHAa4VEn\n4kAObRmoQh0mEWpJSE42HFdWVno57PC4NKUjOa7Xx0+tjGegagznXFrqwENq\nkWEKCYzSA/U4CbaUTHM5H3Rr7frPqFpSK9EDDhq22lV6xQlZOPxhemljlttE\nEK1bkBSvl985IraNTx1x3AvXa2Q9a0XZ+4MClwj7HbWtGyEXFcVhEKKBq0Bg\nRkVcrUy243iAj6GDgAKWOTYZdvFMPK67tu0rLp6Aeq4++Lkqc3IeXgChpFTS\nYIrVOGghHUsGx6DEUVI5hvstK9T+SWUBFuACMJESOFeQOdPAqWa/l8q+Gm1u\nmqSsNegZiXGWTrlGQFGm3mDeLQvs2IWaUigmHZPSNWFbs2drjtjPX6O4paj+\nknxKhNtE22wRf1PvlT/A0Os7XD+Sf/C6/nQk7JN3UzcoZ/XF6PPVTvQ5M4k9\nHkoIhVvUD9Jy2ieEdHoySMI6vD0ZQisL5FfhnXd5b1rodFjzFASsiPdF29KW\nKC/egn+OJ9DCibtz0Tup2wC8yb+xQRPVGoipdMcWoel+YlfgAOAP/zKGTgTV\nDnze8r4ViifotbGPr9QBs29xEcKa3FZ6x/py+ATrKNeVVDHuWNxHHFilAelM\nOc51oAe1d/CxWBPZlTVtkn0OzR6s0o4B7hitNiR4WATD7MIqVkfEEWPjS4UM\nrxfw\r\n=iuSx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDliJajnOtfOx60PJ+Qrge0X6o3SWE0CHQEx4eE+Bk2IAiBH51etv0uXWvyFK2AGi08qmhPIIzXMvSa579oF0+Nwzg=="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.0_1599853290301_0.47468801578960296"},"_hasShrinkwrap":false},"2.1.1":{"name":"@spartacus/schematics","version":"2.1.1","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-78DFnosWVsVJYVuaqY/Q4wZccsM1Q4xzmQaMzr5sdVaVa0gggWWXFgvn0o4AbPcvHjceswyrT6K6O8lEpeP5sw==","shasum":"2781663ee569c926c5fd1a9c0e92430f9443f964","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.1.tgz","fileCount":423,"unpackedSize":618474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYguZCRA9TVsSAnZWagAAvA0P/1TgKzXsSsisSN1g2Fx5\nvyL0NuReSQGbPUgXSHCEMlJy/SpKZV6Hyh9x+c5BoOrSHKHnwAw/ZenGeIJs\nhtRmJNb4mbIg9xyT0vsmTG1MYO5sb8j+2gxjhhRaroXrUtedREIlMfAjEa5Y\nC6ULLnLB1UZJsCv+uMuRcrXVZvnB1+KmijNsFPOZLFyxErIsOQkp5jPsHYGe\nOPNSpyNhjt5F7vghZnMrGq2V9r+V8zU8JCZXFdYVGo0HLob4u5tEVBDYbLEr\nmVm0SNzUJhnviuOjTGYtQjtc/ODpHcok/F7wTbYAdjinbAWTKH8d3QC4lL1L\n/LBmOgWCq+ZFz0h0G4x6cohQIRgHBSbge0YF4dGP2Aw1ki9a+fdcS0GOsjeu\ngIeMr8fYRF7YGkns/XfaNSwPRfQiULN31P4qUKGChL/CB0voAkcnlFrZA0EN\nCyKeOEsKNaBZYRfC44tErABml8lxzSkKtl++BL1yG3uLBRPZrljvjhyOcgie\nQm0HAX1ZZxAndLgH43NuvOMCHhWnyr/pb68dxGU9cH3RWayhF56WnbkKrDhH\nsJLb3cTr4kKLyr7w+rQoO5T+/wenbhfZnbkoyz5DSR+bC/YECUPIK37G6DOJ\nGlw1mhBCa/5CqwHj7fhQHdch8F/oytlNeBhk/y+jLdrAqmZNuvv416mvM2Kc\nK8TL\r\n=SC+b\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDt14WrOvLJ7m/lpSEvi19Q3CFNK5u9iGpMHWQ7kgacAiEAlbs32uOu1Lkju+uOZamk0GyoIYxkxNbN8D/plaGCSGE="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.1_1600261017458_0.26420791427502155"},"_hasShrinkwrap":false},"3.0.0-next.1":{"name":"@spartacus/schematics","version":"3.0.0-next.1","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-F8N2Dmg3BMnZvtg+t+yTdqF1BC9lgHr7Q5+GKFoScJ1apU64ckC9CcfEmUzmqzfp2s06eooTJY307Sg6skad/A==","shasum":"ccb8f72d95869499cfd4e7b8ca843d3bc8bd75d4","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.1.tgz","fileCount":422,"unpackedSize":561440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZHjKCRA9TVsSAnZWagAAcmEP/id6RkkbjeJ8pDvWed0i\nC4YFnKUsbf9iHFzVyO6eZ26uboWcfjGx3aCQDchzkmxS72cPGHrgZ0OPvopU\ntufBP4CAKng7TqGPIdvJcII7TZlvP5K9TOdJyALTYqJRlQYoLHIAXXc5IRlL\n7MSXy3af1X85abNkZKYGcQLab7yCuzsqscL5D1qb3NdGLwEc/iH8viV1jcJl\npUIzCInT4heZkz/Ujy3eKTMhY8uAtDsh2e5nFgrknBd+IER9J/7m8ByJ16P7\nl7QFFTE2FNhvQMLlCHkFYP6mDEXTydJ0jn4SUOUn7p0cgfGXg4mKNGZwDpRi\nGsMcPU1WpGzcJB6WRGK7Oz8iOcPFgjlwsIIFXNU8p9ukn4HjC7g5RjlC/f80\nAtWkUXnsAWZw+1UUuJkOjaC7oAmSeC5EqVmdbofSi9qvuCaFdCZWB8BYiZKY\nHUGWwCTiUT0P1OS3lzkEscMEIpdOxGEYJllbN1WhodZ4rSRvCzuz9pymKUuD\n6Isv9DCf5FSmMmAzaE4jx/9d9V3/h1CC7wjBuEQWkMWqFa1ZNF3mwZb+YMzH\n18mBfegjJLSU4YoIFoL1uDPSndIAq+6aOqiY/Wvuw+CflncS38XRHWICMdu+\n1iGCD/DpfftyFd9VJnznA5XtSr50qtMG623Pbw/9U/OkH8TbcKE1iJwxhJiz\nyC98\r\n=cTBm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiquRZUhNxlJi7aZYmwWef1Tv10njZM1FC8CyHFJQ4pQIhAKusOwx5Q97XnbO9iz/rmMZMznTNqC23e5qfV/Msivx4"}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.1_1600420042361_0.9725171584656354"},"_hasShrinkwrap":false},"3.0.0-next.2":{"name":"@spartacus/schematics","version":"3.0.0-next.2","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5XV+3gSpqgvw2CR/31phXlEt/Z9cOojBbZyBIyWlhACXyESSHwrZ8pK1z+YcccG0LymxePgy9PNTXngxry9++A==","shasum":"21400a89a37c34b684bccef1c7e4c66b224f7c27","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.2.tgz","fileCount":423,"unpackedSize":643472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdGieCRA9TVsSAnZWagAA3okQAIPS1ENHTIhJaVcbEXq1\nDaZ4kUwut4DY19VpzUBDHUrKHVEHHl/CtHdBH8/boEeRBmLZ2r3G+bGCxZBB\npMDTlILwtPSb8Ha/sw2p+Dx72s+RWZbrcmlYBGLyqFR3NVk1fA3Rimr3c01o\nh3p5K0iIz15ZyygcaVv0uGz2ufIXE8KIUQTkF544AYr/pF8u0QYz4cm7UqZC\nlR1mB7MxT/0l47HrJc9mLsagtnxXPKm6teRKPZUTgnqXxgVndFO6qwQjnZHd\noPK2oW/642zvTu/KBRGuOIwJGgS0Sr3E8v0SbofezN9MJa+BuXgf9aivkfsS\n2lBBzwM/xxkGi+YaWx9IrcOj5a3NKuQkGUACMJS2FbRrIkKZWWQ56qu8o0ze\nsdci26hQG84iDUg7n1VP0tUEkqNSubVhe3oi9MkBLY8qHa1nH/n67bUBWPQZ\nsSHdTGqPagOSNM+48Q+9cceSHVzH5W6WYTdMFPJ3N9RCMngkC8NGy4wDe/yo\n/FNqGKiUvNcXgUF4K8d8ub+BXd8KELqdytU2hJvLXdrK50IBsurr6h5QzacA\niEWn4MI+la5H+vfGYiKO16L17ctj10jnSJOGj7Odufu9VtvNSL3U94FQaD4V\nEJi2QL25Jo2a4YOT5TNzrRiXU3+griP+ugXG2B9YCudnwRNk7BAegbHRq0Gz\n5Tpu\r\n=8cC1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqoPukbdqOBuJldz/hyPjIFO96NINPKK8MVWhmMT6JEwIhAPtDKrXcrRhAqMdwNjw0pmQX/79S1OiDomy/9cUeaSpx"}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.2_1601464477654_0.6785808399327331"},"_hasShrinkwrap":false},"3.0.0-next.3":{"name":"@spartacus/schematics","version":"3.0.0-next.3","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://api.c39j2-walkersde1-d4-public.model-t.cc.commerce.ondemand.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-WjIHWdU9Tzt/a9W5ALuFujjPQNVnUqn0tNm2XwV2CMw6sCAzHEshuJA+YwEbVtJcjuWL3ZuvJUtCRKn6785qrw==","shasum":"0d0c8313628cd13c082b979bdcc6ff583a76f825","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.3.tgz","fileCount":423,"unpackedSize":643472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffd29CRA9TVsSAnZWagAAEAIP/iLIt4afDZRWl6fscYNR\n9B/zwU0HaLiuUD/sHF6DeTXrqNkbRWbprD5F3/o1/4pRlXWnHnxpuMWfFuub\nE9x6vaoPpVhjEMy7lclYrYNAHUZjkx8Lbb3cYpmZ4/kOkzC3zZZx7FJMhQnv\nJNYGB/LruWs7/QsCnixIT7c5nSeGjb5uOHBYomjc3DKlz57QVwW2NSsOEFxH\ndbgwEtH0L9KCCBkRnTLiFt2GkBuRBrSkYtLmRPfcPqBFcLcJKmlTKJQatC1Y\ndIWoG/Au8hc3TvEsmUgNh/g71oGQCZyHMkRfBHmpeBdXx7fe9OCV35/0oCjo\nDcHNUugKrpkWM9AOA/NIBpHgSM0BBn7YXvonUMbePtkXXxDbXOHskg7u/iaD\nk4MhUhzm0K+h7kVGXkbafKyTc9TGb1+ySJ2RZAS3X2FqYjw6CQQNELEln7Oy\nGhXu+bEe4Ns6cqk7/pf4Fi0/gfec1bYxc78rRixRwiywBc/tW7gX7GOvXIIw\n1wvJtuQ06ulqcEKu+uhoxWoW1nthbzAARjoyeaKKRni4IAjwaQT5BjLdaxWr\ntaj+rrpgTHjoqIQgx1jyObPG4m4IMejMKOfBw0Xfv3TR539LtCxiT0Q8EGA2\neAqX9l+IdGa36J3wz69BGELeGkI82qp7cSBZ3/Cpe71/Qhht/1G0G/TTAb70\n6RHD\r\n=TJj0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDZfQbMvJ0UEuhgmnznRV63kJl3v+TcQj4qAw4jhK79AIgfV2kJzUrZJfeBLroTemO0YVawbb9bBpsXoPh8iwF+pg="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.3_1602084285400_0.22325920116742726"},"_hasShrinkwrap":false},"3.0.0-next.4":{"name":"@spartacus/schematics","version":"3.0.0-next.4","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-training.eastus.cloudapp.azure.com/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-FoDs4JkbcXpzf/3hT5OMUDjVp8jzpjIGNS8BLWcC+so3iHrYo/dXPT0YVWfkFRyZbunIVYqCQSWz4kMuKZZ9Cw==","shasum":"6c43bac882d45fd1f3556c027f5aac39b5e5d045","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.4.tgz","fileCount":423,"unpackedSize":644043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvapCRA9TVsSAnZWagAAFZoP/11aOWRRLU1LPT7XIGW1\nckCX5kAAoZdwJzR7+OEz1T3q0Y9geC6ZSLGQe+qEaVYdQSFItWc0gH+ECB3T\n+MCzIRSUHwkHCAA3WBn+QysZHl9mCO1ZJxIhytrlcbNnmCYJSr14LNTjZdJj\n+81vpGC7et9GW0xAGl66UcP/Xgk+j3rpL7WSdObqzV7T+AsVVSgjM8KCYGSF\nMHQ/KtGWBZxSbTTB4MCDST9ICKE77PRwxfze3MOOQyntJpwCkAVClmg4RG7H\nW1kIt0+Ui3R0S8/2IZ7/n2FMNeYGm7xmeCFiRWo/YGZWHjoAwvCGhcQTj9SR\no+mVKMMptxPiLO7XOC89CKuDvnHd1pDvXKMTCyzjrhbDpKvvCoG1tLgx8XO4\nugpK0zZCtSNGUj4DUkbYYoM8xRHlQgLv2spSCzbz/JoT/SXlZTaJTA2mZLF9\nNrHM1ypFcUv8JzKP2C7h6fDJaybGxpM9ZvQEZi+aJty4NneYjIc8fe8Zna2+\njGYknWooMBIj6Wc7aGSyM75KP2TBJ1Vgkzu/MoNT5ZC9YhDbiQAjjCF8IT7R\nN+dgBAoB7TKrsY9X5ICa+bQP5VK4bhCVmV8xmabhlPqVr4RPFnJXL6D8pOCl\n6XK4sy09pVjsvsVY5W++TbrasO8mGhf/SvYoqx5Vc1l/bRAu8lXpFkXy29gB\nzolj\r\n=rGMX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDehkeHm9Ulbj2Ld2cqmjXS07huJznhlLIrXZxkVQ8iiQIgTT9Gtb6AWe7IB/bFF85y6hcBoCBpQWgKdBojqpGM7co="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.4_1602680489139_0.14860786480888022"},"_hasShrinkwrap":false},"3.0.0-next.5":{"name":"@spartacus/schematics","version":"3.0.0-next.5","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.5","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-a3R8HLaPyTgMEnzrheVxOzdZ75zCcssdQgotavFewnVcjRva1cWVWG2NuSOITrM8vdvD/FB4f2uH79a92wJwnw==","shasum":"649feb1d9e838e9734e51a1927fbadff7a869669","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.5.tgz","fileCount":422,"unpackedSize":562017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkTiNCRA9TVsSAnZWagAATUcP/2ApuNotKulMG6vCS9UN\nIbe5XWSkeIgURZWgbWyWwrWMOKimkrkdullERWCZ64NJGi4wo2D8y/ivpFbm\nwZAZPbamhyojONQZXO2ONIF0TSguEGsVfE6A1J2KG2UtVZzMNZLCSQhfDs1q\nSKPNgjZrM6m3t3Y759KWwOEPI6J/XfhRwE2GiAwCJoBn1YGu1bR8tAhfhmNj\njcW8ZO/R6bY4GVAQhxmRtW5F6Ih9Q7sJqxMgS+XszHNNNOv8ik0DGLABrd5D\npw+eyf3kEK+LwbJtRb88Q++ePrmUNG996ObfsbJ2+IgV0ebJ5Mu2poc27tde\nD9pj+NMd9iaR4gWe9Wd83B9jnYi5DwfoREDxiNoGahD6PUZMKNQbv5/ZJYoA\nqc46bDDPT3U1vqY5X+3mGerdmz5FNgLxXLcBIU8RljT3ps3usR7vJUYAkgiQ\nESOauDzwkvGCL01n2q5R+2Lt/P296vZ1ELJNngFKwTorLW2c+pksS+cPK6yc\nphtyLeKwYZwSHeEUg1bPSWJA5A7+7vNf6Sh/9Yc5Az9jFyyJ/P4y38C1yG+r\nWTAR8PuM5QvtCFfaAggd2qHekNwVlM2IvhtlmXHUkbzjwV638YXIW9h5BVI4\n/LrGbMooxa/HBkjPFpQv08avl5f/34EqTu0DlLZbDVTSAHhKx9fBwK0inmLS\nDgGY\r\n=tWsx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlc87ho1SnUgOwPelpDk4gbT+KWTsKofRTq2CHuEOebwIgOyeb10tGyjFdn2tqAid+7g05ZqSWqRnNQHbFFN9CfBk="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.5_1603352717149_0.580017392653019"},"_hasShrinkwrap":false},"3.0.0-next.6":{"name":"@spartacus/schematics","version":"3.0.0-next.6","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v2-validate-01`\n- `migration-v2-methods-and-properties-deprecations-02`\n- `migration-v2-constructor-deprecations-03`\n- `migration-v2-removed-public-api-deprecation-04`\n- `migration-v2-component-deprecations-05`\n- `migration-v2-css-06`\n- `migration-v2-config-deprecations-09`\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-next.6","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-5+hMDTuFj3H4oOgAA8X1yT9M9uzsBpbslRLYOp2Hf0Ntd1pm/VaNs9CQN4GaJvYHWMcR6HqGvcSVaO1pfWrzzA==","shasum":"c40978ac0e2672d67d52563417e64f3ef5e4722c","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-next.6.tgz","fileCount":426,"unpackedSize":580888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmufiCRA9TVsSAnZWagAA6yUP/0qXvdDKL2fhn7EWlTPh\n4rEytBFj4NMhQviCdglNUQeLl9e0QlWCj2sy5WOw7zw/EwuxshdKb7cR1+ab\nGgfteU1InqObGbSFWaBi36XRKh5FUjmEuNAW3HCHhq0W2jMXMFiF6G1ybZ69\nJUA8t6hozydF7fskF+bBQFALZJz6W/GFUVaAWLGjf8jikJbQFhpFp5IEEduj\nYlKrpIdBbIHENlkgPd3s7bBqmV8JXQFUbLU8eCWvkqW46ufrB0ucLfVV/Iuk\ndeAVdCR5E+psTj8DJ46+/wGMET/ZBaNzhOVPrX/2oVaVA02V/kLreWjm60O8\nGFSjopC6/t2VBKo/1V2uWrqmnJfk1I4EOrqhjlaxfBksC9rU0sXB8b+bs+O6\n5x35VtbFwoAxvi/FckgF8xN/cQqTz4BZiYVcNVqbtmdZdb7b7GOtUZqiAC39\nQyUkQUQTIfaBO9UkgZUUlqCBJepDeBYiuGRte3SovxsbYOkWOQBPwmik7q2Z\nVZZTFfsrLHDBNC+st0a94FS9b3qwtSb8+C9R17CZBz/sLBVrH+K7GK6wX+uC\noZRkO0TdG3MucPeced1ZbPbrgUyc0c3b+VKWgeRE9vzEmmaSRqG7jKBXBqNY\nBShu7wZw3vDduHTvHefEZsvJ3e4G+QY/1RLbQ5p/heSHZL4cejlInOhMApyg\nryDQ\r\n=RCEi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG5TZF/OIb6z7POJVv46DhX/THG1oPjwWbj/dGepvcNKAiB6aJAEAJoXm57iWIwKXllAA0z4z4kS8qyBz9pX3OYdsQ=="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-next.6_1603987426028_0.4043652337932666"},"_hasShrinkwrap":false},"2.1.2":{"name":"@spartacus/schematics","version":"2.1.2","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.2","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-DtUR1SugLQCOVUN4DB8J9BWy/gOiOWxoGPu90M9smwXjlPjwlxF+4WFZMzltISM7tFStle4nLSe1aTawa3ZF6A==","shasum":"decac956b60a7f4a3acbf98b1ce2d82e9f0b3f77","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.2.tgz","fileCount":422,"unpackedSize":545043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoT8TCRA9TVsSAnZWagAAzz4P/jlQSGpYpS8Brh8caeWN\nOP8zTH1v1Moo6lEEG1+eR8f4CwtEzJXZLjNsZfLN6mxx39GodFDgDOXGYQNK\nYVsr+/VYlzLVF1ourYsFg2ykoNzCDUuBb5jJbu7RBcilWiyAtzlIhfIpQIq9\nfWVoywlovYFU/B6D+uyj3GeLthqeQC3biB2wx4gvPFkJzeFloAq/fMUwnkRR\noru5hdZ/JWXx0E66aH67NjWHoTD8qZ3pytGSt9Qfn9tNkGnzs2vkh17NiEq/\nCX2GD0XROOlf2Nd1iHs3pC9FZKXCLYCliHGG9vHS/VzORAbj28lnyElmvBH+\nI/iZtVmkOyV4sv1qQI5WLjsfKGTfyZiio7Oj9BHyuKLbDNe3UjzmW/nDgAdq\n4dq905G5rJBVLqepToTmaOYbYQc3dWJB4fJGyWUWYM8rmI0dky5z8utGVuf0\neSRG0t/kcKeinD/Xh381khDW3vqJxq6fy2YRAzGMtMqQksz18U6sbWa+Clwq\nvsTQBuq9OAN4SWytAnfigi+YksM2G6TfLmR74OZ3SEvGiD4oKCTjZfVtmz3w\nP1ubdAInsl86hVH0Sv/H6ExpIPJVtaS+OdOnRWm96wHzQU5GYwp1HTACBcqQ\nw/skSD4snIWCRYEnsDabK12CbvRdpPErlRkdtxHWkYVG1qNjvdG5X5r44qcX\nRWw1\r\n=7AWU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFsx49LF5tnOCvwelFxH9yD0LUrXgnlVc3KT7X4iIHfiAiAgIchq/+v7osaoPTbPQDNuDY17FqQzZroQt0eXHmgd1A=="}]},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.2_1604402963012_0.06978891115484442"},"_hasShrinkwrap":false},"2.1.3":{"name":"@spartacus/schematics","version":"2.1.3","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.3","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-lnk7o0olXGtZggyAD59xxdzI72tUZdZPAWeRc61mk3WwMmK9UJi7oGjJETFqFKnIRyzRpmU6EalA5nwbtJWBuQ==","shasum":"8d6735efa41026ec8feefa5265b578894c2a710a","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.3.tgz","fileCount":422,"unpackedSize":545043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfppKmCRA9TVsSAnZWagAAuUUQAIAJbcrREoWZkSYOcgjh\ngcESVvXRouILYSJmAHJUWoemDg5wZVhvYsj/mI7jYvoe9RpLAvmeDu/DkTBI\ngYqsNQ7M/RJ9eahmO27uN6eFe7mDHQ/bgI/JdPY71LvqMb5/1ECU7HObwbLx\nPSzj6eZ748GRbY+3M2E1uv5+VosbEd3XFvNg93kKsuKv8X8Mwch6sfe7oItL\nYQs8HB+a8dDITO3gu2LCqT1kbxQbHMVKprCXXbWLIhpZBSXRuetFGm1+YhAi\npipK0hn5NNkwgiKY7Hqt5oVGNFlkwkrU18l//fvHOguFU7ss1bZsSHdS6ijh\nV4aHbHXn4o0MvXaGFlqDUD39xnTiNEE/iWBGDD7fUANMP4zR/wb5OR/j8Kdv\nanCs6cYFbdw4DQpmAb6jKg0G4lduF2jD72/zeqpBIIhsJR1uLE1a27MUrHRR\nCWZZle91WrutJJysP2n3Djf/Rm4X8TyQjzhwR+MvpkMZs3MQE7dH76zzFAPA\ns7Qr5RYh5K+EZX+s2R00dQ/L8Agn4hz4larI2wbAdND6Wal2+xTe4iKDOa/H\nbzQF6dE3LZZ5XNcosjBsqFhqUvgXip2M7DSyUODHdXKS2Qofye4Az4uQtNus\nQHF4bkxm7+xyLmiQMutO44wvvcJUWpCxbnFNu4PStOq2GkGaokTv2PSasmxG\n/0kZ\r\n=q9Ae\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqHyH/79yPbcshHctYFFvsP/B2QoiRYcixBEh6dETD8AIgX7/So1WJuBhPd6ZbtQzRlwXUPFxjBsoL+8AzirXe+do="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.3_1604752038329_0.35778838394455414"},"_hasShrinkwrap":false},"3.0.0-rc.0":{"name":"@spartacus/schematics","version":"3.0.0-rc.0","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/misc","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\r\n\r\n## Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\r\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\r\n\r\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\r\n\r\n## Testing schematics\r\n\r\n### Unit testing\r\n\r\nTo run all the schematics unit tests:\r\n\r\n1. `$ cd projects/schematics`\r\n2. `$ yarn` - to install dependencies\r\n3. `$ yarn test`\r\n\r\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\r\n\r\nThe following points provide guidance on how to achieve that.\r\n\r\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\r\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\r\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\r\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\r\n\r\n### Integration testing\r\n\r\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\r\n\r\n## Developing update schematics\r\n\r\n### Verdaccio setup\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\n### Using verdaccio\r\n\r\nCreate a new angular project:\r\n\r\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n\r\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\r\n\r\nThe next step is to publish libraries to _verdaccio_.\r\n\r\n### Publishing to verdaccio\r\n\r\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\r\n\r\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\r\n\r\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n#### Iterative development\r\n\r\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\r\n\r\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\r\n\r\n- in the testing project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics` command\r\n\r\n## Update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n\r\n## Releasing update schematics\r\n\r\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\r\n\r\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\r\n\r\n- `migration-v*-validate-01`\r\n- `migration-v*-methods-and-properties-deprecations-02`\r\n- `migration-v*-constructor-deprecations-03`\r\n- `migration-v*-removed-public-api-deprecation-04`\r\n- `migration-v*-component-deprecations-05`\r\n- `migration-v*-css-06`\r\n- `migration-v*-config-deprecations-09`\r\n\r\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\r\n\r\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\r\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\r\n\r\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-rc.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-fdsqVdxRF9u8sEMZ4zxBkiqNvXWuECdHUHxgpQelVgzccsRzGf8pM1R9CS6jVlT954UuacuCp3bHi1Q4zR35Cg==","shasum":"ac9fa2bdfc9a2700e07e0e87cae110f29aee35c3","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-rc.0.tgz","fileCount":797,"unpackedSize":956815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft9x+CRA9TVsSAnZWagAAOjoP/3hZ+qWZ61LHTPB8drUL\ntRsXXtKid0EpM0v22l35ouAr+KhstufQwgEnkBxQ0SiA/zn+ywPhcK923V9d\ndCPJccEynwi45Hp9qoUEepn2v4oOhqNwruIb12tnK0shTY4O01MftsbnikW+\nm/ew6v0onFIbGySYnt51SScIzYQ6wgywtSVK0F/g4B+cluGVdjA/wZ2BV78f\nzux7Q6NFQrL76CP3Em64nbhE03U5IMvy7Pjp4LAh7g0E2DJM9WTM9vT2fbhK\njsPDg8t6ETRfYqdDJRn0ucNbCrAllo72POFxv8I+8M9j9ivBLdkjDlAHDlQA\ng6Btqzxwd2npoL7mnMtsDXG2W8mbqzbcGJp+O7d0Stu2S5CRHvdgcM4q2lbt\npSVXx84a96SFIVHve5CSYW8uSblxRX3ILrt+2LmrWvmGicMqBW529+jH7hLV\n5EchgjTgO/EKrXCHl9cq2tLVzDY2PCJ6frU31V235uhYofNJVWzqA445sVCm\n8hq2VClM5kL+Z1uwz8Xw/5Lw6jdGnjqdcHV+j00ww2bjjUTIZj7jERON3AJt\nlEax2JMeogt4PpzbAhw72Vdj5AMBa9gRPlZSw+rNsCzafFqz7uB2oG1MLwgg\n7np4EWS+jpeAOkN4TA9wBjCgfqLM43TnojgNWIN93KTOfkbzvxJamkRyuy5l\n61Px\r\n=chbn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRPtw+HajOM3Fi00t1mhM75MiG87aIyBZULLFzC58mYQIhAJ+GQGiSC/tr1DqDNjDc1sIXmZno7BFrkKoVPxaDZUXp"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-rc.0_1605885053665_0.9523980829445047"},"_hasShrinkwrap":false},"2.1.4":{"name":"@spartacus/schematics","version":"2.1.4","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.4","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-Ddr5JV0AAOFNDvJ+fxKUaEEPsS0bU4PiMOE1bGtNOkEu7TArpsW7wc1YHpUdmUCMrvDYDyAIBKn8vEcgSFc+1w==","shasum":"fad6b24c91df0d00e0b3adaa08292f1cbebc4d3e","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.4.tgz","fileCount":422,"unpackedSize":545043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft/LuCRA9TVsSAnZWagAAU8MP/A5KmO3fGyjd89uXjHo3\nEoHYpr5q6QFI9Bumby2aWTTVEuGHcv81rUvzyrqB5voX94FcITWuenpkS09M\nKS93g+RSDu+bJTxNrNDlqB9EKTwzWuxh8FQkBLSkAYxFQLkUsErx7UP8pEhN\njiUz3bWomz9YRJAQZLGhsYtBtirvjdsG7+AtM+qm+9Xd3VNQG1wS/b5wBdsA\nBFUY4pWD/kRZ1zaEWy7SE7vSqiL2HwAIk4SHIIAL+Rl8KWNdKeQDREFiwxht\niiMKBVuF/h4miVnRNhLqBstSX5oImvTOSJab8HKw0gKEDAKZzpamQ9F4bFSe\ng7gxW/3XFBtg2fMJTRLWT3GX1snFWjLrgbbvdAIXhfsGc9rG5Nt8VfYaCHL8\n2hTJ1buOEfrV35Tw8enS7C2lN/dPbi7LPNwfWgrn7rNOcVnh7JhTGT2YWZRX\nKBGe2ZG+wyciu8c0L33iEC6ncwPV3IhcTT6tR2RYgWvgdcti3JCf+l5zeMyS\nyMUZxq10ChG7lA0VYQi4Kc6oAQulmzabD1oh9fp+zTypjqYBxJftx8jjZwwQ\nDvJ8q73Pf2GdYtAPiSJ8z7yzQHzs2e8nSmrnx0lp8z8iYdIc0r0JmuYXrPgv\nDjYTvw0v6niFLrBeJwvXQS3vLBHYQmiwbueH7Q02t7z9rxpg9o8Ox8Qz42A4\nxncn\r\n=8OVp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHNKDIYNLKxBLdUBANAHr7UmMX+1tn/Wx0WQ2f0R5Ef/AiAYQIOFEpk5z5EvsLFG/ajzIv9uiVvmlscqtZ9DdugedQ=="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.4_1605890798426_0.7031281837846795"},"_hasShrinkwrap":false},"3.0.0-rc.1":{"name":"@spartacus/schematics","version":"3.0.0-rc.1","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/misc","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-rc.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-+ex4ojK/O4YZ94mAXqYW1nBpo4Myrbb0KVMf2bb3WKAxZ8WUP4vVyZHkixE8YEuaF46pUxBC7iPl5Mc3OiNuEw==","shasum":"11dd2599aee8d05c34e8745093ecd636f6b6d1b4","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-rc.1.tgz","fileCount":803,"unpackedSize":945887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvpIyCRA9TVsSAnZWagAAO+EP/RJpnOB3Z/eWlJtKp1As\nz3rHRiLX0zL/IB+BkNj5Gwh21CH3POJk/RuFcSzVvzUfgI3mitI6fdUofKlp\nr91LACnBD7hgA00Sn8hzyV/LktGrpo7V8R2hWAnxlBOVikgr8o2ZfHVT4aye\nrg4umdMQKRZPU8tGyq9B/aUuzSAcb1bgeBmA3Ke2HEpRS1m2GMxWvHQgABXl\n9KGBZlBP/MCpt4CO1DoZSRY0IjG2b5jWZgWcaZ/kSRHznVXoIzACzqmOGZZq\n6eJzlUJHb0iY+bwBTmEgY3mKH1rJmF5AtfPpK+Mgx/2mG1B0NLGx3zeodbGu\ns7b38RFarbkPZlKiFqhBuKulkGq3vkKMTlW33jYvELvJ+PW7RZN4fgiwPGfw\nyEsriToX7ZmdXLgvJqdFNTUoV7gr52/KFc0dTMYI9zv6lDPId9ig5I88fyfU\nDGJAGISWpTTqbX0WDCe1O2levck0/S2EzhJB0PJxjFdw2cXv+daHh50t/FEf\n9SkKa1C53HsWHDksDU9CwdS6uW7TXT5nhFvOt33tXuWpVy4RwJvbXh0fnEOy\nmoWdfrXrzdZhK7FdzsBLonzRCAlo6oOhqHnlhmpj5czoJwyp3QniFZBPGqO7\nabD4g68zkt9EjA13tIcb65es43aqJEuxxZuUYiyY5gDmiCWElYVKC985N3e6\no4sE\r\n=5ilW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJ7yBxuVZD8dNlyTg69AUtedNWFWEQ9PZktIwLOPqUoAiBHPXvZjdoIJAUfzPKH9PWIyTp8Fbgpf6SACnLSIccAOA=="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-rc.1_1606324785943_0.6251787789702579"},"_hasShrinkwrap":false},"3.0.0-rc.2":{"name":"@spartacus/schematics","version":"3.0.0-rc.2","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cdk":"^10.2.0","@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","@schematics/angular":"^10.1.0","@schematics/update":"^0.1001.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/misc","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-rc.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-reKu0b/b4qoIP1AOVqAvySkEvidKJVpf2HddscNWBWG3T087hyvdYQ0l8t2sQbWtDxzwHCOPTT/laGW+cKNZpw==","shasum":"7c598439385d1a65c2033d609876db3a222962d3","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-rc.2.tgz","fileCount":804,"unpackedSize":1033426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfx53hCRA9TVsSAnZWagAANFAQAIdkFaUTR+Y5Y1QRcRoB\nEU3D68RZwBCnBxJ4MHSj+n/yHtmroTq2cJZbyH8yXR6l3wEF4m10xszT9gXl\nDTdEAvlwbxLZN/Zwdk0tCeRFes1fGG4M7tZeJq3a5Ha2yfDjSyYneGbc6iwh\nj3rz6+yOUf2edJgL/lJJJ5oJfTY6NdwJNMHVvfA28tA/tuLHhACFEo9OaFf4\nEJa9zv5RVRSKvUi2uZeK5JiihiXz6X4IKdDBy++pmTTT+RUkqbyA8/+T0K+e\npR1QApfvQX2G2HWIDxUGJG8wQki+CNMRrto7yluWJNgOrV7kqwKRfWEA7Mou\nWoBHETjU7JDevpOdmIaF1QamcIvzMu/VQnLiQfC5am94MVcZ9Tbaqhrxjxkw\nxxhaC+m7Tu+RqkFLgwyCOm1g4gyv9DnuteLVyr+fGCuREM1VQiVkZOR5RFkx\nwEolVjiinXZMzves6huSeERYbCw5tFc6L86tHqnD05SjG9t5m8jeMPxeTj/6\n5EQjNb1IheOawro2dKtm7k1Hg6f6X8KcVa3J76ouhK7DTVNpCEoeifNintNG\nz8BBLlk9tYu86HzonE00LrpdpxEYm4oygvC/sPYQMa5U9lKwSHa/NhZ4P7vP\nZmxj0AKgIrwo+t2XDCBmjmPHhKSYQd2QC975nNvMCOyWaSHoLvkoEK7phaY0\nPS0t\r\n=vAYF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGPi9bjeQ4tB6gb4jhRaH7XGjkT/woxo7OACch98fcezAiEAnpka9z7xJka3hV5reo8NiKs9NXYQ/OubaG9NiapvOgw="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-rc.2_1606917600668_0.11103907854189776"},"_hasShrinkwrap":false},"3.0.0-rc.3":{"name":"@spartacus/schematics","version":"3.0.0-rc.3","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular/core":"^10.1.0","@angular/cli":"^10.1.0","@angular/pwa":"^0.1001.0","@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\r\n\r\n## Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\r\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\r\n\r\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\r\n\r\n## Testing schematics\r\n\r\n### Unit testing\r\n\r\nTo run all the schematics unit tests:\r\n\r\n1. `$ cd projects/schematics`\r\n2. `$ yarn` - to install dependencies\r\n3. `$ yarn test`\r\n\r\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\r\n\r\nThe following points provide guidance on how to achieve that.\r\n\r\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\r\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\r\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\r\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\r\n\r\n### Integration testing\r\n\r\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\r\n\r\n## Developing update schematics\r\n\r\n### Verdaccio setup\r\n\r\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\r\n\r\n- install it: `npm install --global verdaccio`\r\n- run it in a new terminal tab / window: `verdaccio`\r\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\r\n\r\n### Using verdaccio\r\n\r\nCreate a new angular project:\r\n\r\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\r\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\r\n- commit the changes, if any.\r\n\r\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\r\n\r\nThe next step is to publish libraries to _verdaccio_.\r\n\r\n### Publishing to verdaccio\r\n\r\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\r\n\r\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\r\n\r\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\r\n\r\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\r\n\r\n#### Iterative development\r\n\r\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\r\n\r\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\r\n\r\n- in the testing project:\r\n  - revert the `package.json` and `yarn.lock` changes\r\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\r\n  - run the `ng update @spartacus/schematics` command\r\n\r\n## Update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n\r\n## Releasing update schematics\r\n\r\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\r\n\r\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\r\n\r\n- `migration-v*-validate-01`\r\n- `migration-v*-methods-and-properties-deprecations-02`\r\n- `migration-v*-constructor-deprecations-03`\r\n- `migration-v*-removed-public-api-deprecation-04`\r\n- `migration-v*-component-deprecations-05`\r\n- `migration-v*-css-06`\r\n- `migration-v*-config-deprecations-09`\r\n\r\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\r\n\r\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\r\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\r\n\r\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-rc.3","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4CGWBuxDByWMU8htdVJ6GycSU8HvU0fbIBvEv8YFdx3y9bpHZ1s61zJPrCBX9vZ2lQZNm0T16inWsBPUb1szlw==","shasum":"e7e9f97da1475b0613285f6af611e14c6cf14fa7","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-rc.3.tgz","fileCount":798,"unpackedSize":977256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0PoCCRA9TVsSAnZWagAA2mwP/2RlESoZ6KOfE58+b4/w\nQkxQIg4/xJYV3kZsbzeWJVNmr+vG3tK8DSvtquljzUNhYogNZ4XnPJf8TCxS\nTbgPSDCUj4Hl6mnE15cNfGvVzgVvMH2LbxM38lQSLRNYVYzceXJyzV3LYSMo\nNLDOBmcH8qS+vwQm2T1wbEiSMQQLSlx1QRe+U7AC2nToUMD9poXzU9JcQJZs\n9ZQIu7qmvBSRyo9xOcrpJ8wJ+jQv2/UhQolTMw3LOY/ijwdp4L+3NAoOhKIE\nWSffhi+NPjAwcx9SJSEjctzF0e9WjJJKxXUqCWmZ0JOH3RbVaTBZs3DBvpAK\nWeimbfJtqz9aT8FD6hAwRImybDFahpA09Q4U++q4zgtYLh/pke1S+7dLQ/7r\nkU9gdnAtcN7D8ZfalfIZLd3LRRdngJCSu9K2Rcag8+Eg+B2aHSuxBjn140QB\nxcAMIX3It47WhDawd4Y35CWYTVMPf31cYROUdWLgFRqHCRAKSG3N9mbPPGam\nRqaPfFRS5yLA9JYFooHwLpLNHbSwMuvumk2nO5c1yvrtXm8M58NQMY9Ffcqd\nC0K/k+uNDTDl5n+oB9opzeC7dWjyzRQQBV2QuOTQZCldjT8Hmt8Qg3GTDB48\nv5mJ7sWj0iumuPAEp+0WGxQezfvwW5TeeR9zIQ9EFZmCYL0u/w/o4khxSM2p\nyYE7\r\n=+sih\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDo0mbL0DeG9C7ez/BwT2IqWAHyo5pnskQI5eGNkAJJTgIgMadkb5RjRpLj1jataECbKKl4Nf1GtDXHXBoL5XvYxe4="}]},"_npmUser":{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},"directories":{},"maintainers":[{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-rc.3_1607531003738_0.11419446748649764"},"_hasShrinkwrap":false},"3.0.0-rc.4":{"name":"@spartacus/schematics","version":"3.0.0-rc.4","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\nNavigate to `$ cd projects/schematics` and install the dependencies using `$ yarn install`.\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing update schematics](#Developing-update-schematics)\n\n## Developing update schematics\n\n### Verdaccio setup\n\nTo setup a local npm registry, we're going to use [verdaccio](https://github.com/verdaccio/verdaccio). To set it up, do the following:\n\n- install it: `npm install --global verdaccio`\n- run it in a new terminal tab / window: `verdaccio`\n- create an npm user: `npm adduser --registry http://localhost:4873`. This is only needed when setting up _verdaccio_ for the first time.\n\n### Using verdaccio\n\nCreate a new angular project:\n\n- `ng new spartacus-schematics-test` and `cd spartacus-schematics-test`\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- create `.npmrc` in the root of the project and paste the following content to it: `@spartacus:registry=http://localhost:4873` to point to the local npm server only for the `@spartacus` scoped packages. From this moment on, `@spartacus` scoped packages will use the local npm registry.\n- commit the changes, if any.\n\nYou can now run any Spartacus schematics related command, e.g. `ng add @spartacus/schematics` or `ng update @spartacus/schematics`, and angular will pull the Spartacus schematics lib from _verdaccio_ instead from the public _npm_ registry.\n\nThe next step is to publish libraries to _verdaccio_.\n\n### Publishing to verdaccio\n\nThe simplest way to publish Spartacus libraries to _verdaccio_ is to use `scripts/publish-schematics-verdaccio.sh` script.\n\n> Before running the script, make sure _verdaccio_ is running: `$ verdaccio`.\n\nTo use it, just run `./publish-schematics-verdaccio.sh`. This will build _all_ the relevant spartacus libs and publish them to _verdaccio_.\n\n> NOTE: if _verdaccio_ refuses to publish libraries, and shows an error that says that the lib is already published with the same version, the quickest way around this seems to be [this](https://github.com/verdaccio/verdaccio/issues/1203#issuecomment-457361429) - open `nano ~/.config/verdaccio/config.yaml` and under `packages: '@*/*':` sections, comment out the `proxy: npmjs` line. After doing this, you should be able to publish the packages.\n\n#### Iterative development\n\nAs building all the Spartacus libraries every time you make a change to the schematics project takes time, it's not very convenient for iterative development. For this reason, you can run the script with `skip` flag - `./publish-schematics-verdaccio.sh skip`. This will skip building of all Spartacus libraries except the schematics, and it will unpublish and publish all the libraries again to _verdaccio_.\n\nWhen doing iterative development of the update schematics, it's for the best to do the following before testing the changes:\n\n- in the testing project:\n  - revert the `package.json` and `yarn.lock` changes\n  - delete the old `node_modules` folder and install the dependencies again: `rm -rf node_modules/ && yarn`\n  - run the `ng update @spartacus/schematics` command\n\n## Update schematics\n\n### The update schematic structure\n\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\n\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\n  - _version_ should indicate for which Spartacus version the migration is intended.\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\n  - _sequence-number_ is the sequence number in which the migrations should be executed\n  - An example is _migration-v2-update-cms-component-state-02_.\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\n- _factory_ - points to the specific migration script.\n- _description_ - a short free-form description field for developers.\n\n### Validations\n\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\n\nSome examples:\n\n- adding a comment above the removed API method, guiding customers which method they can use instead.\n- adding a comment above the Ngrx action in which we changed parameters\n\n### Component deprecation\n\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.0.0-rc.4","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-k990ZAerDzXaoWKdBn1dgm28PeXRhGwQYoT3YxdIEWpY50Ls7hyIKdeHJ8JZUyWyeUQcZMhmlc6eWWKo3UwhXg==","shasum":"3b5af5346466fdaa31894b76a05614197a45227f","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0-rc.4.tgz","fileCount":798,"unpackedSize":964373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2gpFCRA9TVsSAnZWagAAPtMP/1W3NCmV3493AzK2/XRD\nFcL1hrfkLXdvigdZk+0wj968BDF7IcBA6xvFAIthwST5e0s+xwZ/9vPbMZxc\nmHyAkrXE20mLw9+izBprYbnWMI99OmWlYKfemx6HjfE2EPatMSD61ieaRdVl\n5RXdHnqrjjxC93TqajtdX/ayw5dZGpZ3OwumM3HyaoNWF1NCMAX3i6GWKYdY\nmnAzX6KqRv1bzRztchpUI6lkP0KPjbqonk60HglaWCuI7Qa8mUSEq3kb80jq\nterXYEI6qwmag5lLTS+Pf142RprssfmJKqac82/97Gjlo6fDlnez8LHBjgxC\nngOOx9oAMtQfmAu+CXaWwNWgtZEQiXaL01irvNcHCYKVcPdJf//LkV4prSCw\nt9lLUnG22lQdjSuQn69TkOvrTVxcCeASQH4/KoNcWoBglJxRvdWYmS2HgjmM\nTnG+5LBF1+OdqUdV3wu2wu3blEvVMW4kgXo9g0bR1/jvw7S8mc9aa7Rs8p+q\nyycXoSx3I+AfwrhZ4xjk114JrGoWGBL+p7bTTaGcyLJkFr3mwuWC7ix72lpV\nuwpOZtl06mop3oYhd6YqQ4BJNyBxuI6RuGWxnL9bL/23vAkng3EUFjBJxz7B\nx55Fkpqja1K/ZewRGT6OpUOfwIlhqdS0wAeE341cdp9dvDg4/4fCLubwNpS7\nNPO1\r\n=Iu9l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSTi7nnGckDBKppJkn8FODkwa9/XvI53b1puaFK75c8gIgHl8ssa5OSKaL7p1yqB0hNGHt2/SRphDaAiIF22TRyfY="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0-rc.4_1608124996678_0.7809980208021239"},"_hasShrinkwrap":false},"2.1.5":{"name":"@spartacus/schematics","version":"2.1.5","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.5","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZVvIF53a0b0GoyrXltWqb2H0L8hsvVgR3cbAdISWYkjeaI5djrtqAJr9p/ULgpsnOxVup4pyRYIwGX1gJOgJZA==","shasum":"8a9e1e5fe9e32c22354112069ffb9494a050da78","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.5.tgz","fileCount":423,"unpackedSize":618474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf22AhCRA9TVsSAnZWagAAdkoQAITKMJOjJBT8GVNGSdYV\nAiGjhhAvizIMraOO+Wx+7Vt9TmpusZxTNlsZXnTMnLmP5WwlXh1wnzTwlPK0\nBMCnVvWQCXrwiVOhaipKx12bzh3+zGSduVgWo6+GEzPfPFM6c3gD4tHz4v3d\n38XL/Ejg2T/CjO8M48aWIeQUZh9fVdb5qp+krZPe/0L1NrKfTfNbsru/BReP\nC/E2BfIrVEd3d2CVO/ucYpXdG1CZQmVpJk/+DoWFVLKNcrSh60lbIQoLyR+Q\nFm73qMXtCJgcZ+sv5SiK1rblNEP0eSKDhlWSOlca0yCwaVbXhJBYwDj627XA\nmFHYB1SsgY3GNnI4l69qgX+OrqBzkpxLVhOO1uE6U5h6GEhJHLB1z/zjUohV\npw0j0aOhYtT3gC+GDcMF2gEqPi9gsOufza4LqDw0G7f0PFvKZULVT+j8b091\nv6gVFy2Y5xP2Tl9PcpHQX6mDOsTfIvLXEBlPfldw2i8SPTf3es0X9HtNP2W0\nmT70hLqfOR1glZifx+yvOfeiQ/3Y859+sMMBk33lA1Smim3xe+WWpWLTe2D4\npI8f0amDhRavORWPt7lgpQdewt4uhm+3AADjgS15yv46kZ2sTPoQaEfee3tn\nGdcLWvDNCWbLAutR90TxzJg8+rNU/wIW//YUtA+OFAjb4SU3yAJXUi5QMgeA\naQCW\r\n=n8+j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzuXcFlDhsZrBNurvQTj1ky826pZazo4JObW7EN0za0wIgZut3/lr+J9+4nKSd/LbTjOy6B/USGhNWwZ9Nru+OSGs="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.5_1608212513413_0.09135696591976417"},"_hasShrinkwrap":false},"3.0.0":{"name":"@spartacus/schematics","version":"3.0.0","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","_id":"@spartacus/schematics@3.0.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-to4YsNVWrZ37DsxoH9LZQUBwlXtO2XELuRSXIEDqzZNWcC6q5d6Lw5izYPK2tGQc6kXpiFw6ugEWJqana8n0/A==","shasum":"5b265ff45614198bf52ddfdec3ebe20daa6f07ca","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.0.tgz","fileCount":798,"unpackedSize":964323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3AtHCRA9TVsSAnZWagAASJkP/39LMDYn4eNArgCUS2nD\nxCMDWX9I6873mL6DemFt+MYpeNGwzTjoRyXY2Hh6LfYaQ0ZdkTCigQEaHsmc\nJZHl3/Kp5nPuLIib00e4WtnlFudB7/9olHKoHhT4m4SmKpOiCE2113Ox89dZ\n3zroZLR37Xo4KKs/5s4vntaYA/fMf8wLV8hdjS9uJftPUaEc4dqJiL7aAyh2\n026z9Rdo6eGFWlitWYcoUCzRzrBl4fj1k2WZwzjSLjo1E1ZRiGtYQMmXNVrv\nTRiwaE7+UQZYj7xrPeKm4t18jpEvxfFQFMD71auSyKp/ZgeSsaM4d+eLKHyj\nnMxk5+R5Kati/U0XVJ+NCePUAkXD9XvPBrtliIBDiyJ996Gg1f4jHVHYJ5X0\nyq2ggVpZfR7TonZ8lOpOzlGh98O9uONBbVGrz6G1ou+dOuIhcdzwICNArfQr\nN+xDZRiijmrX3jHORBNtjUzcJ8rvHHDXRuue9svNyqAo/7AgcQim0RVqWdrl\ni6Rs/5jlHzn+L7BMcaPH2zrfL4+Kr4+xjfXs8wNlQgMjTTjr/FS3FrlzbAyZ\nDXoKivnjiRR+R4YCvztNFY2i/rhnUaeMg2Mqsx9cmXAssibNF4JPPzfW9y6q\nQ2UErXYriy/Mssqq4mJO/uWDWBDnRUYVcnfH8Rx2l39HiL2EriPIHUvt+ySN\nJYlN\r\n=968N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3CnwyO5lBU8jXR8SkkOKji0/RZGKMml9UsZa5zZU+iAIhAM5eDuOnMieKW6vFIlZIdgzdsqf2Bvt041O8WZDHyscQ"}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.0_1608256327055_0.5308924858215067"},"_hasShrinkwrap":false},"2.0.9":{"name":"@spartacus/schematics","version":"2.0.9","description":"Spartacus schematics","keywords":["spartacus","schematics"],"scripts":{"clean":"rm -rf src/**/*.js src/**/*.js.map src/**/*.d.ts","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.0","@angular-devkit/schematics":"^9.1.0","@angular/cdk":"^9.2.0","@angular/pwa":"^0.901.0","@angular/localize":"^9.1.0","@nguniversal/express-engine":"^9.1.0","@schematics/angular":"^9.1.0","@schematics/update":"^0.901.0"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator"]},"_id":"@spartacus/schematics@2.0.9","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-yj9iAaGn5i7puo3hpYdZGf/6M75BkEx6FcexrU9C4nOyiYwR8jOtmj6D1f2+fSwkOMomkjAT4Y8dQa3jPdsZWQ==","shasum":"e6bc43a6544a87e8a67d9626b2fe54e2d5119791","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.0.9.tgz","fileCount":412,"unpackedSize":543516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAqWgCRA9TVsSAnZWagAAgKIP/iS8BK/vlBqgiRMHnb0C\nbSx8e8enzdSq2TOx+72dk3KQNk8lDlbWS0lgWw5Rv0H6N8W80eSCFzBFWxoU\nMmC/awgGgWmXQVmRZ9KM2kmjMOFcRnuyrGprZagdTw9uzu6dyZt6R7zwaMUk\nVBuukF2YYyVekS3briMHgr+NzTw0LDqzJzcflc7WtW9e8H1MELWrWG6Zofst\n9UDjQEVZRReB8mqtnGp/A8njK1g91EeAQfoD1943qf8+VHpRwdTzg4mKKgkZ\nJgYm/c0agL0W8s8PbH0bObLIhtZweZga92elYWRkji2bdh4EbY633GRixNsZ\nwYLrqfbNQrgO25fzO+RSw6VVVi/0VWvLOHol87JijZSw+DMl6jKY21NN+/fC\n9/Z22wp/X9Q/r0qaY0DXi52eApOhd1b1rA8QIz0PE7fFdFuNNZP7WyeFlNz9\nOjZ8qEasiiO9yv0sTuWj/5+qr3qnXZa+2zEO+yQANhalg7tkYKgE4Dg9ABbT\na5Dm5lPcF5id+Bs676CS4IrbX/n4QkAVZGmCtG5OAetcCKsbLOwfbf8MR25n\nmvFdiWQKzdW9bCZ68JrTyemXNVA/1Xfms9pP2UiXeQztxFwdVzkLFEHJ3bmR\nrFJgEGEupxdOEP8Eiyl5xTYXkudNUsY/SecxKllpIZmgWejet323ulFVLtYP\ns7TR\r\n=ahXy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFpWTjp04g+P2jFfCtv8IHDZPceaYvj8HI9845HgwIxXAiEA6aG5jY7aZH6sS1812uRoXMF/jFloGU/7+qLi3CIM9CA="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.0.9_1610786208346_0.07058514691685724"},"_hasShrinkwrap":false},"3.0.1":{"name":"@spartacus/schematics","version":"3.0.1","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","_id":"@spartacus/schematics@3.0.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-5ySC/yRIoKi6JFbpqEq2BF+6WMHWjmDNkWoPHlU9G8LYGQ0fKYPuVMACSs8lKFHjmz9hsawZz6Uw0frJdUXYQQ==","shasum":"bb96d323973b425ed430caa751f8428d53a9c8ab","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.1.tgz","fileCount":799,"unpackedSize":1052120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCEfYCRA9TVsSAnZWagAAWsoP/jV0QoJQZKke/Xc3mf+x\nUsszbUWtxjCHPdJtQwa99QgeOQ8QZyZRsXFSkd50ct+MD9Rh+VTgP64VVTSQ\n4Svbqxsw1T0Vg4ndoUDBKMy3rZRFwv5s68O0pD/ZxYIT56+tFQtvltwtatT2\nRwqhSSG3755zJya7e1kxrkwBG/mSVaj0DJ+gSNLe8gzBokkIWGtaAPFx0wwI\n9zpuXl9K1I18pSsM9pxldftdboXQ4sQGoUugTCGut6bBaUugyWHwB861omao\n4BlWplP1OxSOjyYC/ssGz4IqCll355821tmgbu7fuYRYqrHr5WWzE9k0E3AB\nVG9nQ+nrTf9gkBhE8xnMta0pc+e2aBWCOdsiHnzn/Sv+7yuAd/BUzvAWCVqY\naTbFgbgxxmtm79q01KOBQp0hSkpzmzscTPITb+RzTUcxylzjDIiYJSKHYHJU\nghJPyk5WFqF1tB09forKWLyI2EzlPKtJknLMuekGEfdJJxw2lOABWrc40bSi\nEGnCuH6TLyHx+puvQi7dyz9NY5CeBURAXN13x4WU70li9D907BGuy1kCyrVZ\n8Qnf7Drop/am3E4wlRAdxlxJfj/cDqljAu4ToRoSR4l0cN/H5RsVTTcnoHzJ\n+WI/teYhEay5ltz3Zeqbpou7snj7fb9kKOr7IvPnvFU/Q0yM1AQC21I4ksVT\n0kSA\r\n=QtKy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIECBLIPME6SO/cBJRDB4Ja5+lFTbsA9emoQUzyx744gYAiAs2/2FBbXbm4KOZYSCWN24c60niAcakEHTOIMAi+0XjQ=="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.1_1611155415947_0.8381443266497084"},"_hasShrinkwrap":false},"2.1.6":{"name":"@spartacus/schematics","version":"2.1.6","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.6","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-N8NeBMlBD/wgfsDKdkZgfxvFa8vfeDjxXeyWWpJKOqoJQefFJ84Vycsz2iYyYGBrGl0xAwRZ7KnFwSkURC2M6Q==","shasum":"720da4835636930a80aad4488d14482d2079d603","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.6.tgz","fileCount":422,"unpackedSize":536685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCUc4CRA9TVsSAnZWagAAG80P/3cY7iwMzwzU9lQ1Rm9G\nKdHTRuxSWPbnJ6SWMzifiq5F0x5cY++3ubjw7z/jHSbIeWepOc3MhmoWtgOv\nGKF6v2PIT6O26oCvm/MMTvmF6LFmJiZFRKCZ8RDhx6vt5oVF5Ac5usPpQkdR\nWQxWtyM6RJfQJGTAOND3MLbWQ58WL82rZc3vPpawhI5C4uO6gcEtWIQjLR/n\n/0WBXNFO+tnuC0i5Od9IWyG1tu1aUhlFxiw3HZihKfQvVmB4R9PUmF04DIeu\ncWmt+zIxCR3C3chZSQ9xliN1SYmZjoPb5fCuTBvUbsoGnwNxBuj3sQrDN5Wp\n3QaKNT3c7a6eg7uDXdCnC9LgCX8MUSwmjugvnXnM+sutGTMMEneLts/U/1F5\nfIgUzOKDNB/gt1DYnyF/hFyN6qo6kDHroVlEMP1JZ4pAEq7FJ8HkEfldC41l\n5oPBnGFs8zVdPlNvmo9G6MZBX2PNILU23O5eLx/rcKRDTqPkDCVTPUQFFkTZ\nqVMswxcJdOKSnulytZLH+Zej+OMnYwCQkavJS16xMbt7RisL1YVPTIo/+Fvf\nJKaYORUMeykZyYxiLNm5PjFrkcGDVmESOjdFVfC1rD2BFRlcnnVyXCRE6Lko\nQsCrJoDbMwmdHlLrEOFialxmVEvW9dfm8cgpXpvjWDqSkjV4AbACjyo1tZ8+\nSJTK\r\n=BYRK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3G6MZKS5AehW5/jE2Xy1JQL4hfbve7Dr8aM+22sEQagIgctHM8ooWnl2mnKeqAZafeZhgQrihTG6AQE/PZD/6ODI="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.6_1611220792072_0.23772908206784837"},"_hasShrinkwrap":false},"3.1.0-next.0":{"name":"@spartacus/schematics","version":"3.1.0-next.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/localize":"^10.1.0","@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","rxjs":"^6.6.0","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\r\n\r\n## Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\r\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\r\n\r\n## Testing schematics\r\n\r\n### Unit testing\r\n\r\nTo run all the schematics unit tests:\r\n\r\n1. `$ cd projects/schematics`\r\n2. `$ yarn` - to install dependencies\r\n3. `$ yarn test`\r\n\r\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\r\n\r\nThe following points provide guidance on how to achieve that.\r\n\r\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\r\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\r\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\r\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\r\n\r\n### Integration testing\r\n\r\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\r\n\r\n## Developing schematics\r\n\r\n### Preparing setup\r\n\r\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\r\n- Create new angular project `ng new schematics-test --style=scss`\r\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\r\n\r\n### Publishing to verdaccio\r\n\r\n- before you publish for the first time make sure you have builded libs or run `build all libs`\r\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\r\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\r\n\r\n### Workflow for testing schematics\r\n\r\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\r\n- try until everything is perfect\r\n\r\n### Workflow for testing migrations\r\n\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\r\n- commit the changes, if any.\r\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\r\n- try until everything is perfect\r\n\r\n## Update schematics\r\n\r\n### The update schematic structure\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains all migration scripts for all Spartacus versions:\r\n\r\n- _name_ property is important for developers to quickly understand what the migration script is doing. By convention, the migration _name_ should follow `migration-v<version>-<migration-feature-name>-<sequence-number>` pattern, where:\r\n  - _version_ should indicate for which Spartacus version the migration is intended.\r\n  - _migration-feature-name_ is a short name that describes what the migration is doing.\r\n  - _sequence-number_ is the sequence number in which the migrations should be executed\r\n  - An example is _migration-v2-update-cms-component-state-02_.\r\n- _version_ is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version. For more information about this, please check [releasing update schematics](#releasing-update-schematics) section.\r\n- _factory_ - points to the specific migration script.\r\n- _description_ - a short free-form description field for developers.\r\n\r\n### Validations\r\n\r\nIf some validations are required to be ran before actually upgrading the Spartacus version, the \"migration script\" located in `projects/schematics/src/migrations/2_0/validate.ts` can be used.\r\n\r\n### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/2_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, but they should rather describe the constructor deprecation in `projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts`. The constant `CONSTRUCTOR_DEPRECATION_DATA` describes the deprecated constructor and has `addParams` and `removeParams` properties in which you can specify which parameters should be added or removed, respectively.\r\n\r\n### Commenting code\r\n\r\nAnother common case is to place a comment in customer's code base, describing what should they do in order to upgrade to a new Spartacus version. We should do this only in cases where upgrading manually is easy, but writing a migration script would be too complex.\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method will add comment above the specified _identifier_ TypeScript node.\r\n\r\nSome examples:\r\n\r\n- adding a comment above the removed API method, guiding customers which method they can use instead.\r\n- adding a comment above the Ngrx action in which we changed parameters\r\n\r\n### Component deprecation\r\n\r\nSimilar to [constructor deprecation](#Constructor-deprecation), `projects/schematics/src/migrations/2_0/component-deprecations.ts` performs the component migration tasks, for both component _*.ts_ and _HTML_ templates. Usually, a developer does not need to touch this file, and they should rather describe the component deprecation in `projects/schematics/src/migrations/2_0/component-deprecations-data.ts`. The constant `COMPONENT_DEPRECATION_DATA` describes the deprecated components.\r\n\r\n### CSS\r\n\r\nTo handle CSS changes, we are printing a link to the CSS docs, where customers can look up which CSS selectors have changed between Spartacus versions. For this reason, if making a change to a CSS selector, please update this docs. (link to follow).\r\n\r\n## Releasing update schematics\r\n\r\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\r\n\r\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\r\n\r\n- `migration-v*-validate-01`\r\n- `migration-v*-methods-and-properties-deprecations-02`\r\n- `migration-v*-constructor-deprecations-03`\r\n- `migration-v*-removed-public-api-deprecation-04`\r\n- `migration-v*-component-deprecations-05`\r\n- `migration-v*-css-06`\r\n- `migration-v*-config-deprecations-09`\r\n\r\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\r\n\r\nPlease bump the `version` in `migration.json` only for the migration scripts listed above, and _do not change the other script's versions_.\r\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\r\n\r\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.1.0-next.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-cxqa2g03FjE/LUtBeRzc8ySGS14Wu2LArvKf43kziQjTb40fXO/jDYIs4MwjzaEc4/velY3XiRyOJwwhK77b1A==","shasum":"a0add54d8588ba1f3a62e27d045093edc86bda92","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.0-next.0.tgz","fileCount":810,"unpackedSize":990768,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEsAWCRA9TVsSAnZWagAAaBQP/37XoYv9kLKXLo1gKqWQ\nzDeb4qoudcIEOkhHVsPUzD2oC6tvINnf4guv59DnEwAjZ/yqRD6n6XJqBTBb\nE67M+vmf9j6PrjqyO7gFGJxPZYD8oUsQn9FHWas65XbejWlbr3LBTyA/r/Qg\npK09m0zzWet/j17kcFAtCUVy4heZpvNiG8y0myS+Excvhmq1RoHhgAr/014D\nm+oOIIeghYviHgsltBV3JD5DGRLkD90M96I+ViPeMbuVVbSiUhkMhyRjPF3b\n0LOAMADvdmX+v3Y4EcQec5hu+aq0PlCQudMSPu+1WFlmXo6KE4IZkPwlCdbW\nEkjho90Gl76TqQzOf/s2oxWLmXtILiJA1kOg6rWtrIbiUtBUaJvJoWRDiFMw\nBNvvNFJ4IOmuS8n8tO4F3u3pkqk2L6EFfxWBt5IkXwinMbsanNCM5mBivvmp\nBH70uMif1F0SZOlwMZXfeuJ+UJu6U1N/ktg7J8RoKLKlZNQY/3P6KZE6R1gX\nbybTjAHqQq3bvvPrBDy/jisVHfAYT/GlWAtBqMHWBSV2ANQG8DNgVzdev++c\nAAt/nifx7P0pjg5IQ7/wNoM2FhPCTnz/KfptKtCYGCTbFcJvwPB0I8aR2vVm\nqYjUmNOnXy3/tZyI2fiOTFNpTZzS84vyCHhNfEe2gIYOwlE3vT2zfZf20bM0\n3zjj\r\n=3SJ5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPp0GPo1QKiYJ1daFZqfs7kLUvhK4vTpL2DgvqGnVsrAIgeEQJQ3ie/Ll86U20S8bWG1B4kLwkp1fqJ5PW4cqCXDY="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.0-next.0_1611841558218_0.76734074635913"},"_hasShrinkwrap":false},"3.0.2":{"name":"@spartacus/schematics","version":"3.0.2","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","_id":"@spartacus/schematics@3.0.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-dZJV+j1BaMcBQPVbS38C6Y4MtKJvRYcJitQneEVC4wk1cugNkuV9JkvNJhclvdQotpMFyJ+Enc76qeHl1+V8Zw==","shasum":"da5a923a0508bf33d3401748d3b3e2802e432473","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.2.tgz","fileCount":810,"unpackedSize":985145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE80FCRA9TVsSAnZWagAAH/4P/28gw+9MD2qMrALEGq1e\nbeTYEQjLVrvIt3uhHQmLQsqdP2LPOpB5UR9uDst//jOxBxDirBvmjI/kQW3r\n7f8lPjv8ReQ73j5dni63HUv2Cf/eNMJ2/lo+nMp36XA4YHmJLGp2dnoiR9Bt\ncUZ7FD0lw9PdBHPAfUomFlru2qaA4ZOESgqgYa0AderHDm8yuW++myhssTIa\nwMc3oLkFK1b5MW8z6GrxZN6G9k1YqFRI3fComxt0iaE2pmIfpQRfFLzVdSc/\n2MGwyKK3ygL90/vwjIcPKjkr6W4EHSFkUyL2yajqwuCm9e5Jvj0536Qx0P7p\n/3C0u4IMKJ4CoVwl0kDYOUqgXDABeazU9HDpPptsb30ezuEWF7LzY2YR+6gj\nBD+gbx4bj9/eEKDVQ2pIA+3lg5PS8BvxBlUf6DELcZJAMM08rmlwYMbjtjUI\nekgqA0UFBcwjxgtIDU6CVsyirkYemOHZh24WrcEkI2OjTHpHAp8DysNAUXXS\nbNaot8hpJ0KplMVS56qFmWw9EqfF5wMxeUlDNfptRegsaKMAnlX0jC1f5WIM\nZMsLDXeWpwrcov9QhG9A+aC4tueUG0g0EQ32NP8qP+eapbfgAyY9I/s5tmKf\no1m5jsi0sF25Z5HzZ0zx32c40YBUqs64Lsyf20i0a4IY1ZlsOmGIZ/viOYlB\nsk59\r\n=Zyzm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXxkxGPopqffdTuxTbRrVQlKlk1lHZYg0l1nP1r2DyCgIgFOqgfKlivuw3+SFlqkTU82jXuEmHZtp0/6M+W+EKMRA="}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.2_1611910404862_0.0895875090009981"},"_hasShrinkwrap":false},"3.0.3":{"name":"@spartacus/schematics","version":"3.0.3","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","_id":"@spartacus/schematics@3.0.3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-lIulcYcZESK9vgoMBrQLswfaFW6aaYjeEJ5tKMQjyoNFzG34kjujITdSO7tpR4gTXOWYjSy3ybm1M3xN6L9wyw==","shasum":"6a901f2fd2a786e44102772a4442f164165b2be5","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.3.tgz","fileCount":811,"unpackedSize":1062290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI+n/CRA9TVsSAnZWagAApZQP/1hWHB6OBhGOlUZiWALr\njRFaRzJYeMH7X9PISotRBQq40WxgkqzZ1OO6tMp1ujheI7hCfvWsSrQKLgIr\nyft8D8l8BpDpYbQcfe2Cx2R1AwQvzEkVGYXLa7ZhruM4KJN6A8z5p0TLnwnq\nghenMcld1nlrQkZMpG9YYjyHJUkOg5JcMhrKF35sVfsjiMIXQRBzBQmMGD4D\npfB3cYml/W+h2Y6dr4dSjO4L7fdpKQC+iPYI8thp6HkqwjSRyO4XSZY4cGQS\n5fk5PYDE/zpj9Zg40jNIlqlFf9Wqlq7ktZpFkrJ3WgjNCxcIPkObsx+r66lf\nw0zxI3Bp6YFdkyxh0mxzY9tf3C0HFHUVpNIjoSWhJnxbvzG1xU1oh92Nj+DM\n1Rx2f7d5uC/kHBwkICYCHVSqr6F7qb5wyBA9vhkE7jx1F13dyyBl7xjqaNkP\nTBBSNToQIHHdbU7NKhFE0KFG/xzVm220DcrsKqD0JDO7PYt7fM6FGf1SxE5o\nTHefRWUgCQOcqsoacecYNoKUbCtxLY+fGmbmLtjHd4zKT1OvyuhNWKsts69r\nTaMX33JQ0g5OE6bGHkiyPPeUQ5dcTEoDoWYwMDnRI6w0nfoErRtH03ySyMD6\ndIjZssmV6jTeAJP5vtYvs9xvjZgdriSC4a0JDMJozIlpCUba6560tw6lU4S0\noVnw\r\n=sO8m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBLcSwoYeDd1tYP6n6GvNYSeXz19UzcFLkJ/To1lfqE/AiEA1rGcUlr5JKJQgG9iK3PWew1OmrgddgFc9QK660pSvhM="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.3_1612966398534_0.6167232933587243"},"_hasShrinkwrap":false},"3.1.0-rc.0":{"name":"@spartacus/schematics","version":"3.1.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.1.0-rc.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-VMk8PUpC/zA9R2wsPpbqfL0xqnKoKnHFcXYR2lSpIngbSEpwPaKC2CppW2+GuAQegT+SiREMrGJV6VeMqsjLNw==","shasum":"4c70421b6c6ba5e129d44c39d4e22c46ab1d94df","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.0-rc.0.tgz","fileCount":810,"unpackedSize":977518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJCvQCRA9TVsSAnZWagAA064P/RxP+hdiJw0DOXPkYzxt\nXA9rGJJYZjhIxWztcF98VPnzhx34B6BRj4pKjjD5yqLb9gizVqOkNiSWSgMl\nP9heSebJqXkPs9MFIZUx2Uv974hItPbV76Gvt9x5enaKPhkD2EP+/9KedheB\n/H3MKie550t2ZXSq+lLTIyZyF5jy87HjTD8h9Ch2+S7NXvqIMC8Lu5tNvEQA\nisdBeCwRNmpti07b9wAYp8+SRKCP4BYOhpL6+xbkirvi7iurU59LwYceoyq1\nmZtFkGAdJbSk65KEyOEvBfiuiMkvhS6HiERhArMHvcqTsR1/KKi2YEJPNAKq\niNQZXVslF2pXVA6BOS0UrU6sT6poDJxHbV4c+jqOM5iIzjSHZlEl+bOk/Lz0\noOLeD481GauXXeP6yMbPn0Iazo4BvhZdEzdKk7Ovv/IDHcy/0e+F7v0U41Bl\nK9HL+PCsReLkDVIJQE8XG3uChp52wjS1nsZLAEOaCPUq4MiR1pctiwetxsHj\n18UUVgptomuyQlFAoqii5CxDpYyr9vwUBEWVGcCCO0FEoB/ccuLlPDA43ad8\nT9onwWpfYpJANgFHWq2ltadot2i3ZLvIdL5FWSMi4AXw+wdj+nFSEsxUU76v\nie3M0TK7Cu6i4RaSKe2K1nxTf5kAOTEbSHEDv9Q49wC0T/jV3umP6xJYX0ym\nlvtc\r\n=qP/m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHjWyiiQQ0vuhibhSmMnxW6/7HiW2xpAPk/QKuxFxc/dAiAqx+x7/C/MfomVcu4vmMd7KEK7fBa1i2pqPUa28HIOGA=="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.0-rc.0_1612983247983_0.9458473766261772"},"_hasShrinkwrap":false},"3.1.0-rc.1":{"name":"@spartacus/schematics","version":"3.1.0-rc.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.1.0-rc.1","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-jTQniA9vXJgjFuUIx5LO9WPmGzauZkVy3i2DOqS5ymN8tulvauCfoO6KD5JSejxAPuM3JcCVDpvebZdbO3GcVA==","shasum":"f072c05a8c698b84a80c4eb86c9c0aca83135f95","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.0-rc.1.tgz","fileCount":810,"unpackedSize":991381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLQClCRA9TVsSAnZWagAAy9UQAIamdOq5L8ojgLMkwZKh\nFdy+6hJV65tT5+f37vX1GFrrVP+ezesZzAA7LYZh/ofmrZyAINrBMp8F1wPU\ncw6qSlLMN2JbAHAuLQukUArPHC315LrcJLjtmwx3jpI3Mf2FSP1blG3XqafE\nt4d5Mq/6FK8w5jk3cyFxlHWdn7IjwTpuSOr3MmGqxLa8DuuC3+mS0ED8SNKv\nD5CP38B3CDkMWB9KQOXvhbZUcO8T1eN6id5/+yUXnVW2N6Iwe36rIoHtYxEH\nPk596UaTofrCbv1dsdF6UqUhe5caxwCVp4WtsaN94xGP8K1mhYKDN/CO57RO\nj7oFtSQVY0Jyw1IBvH+3GQjA64Milxy1x+Z+0Dvd3kCpq7dgDq2p3PQtbVy0\nv8j03R+wU8VWqmPfR1SuDGhJYqiXP4aKcOOtJl0THqa6qrG4Wj9Y074w6UPW\nUrkEZJyBnU5wdabeD1XBACAy0UVJGVYc0uhwzEqG5Y5uXR3Hrla9vUCON7Tv\nzOSZGBN/PBXYlaUShKeXgNYXIy3FZv3Xufagz3wLztXD26VY1nondm5qPc+a\nLVk0SoiPOQr1dajjEz27FbMh73GLQXnD5PDrpp8wv/LJcQ7z6p9jOvgWMEbG\nnOk08CbYT+Y4diA1bkhccn/N+1OrbtTCsf8WyQjilCHu3pYJ2D8/QTvdbUvm\ntRYr\r\n=jVfv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUKS9yeVaUQZlUcuDMR36UbBAym4GBD8n6AXu6eu1XLgIhAJAbI502k8EZhzpokDuD6/RMAh2x4OHtiQWoTn6JBxIy"}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"znikola","email":"nikola.zaric.ns@gmail.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.0-rc.1_1613562021092_0.3942197868602486"},"_hasShrinkwrap":false},"3.1.0-rc.2":{"name":"@spartacus/schematics","version":"3.1.0-rc.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.1.0-rc.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-Lb3mGS5mK21vMxkkATEGwgymsK/iWbkDhjW5P3LTl3Flcfw5jwNJoQNO7hhD8uJZi1Oirg6qw/1zKeG85xkZdg==","shasum":"a947cd52dde80c765a9a26a7bb5f6b42e51e5322","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.0-rc.2.tgz","fileCount":810,"unpackedSize":991381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLmWJCRA9TVsSAnZWagAAxswP/2JmvBabckeAwKTBJu3o\nF8D4bibLGIjUrXgKb/cfbSDDrzTZxjLgb3CkAtlv5VOa8SeL/NkL+loegmAF\nD6O9oNr42BvX6ds+tviq14se7xYJaieDpYW2oGu7i0UMiPj5Jj9JL35VVrYK\nbnQwIYtr80nQo6c6aL4eXq7owfGN9y1GYEWbVPrYV10fgNElmXmuyzFeAqMX\niVsY//stlVCH2D399H/JBU9KegAME9yQPv0ngBrAEhp+q9HfsGqs3sBies6V\nABxmEHn3DTq0EHCaB/bWQ8c20KLlyEC4aPToEQ+FeQfmhEm09VPc4iku6EAu\nxqdtyeceDiNxS4RS1ltjLeUXCgXR6jMIhnRGTaizHPXKIFGeJAuSRIwG9xob\n0T8yHONDiscPwy+ct4mG+99etYdAgpsWvpDRKkA5eZYM0tRWMkcRQur4/zj6\nbej1RTzSYPa9r34IGmoyr7SE0oFjE4m+9ODgfJ1d3ZMlPm8cuMyB56dHpP/a\n0PN8fz5neIUyvvxtpnaJM5jOTLaXJClqqUZ/erGyCHF9YSJNnH/EeHxdQRM3\nWhB4LlcDqwAQ/fkmh3VyHJSKDmZJYy14Dj4gAQHNwECApXiKF5kiX05hlgrC\nIokChSsrTlRDDnDD/vAlE2J+MkMwRjvVQotjA+JHjCq5pUisG7X+nHnKNc3C\ndkCj\r\n=lAXe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDLdVesRVUh27yGKetAc9oriMmlaws+/2D45KBbTcTjbgIhALNcLXnJiltZEL/SXfVl5reVBk3r9RB80RzWqRpY52x5"}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.0-rc.2_1613653385143_0.8579370194357661"},"_hasShrinkwrap":false},"3.2.0-next.0":{"name":"@spartacus/schematics","version":"3.2.0-next.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\r\n\r\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\r\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\r\n\r\n## Prerequisites\r\n\r\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\r\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\r\n\r\n## Testing schematics\r\n\r\n### Unit testing\r\n\r\nTo run all the schematics unit tests:\r\n\r\n1. `$ cd projects/schematics`\r\n2. `$ yarn` - to install dependencies\r\n3. `$ yarn test`\r\n\r\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\r\n\r\nThe following points provide guidance on how to achieve that.\r\n\r\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\r\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\r\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\r\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\r\n\r\n### Integration testing\r\n\r\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\r\n\r\n## Developing schematics\r\n\r\n### Preparing setup\r\n\r\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\r\n- Create new angular project `ng new schematics-test --style=scss`\r\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\r\n\r\n### Publishing to verdaccio\r\n\r\n- before you publish for the first time make sure you have builded libs or run `build all libs`\r\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\r\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\r\n\r\n### Workflow for testing schematics\r\n\r\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\r\n- try until everything is perfect\r\n\r\n### Workflow for testing migrations\r\n\r\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\r\n- commit the changes, if any.\r\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\r\n- try until everything is perfect\r\n\r\n## Update schematics\r\n\r\n### Introduction\r\n\r\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\r\n\r\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\r\n\r\n### Migration Mechanism\r\n\r\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\r\n\r\n### Structure for Updating Schematics\r\n\r\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\r\n\r\n```json\r\n\"migration-v3-constructor-deprecations-03\": {\r\n      \"version\": \"3.0.0\",\r\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\r\n      \"description\": \"Add or remove constructor parameters\"\r\n    },\r\n```\r\n\r\nEach script has a set of properties, which are described as follows:\r\n\r\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\r\n  - `version` indicates which version of Spartacus the migration is intended for.\r\n  - `migration-feature-name` is a short name that describes what the migration is doing.\r\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\r\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\r\n- `factory` points to the relevant migration script.\r\n- `description` is a short, free-form description field to describe what the migration script does.\r\n\r\n### Validations\r\n\r\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\r\n\r\n### Constructor deprecation\r\n\r\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\r\n\r\n### Commenting code\r\n\r\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\r\n\r\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\r\n\r\nThe following are examples of how you might add a comment:\r\n\r\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\r\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\r\n\r\n### Component deprecation\r\n\r\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\r\n\r\n### CSS\r\n\r\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\r\n\r\n### Adding a Migration\r\n\r\nThe following is an example flow for adding a migration:\r\n\r\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\r\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\r\n- For every breaking change, you must do the following:\r\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\r\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\r\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\r\n\r\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\r\n\r\n## Releasing update schematics\r\n\r\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\r\n\r\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\r\n\r\n- `migration-v*-validate-01`\r\n- `migration-v*-methods-and-properties-deprecations-02`\r\n- `migration-v*-constructor-deprecations-03`\r\n- `migration-v*-removed-public-api-deprecation-04`\r\n- `migration-v*-component-deprecations-05`\r\n- `migration-v*-css-06`\r\n- `migration-v*-config-deprecations-09`\r\n\r\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\r\n\r\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\r\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\r\n\r\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\r\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\r\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\r\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\r\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\r\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.2.0-next.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-2Cu9hO8KD1TMevn8o59WrynFkGMUINK95xiUl6jvpifVebKmOeAecQm0jm/QtX25VpjZtsVODX+c7EObkhshRA==","shasum":"c337fc487d8bdc2b86ed0565ee726b46938bad1a","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.0-next.0.tgz","fileCount":825,"unpackedSize":1008966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN1W2CRA9TVsSAnZWagAA3bUP/3y2yAyLDpLTFH6Aloun\nWnm+6jJSn56BWHb0joXZkTEkeTrqT9UacV9mYxaFAo3tgE0ufuiSUeHfCyj+\nHUKyTJ1lAjcb1z+4cPgzToQdNC/3hKKw7BxVsw2UYC1nf+DcsFlC1qMiphS5\nCmM2yT2KZyvzfMSF0K+Xyib6sOL0/svyeqBJ1r2pRIafd4ir4q0V81nqpYGN\nlht6a6Q9DO02JwAphdd/mGox/dSjailPgFD7gTKTYnb2DqoBQdonnycOs0WV\n8AdNXAnM31AhvZVH2jzpIKGwyXJ21XBan35EsZSaHHCE+ezkmavV4chZ7pB1\nrxmttOVGbM2IY22SSN/OiDoe9VcXaAgm4iu8hBuZl6Q1wWqh1No0Bng3cyoD\nxk6nfXlFltbnHYKvJqlfib9zxri7PJqMDLSvYWiO+BKdUipruHJVnEgtk011\nWJier9y65nNxNUR3lwNDaMV9bBhO5HiYMcOo+LYTawhLJt8KVRjwHXXVS/6o\nkDn35b1niweqDAFZMgdhYYV8UrmI7Jx9aIxarhmKYDz0hhLdRcQCrawWg3IE\nuaDo5JIL05rC+cLujWhPhu2nFF69uAfSbUn30bqt6++pWL5oHpzGE5cnH01Y\nAOW3JVr6yna2lEm1nOfSw6+vT0UTFyQlXx9TIFLBaxKDIOucQJ6ASmcfpiNh\nO/a1\r\n=7RgA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH6I8/+eoV+PqSBi1N0Owit49ac7uSSn0qNPbPAHBUBgAiAKhaDaQQ0yuzhPuCECQ52hLCnvuUpZpy/UydaP+thLNg=="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.0-next.0_1614239158332_0.7643563601235308"},"_hasShrinkwrap":false},"3.1.0":{"name":"@spartacus/schematics","version":"3.1.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.1.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-n9blaFXqFtcJm+A4nqHkixCEx3V4pzbBALfmsTXmmT/fevBXR8B+l05j8dSBKq8YtaND3nPFy8dwYixUdCKYmg==","shasum":"60bb5ab5f890c0be772ae64f3b2516c1c76bc74b","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.0.tgz","fileCount":810,"unpackedSize":977483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgN22DCRA9TVsSAnZWagAAlfYP+gJdExipKX8cg9EavoRJ\nnvs+ids5XPd8aYJuafCTIPpAVUaJcaau07LgvT0p2X5aVM+/LqkdLAqdkJcp\nxmxi4q/kT73WC4kGUEz3VF5pvx2TOT4SP+8PQoQA/AYOxEyAz1A5k2VvPMGP\nRM/5PRLFOy4hLHF8dwrQuFX2H3krwtm9KuIDWPN4g3zqew5f45ofaEsTawk/\nONR2nkgxj7SEQwr07Q25eyEPuyMqm0X36hzETAVMLPOAw+/QbPVYFdfbmUw6\nf7+Nbgep4fNSUyQgIDDe2XVlGPz+j+yxRo3IgmWve7JJ+fDp802oCC5402X4\nsdyWTj8QZVkvw/5cte8lEJeN98XNeHjbEH6FC4IMCpdKUMl/2oVUDflR5S1f\nvRTS7rINvtiEYJjCtulPFh0HJZkQ1bjlCveddgoNsW/20PlklJ5Durw0Vr2x\ntydD6Mx9OLL8MOCVLyuOe3hLUfV4kf6M+YFkEcRIYApoHSEcud7S+dMzxfiE\nUJduSNJo0uzPm24arvzWc1fcmzjuTVmUAWHDe04OeXTu5cYgcUq65cfuXkAU\nesWQuple8QWZG5RXczma8eFU9qmul6qnbf7MO5CReaaiUwNeKMGSSgrxYD46\neLInge6RZvnbkFPUr99FjGxWXBvRnNTx4OqD7j0EbfmZfEijRtCwhskq6lNX\nQDiK\r\n=Rszu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE6v4vHGYM63iS7DkvIExAOQlY+6CG+SKd7bHLhY+gNiAiEAs1z7I6gGnTyZb0BiLlQ1oXSz5CiwXMkAH1aqjwbmn4o="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.0_1614245251113_0.003394481445811559"},"_hasShrinkwrap":false},"3.2.0-next.1":{"name":"@spartacus/schematics","version":"3.2.0-next.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.2.0-next.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-JlC4WQ/bwGjKXXYimWCyaht3BhM9XXWgNG7jcovElcEW7MuuLzOanlQ/YzqJ0j9l/UMq64SCsZ+TMOr1svGgJg==","shasum":"a8b011e396c0eeaebf1f1f520121cbadf9775986","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.0-next.1.tgz","fileCount":826,"unpackedSize":994290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQRFICRA9TVsSAnZWagAA8gkP/jvB8VRhEPDrcjER5kMB\njeRTP344F/3lP+bFBfMXdgtsLwXlu5H5788fr+jOvnasWWUYReH6lI/AK2ER\nmViiZL8Q/zCIH4Aq6eyp4cGCjF4TT1PuRAcFftuT31cQBsI8RZctZeatGEGF\n3AmNHA+29w2bNjB9CEmyOGae93DXsvflJzc70vK8hx0Tru9PRA+Cwr4PcuWx\n7gynrFiN40DZ/xAa07tP2NTuChLxXoHfUGEGW3e5nSuM02W0BCLPGtWq1jxe\ntagiA0XAjQluCQMJhIbsNFrHzAmo/D+CoHgF/OKJOMI/ufqXVjGTaQQzt/ZR\nHodPzA+d77gHVpTSo0iyz6EeGSIYkxY9/rvaErLfhx6g16NiBWJbXvIYTfnb\nyC67CkZHITiAvHIHuwR7VnrtiAmwmegAywYeUJEkAhMJ+vpcABj+D/zd4lD6\nuIJPtzFZ7W0619eF5hfgpaEOnOnRmwflZzCTlu5DIp1BhOgy/QFEG3LPIVCG\nyWSOc2xRyOocq+NO8y6nJfudoLTlusL0XSsHyjLWa2T+ymBisJ1mVGdqsIrJ\ne4ao9/bH5cTutax5wEGBQExCEZwHTKscZ6cspzyrCuu8L6t6ZDQY0Cm9kfZD\nzbDiINrlaRjzvX7PW1yeoX6W8pm1egKW0jZi8CB/o+XEq2mUvwmtCDxT0JFq\nWpYH\r\n=3O8Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0/dQEDxXq1A/Dg0sueuc7MTmmJtyzDyzNyjnqyYN6JAiAxrdfbLx2MVDdwJ8Y2Jz+5pNPBZIxVnkBOKmx/nJdo/g=="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.0-next.1_1614876999574_0.8450545586465839"},"_hasShrinkwrap":false},"3.2.0-next.2":{"name":"@spartacus/schematics","version":"3.2.0-next.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.2.0-next.2","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-Fx6SxzPFjqXZu6u8OwAOAiwlCuoKbQnkdQ6z4CJbUZ3cXOqXtd6pR91FMd5WKZ6RoaGtFCrXMzlfgy8smAMOfQ==","shasum":"273ce06e832ef884d6079bb1fb471bb12d94e94d","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.0-next.2.tgz","fileCount":829,"unpackedSize":1012535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSiZhCRA9TVsSAnZWagAAAbMP/0wxwT5HBYfWYfoPir7w\ndMpuvQNqf1HwTk9xzMuzs0t5h/3Pqn6oVk6X7BEF4dLbY0ghjs5fAsKyXrSf\nS89nunUKbsWMYv3U8lnBqqF5pXuT8AxjZKDti3I1tyBSz96Zr888gdTZWmHy\nO7Fy28faz9ai7kwVm+lIZ4oPQZA4Nc8MWuRmYPG8+WneGXFiAjS8ecp1Aa1W\njprJkc4aZBGomvvghhgC82og02P35fp8KKBLyEELj2ZR1Hjpq6/i+iUUQv7Q\nQ16+e9lmy2KS7L3YB8W/kdcgCccoOOaG3LFLy3qxkGYLe9EFEQc5pNfBfiO6\n9WhgaNC5jnq+jLO7HBbTO1KTTOGJxfIpAhm9R+v4BBChVAA4TP1KAp4qbo84\nob2055HR82+9pPyA4TKJbMsnRHz87LcE4tl9zXkI1spk49I5siWitzBWSjas\nQx8exdbP2sQ9EKCTtiWjWCXcb860glKJz62cNpBdK3h1hmKFjxRU512JjDNh\nb6FFqY5Q5xdh3AAc4dSKkzBybyC7HJ0aY7paDtiWDxZlyZbQ3EiRqbzm+IM0\nQLAeeKi63oz4rl/nw2U7zrAD6nPaXKtyHXjAr5pxDX6qawYzxDHiyQcfDMzA\nJKQ6Ql/GP0117u2KujRU6MUDfbUoc8C7q3XYlElnWIsJU1lDptxfg35WqDbC\n8PG+\r\n=HKsT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHnDemi04Y6dtw5UFtyauGuB5ZvBli+Quc/U7uXFUzt5AiBuBGv1Hkp5715w5e1lEQ6U9PgVEgRETSwbo70DmAix3Q=="}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.0-next.2_1615472224910_0.1572294084739061"},"_hasShrinkwrap":false},"3.1.1":{"name":"@spartacus/schematics","version":"3.1.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.1.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-IDayf2MP1rbv2EvyOn5QXqY3nifkgXjb/w6sgIy1l3EIj1Hjl+2H1ycUE0JNwSfKtO8jEVM4x8kXW3u5r0oxDw==","shasum":"c41b38066fd83016df94e10361497566e5ac08ef","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.1.tgz","fileCount":810,"unpackedSize":991510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSnUUCRA9TVsSAnZWagAAusIP/1iQi5KEhxMW2NjZQA4X\nzWDDqGBEk5gqJNJBM+4RbuzWtbDB90Imk5gYcUKeQg5rhfoZJNrOy9wC6AbV\ngkDegT5lm0IOhWmOwyqcd68tMicL0KbbYiSxerSzUFC2QPjxMSbVsp79C31+\nNqOpbHUS3Bc1zB+m6F3EXygEDyORfxr4Iz00XD3th/3agCCkDk+mz8Z1RWR3\nshqjiFFUpXRTkAAxPOuI4OiypULqCLxeZYy5Gpn1PL9glRtLtNWl6VB3xpz3\nMaDC8Ye4G2LyVrIe98cKUvhlm5keTPxO+4wEAcG+AlEOs6rrOK89pbA4rHHW\nCT5HR8fzmMaegF3XL8N9qQtHOE8l2KYk0ajw5NAKAdEU2CM6VkcOt2QUlzR+\nrMy0WmJb47vguRBIVXYHSdk3vw1O9iOLLPLI/fXNLHRIG/xQ0RQQy5h42c9a\nXerTVzfHR5GtHxAUi5i0j/JwKhL3JV/boyrGStfNcshh93HXqw7BEO8GYyOg\nMISYNM365RyYaOwb5cXQN2CZUbfTHNWPE+McrwxYsD8yRYgSVzk1ZTx266Qx\n7kJthDkEnw1Z3FL7ouMx4Nw8eIQPKnNe2aW5PTxqKrcphN8pVMxeV8H0UUOR\nx9ykZvK0Hs22iDmhCU5JuhFe4PD5PMjs0wCZ5N6y7js/3B/aT7X3paH5hNm8\naDa7\r\n=Shaz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2n/7QotjFIMC1ESaTHr3nksDMD4tukAeEOkomAIN0vgIhAP2RMM/0ba8a3R4B/btwMeSpAhWhw1VX3umYsTxM744y"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.1_1615492371877_0.48488705947776567"},"_hasShrinkwrap":false},"3.2.0-rc.0":{"name":"@spartacus/schematics","version":"3.2.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts`\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.2.0-rc.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-H3p0wKcMFCH2jhQm3HonScFp47Munp9cSQ/KcEaN3j8kmOAxAidKxwH8BniXgtN5KCfxnPd1q/bej9OR3e9m6w==","shasum":"571343059274b4ddddaf645c43d0ca4f9377ca41","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.0-rc.0.tgz","fileCount":829,"unpackedSize":1012595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYgxGCRA9TVsSAnZWagAADZYQAJ+ZYi0lXNZRwzhXZcIs\nEwU66f7QNe95hx05DJi5p0L48QJg7OLR1TzPI15mdVQ827a362vvYJx/KvdO\nt9obe9MwcwlVdunT4/T8Tk72fI7DFL00Wg3+V9ZkBMXz82bgF/N75QHkWhfX\n6eT5XdqPeZOZSM6X2HxRv21mA7ibnHbl/997UhXubiMu8+MIPy7KKPCxANDk\nld0IY+kHJPGIBpbtky38LO5n04czmCCmYKHQx1TzQfrNG2SAR05OFxZba5Ht\npk8TM6yJUSWXOjUNPmfOaYAhapAuieNta3dNLZvPDLh8Ww/iPdwQRK71abOA\nmU31PTq7XMrEzpmd+Mh5oKs0JcITysLgMpaBUbqJuTQ1gXCrO7LhUcjp01UN\nQjor0yJAK72TJ/9I7vVacH7pJ4NqarsJuGsJQ0+IqiZxRTu+Y/x5oCsu1VlO\nbuO08Y6Wm0rJiWL1eBTAVlyDqnCWhK2W24bK/eWQZugRHc+BVF55z54oOIC6\nBX0jE/caNCJnW1VnU9xcYZUqD6OALi+zBWFonuRZ5HFJwpEBzvH55rFBXvjw\nZfihfRqn2Qpb4zN5MmBzg+EZocyPtJeNlHpZCcXZfRLNuUNmg0Z1k+zHyzqf\nrjE5mBk7uZ3P4SmHYREFUz4YDG6DthNXK9g3jClr4OmcwrXenLCGNCwEvrGw\npQ3o\r\n=BgIH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdDHnBNzSaLXifIFrJVG6whIOxb4UjePbF7Ul7nJPytAiEAzEGqBZojkp7NR4BG2FtbKMv/hprOnY3o1j+nxTkoGhQ="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.0-rc.0_1617038405495_0.6748155178259407"},"_hasShrinkwrap":false},"3.1.2":{"name":"@spartacus/schematics","version":"3.1.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.1.2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-SXwI0KixXXsZ47C4IRAXfj+EUyHsEyeQv0ljPMfDDuAYgznvZ6NmT3fhQxoDIzELgyDIEa0OpwKSLt/dbRjSxQ==","shasum":"a1f7efaefdbec3a32f94ae1f8648956b031ea22c","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.2.tgz","fileCount":810,"unpackedSize":977483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZN+UCRA9TVsSAnZWagAAECMP/0EaLhBZ284gPGOnpA/o\njQ5mN6atBlgIYPyCrOXwsDqngMlEEuQtNMq0r0bavcD7Vurb6AuPHs9HhBhr\nGl5pqpDxskehkBULZsXyE7WxNiAblAdQNvCjGXWSDoBDo59Z7LR0oQd1T6Q7\nUt4KV7MxpNjo/+WaHvMgLdJ+IJiErwPod4AikwF7wErXn/2TY4Fr8eHjGokZ\n6YTdf+gK5c/XvMRdTqLe9R+fV4iJP6Fn8PxgRVeXFxppj+hlIYThSh8pLcIa\nRcNhDoaumKnOaLmM/JU4PFNc2oaFKrfX1cxAhJtc5AfmIMmLkk2Uoe8w7KK6\nfJHcVl40BuTyP1OorkMO7RZmHS+W/7chjvYsrsDlPniED90Yti2kYa5Db0XC\ntpr97bmnsXs/gtAJ4ycTC/TVJG3VPgj8MkA+XDkfKl+Iw/NGbKVYFsJK8ZjL\nQzlaQOaJsURo1qc623LhHEcEHO8Ez+XtigRXF2u5zJzm7J6LaOBx0GAD9LmE\nXTpLkuui4mOXRuHAJtnXEL1JFATv+bDPBNtsk7CoGiZtwWsmK9jauZ21NXFk\nO+3pu72NXcXTIsI4iqRS2Q2GCtkDsVr7duKb713KaVnXS0jlgAxfdiPHpoTi\nIWqFNg1m/y1HLU/g6jCoKsw7fmYsELWDEgAVwyKW8iS1RjjKhK05qzbPX5By\nU3Ou\r\n=Y2kT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHp8gH/nDigITesR1fOs514nZ81GAPyiqsb4JtDKMRMLAiBaVjdHrM0o7TKU18oP+9ornXQJg6caUHR7s/8lUs1/BQ=="}]},"_npmUser":{"name":"mirkosoft","email":"admin@mirkosoft.pl"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.2_1617223571811_0.8924299531694886"},"_hasShrinkwrap":false},"2.1.7":{"name":"@spartacus/schematics","version":"2.1.7","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.7","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-dwiQ1iIenoOeLwAzI4gpx5ORsHAVJEOp2cHZ4Z3hn6pqIYUTEDf/nDZwee076PvcWLJbOir66C6zN4i10T4H6Q==","shasum":"c25a0cde3acee656dc16702edc373162d7638318","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.7.tgz","fileCount":422,"unpackedSize":544841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZz6YCRA9TVsSAnZWagAAThAP/12/72VLMdSH6TP7AH7g\nMk/bc+RU6ehUGtZksryhi/caPc4cPMDlILHn47FSFM/sAb7GsljdiMqtDeXs\n3JfL1wedhvX7aKrT2sAh17iK5fcxiJVrf2fEavfjyDxc9Ha0LZE20MKGh1XX\n7oNNl4eRrnffDv4DOIdjnr0a1ykJEyasUGH2N5y+rg87zlqFspRdfCSVv8dQ\nkqF3/YTR+djc9x6HmGTc8bxsnltr+e32gDWKocJ1TmAKpaL7dudsjXstXyJv\nH6RDljtwwbeS+e1R8JQF3zT2shidms5KqmC25soUeQNSNVMZdC8O7iXDsQoX\nFJR/GGjCcmo8iiWzB+5KrSpyyyDyLvOEV98ltwsks+HbuGK2V6x1oIHOBBMm\npaKUXao22QLcshAwbnADv80XrVVsfdSsaiY2reYjatLQMhr9Ucjd6NsGiA7J\nVWEfT2XDq6nhuxWM4K33nyK7PtCJXCGBH15/ZiietuvSudIZt22tkXSAvjK8\n1aVnRosfXDUUSJL3Hu6/4oQHewwanVdtuImSrnnUMCAe6dK7h/8/4RrW10Et\n+yAX6S88iYomfWnXJyMzyaI/RoqzB2mDTIae0Nu0rGfc6yisrVXqope/dN1+\n1JEMpG4XjFizNdsmskLSXGoqeJuTvlzHm8JXQyYvGhABKyWs96fHFduAaNPN\nmkCe\r\n=2wMO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2/ONJBrz90p2a6g+uzT0rzlBZtto2qTUdhGPmbUVbGgIhAL13CaFt6qqs6XQpKlPMEAWxBkAgJdz3JD4HSQbUecmX"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.7_1617378967820_0.836107139230835"},"_hasShrinkwrap":false},"3.2.0-rc.1":{"name":"@spartacus/schematics","version":"3.2.0-rc.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.2.0-rc.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-DkgORkc8jpo1ahX1mcA/Fp+15gm/TEF8boKQ2R2XAmgwjh7Wwc2iWCcIwwWgPla7U0vjZ/P7Ph4bTJaLw4cmZg==","shasum":"555b6baa5d8b5c364d17d6e3d3d46edc36b0898d","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.0-rc.1.tgz","fileCount":860,"unpackedSize":1090128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcB8MCRA9TVsSAnZWagAA/j8P/3v2dG9Wp3OSxdJ9QrLU\n7u7JYUztPJ22DLv21T9ws8tZe5WOFFMUljnorkk6od3J8F3YSRVCRIcuMrs1\nTvI0xy54ZfU30pds4QBu5WHY0XM4ct2IMkMnHSq0PdJHdWc3vpcHsmv1e2JK\nRGJOIqsO5H/6IAEhoziDDowJeDJ4cw2MfpUr8SSBcYpvh+V3BE53FZAF9we1\nR5x5OfgHfrLc4j1iUhvG9lDZWl8mn0qE8CA9bbHhsTUYafXU/Nkvk1jApZPi\n4OdZzwauuLibKy2mzCalrNFWrorQxV0ui9AgEx0hY2bNc9UU7hjtVhXmAVy8\neoWmJi+E5hgtdQpEnvl7oezTKwsQMAisfTIv33XNx8uGesYZCgM12fIpgdft\ncBGmfrQcw7yMrmPrUpfyr6wo1vFyxqHhdpX3cT1E3V4pmXqoUud2v0XW2aeN\nlga1rxKKF6uRs9snANDwuJqdIx8g4idUBgesK5eJVoVNI4FuvgZ96VnhxP0h\nzlMH/BNdtgU3wX1vvPVEwTRPs7b/F0lEJ6WJHOLx3oCukc/kX3HPwz9LkLKi\nbY80XS4NxcWVxHmLWM3hqV7Fu8EIOWJZ+CX/8UUB4f3bXsuYvIC6yEL8/4k8\ndrseEQPNugyWSM1lt55lg6BmmV+ZKmvS7qrr8eUlGbAJ6/q+5fxkCS9YKVhz\nPo0g\r\n=uGHd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4TqaXGGZEQcz9C1au+rHvBL2IWupYQMGST8pZOXQ4dAiAQnkqd9NJN693ZjhEZGuF/yaYbStFypvu6NklfnBKzPA=="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.0-rc.1_1617960716023_0.9297644578203328"},"_hasShrinkwrap":false},"2.1.8":{"name":"@spartacus/schematics","version":"2.1.8","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.8","_nodeVersion":"12.18.2","_npmVersion":"6.13.7","dist":{"integrity":"sha512-yrFKbTiW2UrL6wEfcxtvpS+LhcFNDNZAch+8Ske9BbHLP8W4m/+eM/LwdXrI344Mz5CHvuPxVw+D9jt8MqcOFw==","shasum":"26f49a6bc94454a3d3f8b70e64bcb278919694d2","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.8.tgz","fileCount":422,"unpackedSize":536685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd5VgCRA9TVsSAnZWagAAqIsP/3cF38tH6WaDxp2pyo2B\nyfJVx6acYuL0eXg+alSUVUaf3P4pgG15WoH/pFcGHnXj3fGCHHzL4fkwebDl\nzGzlzHuD5Gv6uiagucTLCo4CV/uOeWVzf7a2lEfg2nJOTEgfMn+UOQ9QmeyG\n/ig1KMoG1JVY+enS1XngDcU24DpOqXBDBc4xgtN52v/pmgpCFiOvFpfK6X8g\nYPq2mcQ/ZoGE4KZ43TTKj3e87Wacr8RthVnsxw7N6DTDCByQ/66znZ1PrdGT\nBhX4uUSFkxjdOKODk7BcZp2qeCbe+v5IQdui9nQCZIzUYpJ5iR97gZGChVLT\nu5Mh9efvcox6yGlia0ClTftF8axDZ3ZIfl7j0iNJkLAYJkru66PxVnNHVnK9\n5/GUkASVJhYLOCdXQ79pPIuqRe1mAeVx0bubKyuCAOSHuh3Gf+lHk9Zt2nq6\nLFrrf8+oQxts5HJN2fJLohklvImyVsBQG4qG+g1UlF1vLEsQII7Hxc59UCvF\nSAEjT7ey+7d4CScBpcpjWa1OmLf5c+BbpIgGMnvT+Pdu09q39F6pO8SvI6wc\nnNHSFR45zLYUvAw/nFYk2S+RwnETSgOWnxMeaGr5gjGv2sACJ3FF0+Zdjlvg\nW7fNFjTSd9D9lTFab2gIGD5FNcaYO73xZ65H407uFgHVG/srZY43GjjCqUmP\nViez\r\n=E1jp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrh1cGb2TTlI2UFMbxXeN1mkXcZP5ctazotAXpqZGERQIgI5+tWOCQZHgHvC3Uewli8qWJ8fEjCbUGNRrqWr3gg0k="}]},"_npmUser":{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.8_1618449759437_0.16625411488285824"},"_hasShrinkwrap":false},"3.2.0":{"name":"@spartacus/schematics","version":"3.2.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-VC0KYl6lkVVtCfasHL4GdMLCnmYiYIGZuor/bfA31BAnLXauDxo11fXul1ctgU1bdOudopU3goTUfJSeueahqg==","shasum":"43afd8b69a594bdf15e957fe50ae14e749359196","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.0.tgz","fileCount":860,"unpackedSize":1090093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeBl2CRA9TVsSAnZWagAA4ToP/jTEaAZOlfYlbRKbhrXi\ndUNdYhjD+vs6s5bg46IXb4iJNe6nRWP68Y+iyAYPaNHlwB2cBuMT5xsZUgB9\nl9xl3b3EWJ+EenfrFTWmkWYuogw7kPOV7JswqOyaIPXi2nHmZOhgrbq9OTVW\nPOJFtES7TeuuL0ogF3mCCI6bWR+Zpuj1jsQ9FhdIWLYJFbD4ba5u7v0YjMs9\nm9WLYvjuiaN1aBC80GuwQbnwYAYbvQ15+pqjbHAuE1r0QPug6MqY6QO6EJZs\nspJXnKmlgT7QW7GT/Toiv5t4LkPLd264W5wUfm6cvr3pjA5uZoXvYa4uX/L4\nttSxjYzrQHq/RGWY7rHEetUOq/9u9uqDgB5K5reJN+kjn8WdtvAfog0GSQbY\nLVaMXQzXopnYFOgGlMCh6Pz9U0b1DZeTTkmYY0XqdCgfZ2HIft9gAnZRO84Y\n1zzarIKrelr+NbV8iD4P4FrV+PZ+Dk0qn2SsIsoLa7fu3wYku0NU1LJ8GdbA\nlCu93Ns+ldaUNHxLoddZlWWiDjjuxarT2SrbfN3KjhYmqaitOTbB8yS9PZ5D\nXQhTP9Rdy6MAz1aCJrIMpjjbRYJlgSX6UYA0QbcIeJrP8dUonDoY9LBy9Vrs\ndD+VwNKy3RY/pYJz65ObeEY0/a4/iUezF+6HsB/R1n9CRKACiVFylf+6xft2\nTWoa\r\n=EClG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICNds4tdSgxGvc/hRv2j4XV0grIP4l5A8a7fPRhBo48MAiEAplgaquTPNWE+mYmO7K7/0bd85TxdpRcqh3eqPy6Pf4Q="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.0_1618483573828_0.19128571349887613"},"_hasShrinkwrap":false},"3.3.0-rc.0":{"name":"@spartacus/schematics","version":"3.3.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio@4` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.3.0-rc.0","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-5jSuC3fnvsT+toTA/jP3SDbUP5y7dFu3TNiPRJkFjhMtyaLQnX09ykTnFVHfzKU70mViMz58vOJvkoCPo6XeuQ==","shasum":"ce982b7b2e542a579aeb6962f58d60b3a1b37672","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.0-rc.0.tgz","fileCount":536,"unpackedSize":786539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiUVPCRA9TVsSAnZWagAAjk4QAI5ee/rfMZ99xFQkjmri\nxPkHQNRCBbDF7H7VJxW7MyqTCu+Y6dRwK2KOuQpbomiL22unr253RBqDj2e/\nr2oGv65eg4JdVPNGfXah+c5k8R34g01wE/AnrfBzEOSENyuTKQL5s18miYIV\nupD7sn/E3YQBZ+DdBmYWXSGdajhRZN3PKB3J6emurvouv/XZeJH4mb8/jvMk\nIkqlEHCqX511Dn/We5vFjHOXhSRGnWsMysuGDyNfJE/7BRaewnBfpeBN7aE3\niU+wZ6EcDHdQgC7AZMcoMb5jqbuKmvyubhm90QXGJ6uRXRXCsIloL2xfqIAA\nu+Br+Si8BAnULL/1UiMl9PbguwhhpR39aiokSkHF72iYi27nsEuzDqnLRmTv\ni2ysrYl2ipuvqahOK9Q7uGA3hsdJANuLsdMnS3LfZMVxSjZivVYNdPCiFyP8\nYTXrnLGbB+QxePDcud/6M/tAA8/9tx0r09NKDIvZuGbMnJqOponLvb8ie0cH\n+cWLlGSt/8rhYnvZC3huWc6i9dTTY0pGmxs5hOdsRNusppusbvQ+xnng3rvV\nT8TLe8iyxyF8pDjdlCRAFRboAagEpaYfGixXdfH+JXZOKkVS5aWtYRlJoY7v\nna8rrtRKzeSMfxxF7L/lmgfVvvyrvEXywtHf1RNYPWk1u1SgLTW13zUStzhS\nHBZm\r\n=T8ra\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4WjgrTiNjF6zwdbQNxsL6ltoCWthCJwxgQ8VZp47HEQIhALN40iCungqTV5ePgikjXMoG0rfIsNO6TAr+F0NrrZAL"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.0-rc.0_1619608910564_0.6052576990205227"},"_hasShrinkwrap":false},"3.2.1":{"name":"@spartacus/schematics","version":"3.2.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.1","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-VeisifeRuxOSTsRxruo5gUe0B8EJPfwRc5ncB+0d5q3PuMUzbCJJA5TE9f8xNKbMmnWPhUAPqUhfWrfara9CwA==","shasum":"118b29f5bbd012e20ecf7d9e6c3c118ef47af48d","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.1.tgz","fileCount":533,"unpackedSize":798699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgimZwCRA9TVsSAnZWagAADK4QAIZp7O5s23XFhq67d7An\nmLc3ihmxd8dWtu95E4zN82fVcQyQSapfrC6IkKVkVlmPNGu/Ub+UPdVRQtpP\n0O8ynFnPgy5YGPGXZA4EbTmZcDcVabIJIJKbm2tOAB8UDl24ZYann0AXI3wQ\niUUhG2BJFmx8VDoMCZEKYlASZvRHi05ltv7SKBbQ7LI19PG5PR5XlCDh1rVp\nJZ4ElRln5RQNRnQsof/zx1WCAOezvByozFlPFRIkF7lbwtAaZUQZmwS9UhdX\npU6JOZbIcl8Ic6PbJRz4IdHwPHqUnaZIwSsqTyGskkvySv4iCMYPwBE9QvzO\nv5wnRx72LjG6OBf7VrV/DHNIAj6SvYIaDP58lRNODp60pAFQLh8Hue9/kap4\nKUoOiQ/3jU4g8L6Rd0GjonZZt3ABBjhVhRphIKrjI+o6LVFHFBvf7xl/wGfV\n/ZN73j37PtNchpYR0KLeiLZ/wmRRai6p7PPbXER9DMMjZH9xqy4oOUgjtvJH\nzDxVGu88qvsAClnp110DhXscEBEZkGAkFO0NnLVp6W7uyKBg9ChqZSMxnEyP\n2DksGzZxCfKK96+S3A163uyJWPXHCcO5mP2Wh9s/MUsdgn3yJuY/H3w/39nJ\nhM2Kv3evffpBVkHKl8aYf6DAPFdyHirwv5b6g1saPqOU6sRSF59pfLTxBkLj\n7Fr/\r\n=jwzt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFAz26kHGOkwEsyJ/ATeRep/VFgJAe/vNF2ijxRIHgQQIgceRRxZCV8ptdTS31wJhFCsBdXUNvNKcTUB0+sZBMKsQ="}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.1_1619682927732_0.05090610208600643"},"_hasShrinkwrap":false},"3.2.2":{"name":"@spartacus/schematics","version":"3.2.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.2","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-MPQeejfHQq6YT6IFSua+UorhzKbZD0uv5V09k6pd+XbEj7+BlZ6AB+gX5CUO96KgeDiWklWOA8gAe025vieh8Q==","shasum":"3f99b3a30f254e0bd5c5a4d95d4fe8daae005734","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.2.tgz","fileCount":533,"unpackedSize":798699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk5qoCRA9TVsSAnZWagAACUAP/iAC1FhzW39e9Y4TsKc3\n1JD7EKZfWmRv/FvF/i5R1Yxb61FzVrOBbC0RzCSZRqWkJ4VCsmu88oireeNb\nwHhOeAb7wYBRS5QVGZm1bvxILyyYuZKVe8aJtG3nfq2T6e8ae9Z6C0mNuQrF\ndO+f5B67jVjiO1DsHUSk5MuYGujcM9j6cDsOyv9h0V2qRJROXjNGF/tq/K7C\nLwBe5iw4C/y8bX/2JpBpxx32gPJqk56hP5AspLZvhQNMttI9ofd6+CoL3TU/\nqL0twylpd+0sZEAlaI4zIjjZZz06vSsGb/H/Z/Ak0LL4i/ZUfukRcDojGH8y\nTUxHPaqwZBzVnw0AKZO/ILcNBbMMMTWPhqlco+nMtxM0Sm1G9F8JXvQLYIZ0\na3q+hW0fv19/jRugng59KV0Y7sWLTIC5I7xkqmPWv95yX5gwCJk3Xtmr1xfp\nE4yMYWUZwBlC/VjXVZSj/mwwwEe4yKXrwGI1MHFQ9vEbdCxtpJmEnUVm3Nce\nWBuB33c7BlI2YT+ZNttz0Umebo+DZxRA7KSqqQ0Izd1r3RZIopNdr0w4f2ap\ntlsZWmMTWC/EYuKRAuXKtV8XfgZN72Z4f/myR7SiwgJ4J7/KPsjTYbVJgN5m\nEvCDgvF5JeFoOvDCaoeUB+aEtZzvD+cyI78VtXQl0yASjiz4v03CAHw6SA24\nfwK5\r\n=V76R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBa94wNDUsCaXm78XxFqIGMwUx7xvfZaJVaZzk1RjFHSAiEAl4YsAuMEFLbbkuQRn5tXCMEj2LNg7ST9CG9vmspIdnw="}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.2_1620286119720_0.056442008352241"},"_hasShrinkwrap":false},"3.3.0-rc.1":{"name":"@spartacus/schematics","version":"3.3.0-rc.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n1. `$ cd projects/schematics`\n2. `$ yarn` - to install dependencies\n3. `$ yarn test`\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio@4` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","_id":"@spartacus/schematics@3.3.0-rc.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-l7rOYft/YZDfHSg2ojFM1KyP700SIm1NjgYJMsDQUB3lvbQPiDD/zmKvby7v+w5Z4IPc7cGy5a73mRlEM8JvuA==","shasum":"89ae1a8d33aa9fea89d26a83d44ce5ab16e0fda5","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.0-rc.1.tgz","fileCount":536,"unpackedSize":793895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgk9vyCRA9TVsSAnZWagAAef4P/A7EIZ7yZlL0YCZtJsCo\n6IWROZojD3DSbyHprTIAY3m42OkdeTvnJ1Ek1H3TgVHj03Rl4PO3cf38cZUO\nxPf4pqw+SiKal0aUUYSDmepEOQwciW0RkPLRlDL9Ch21SMmr1LDd47lkP0eJ\naqerDCQ05+hBH2JYr51++1nRNPZRMbzYz8hhq88A1+I1V97wUE9F7uA9wqdp\nk5nQEOP7iwPn+iP3amM5eUDiiGJPupyojbaNOWPihaX7W0e+QNpBfDXLyMY4\nwinYQ1xcCZ+zkJgflYFoWDSrFkOTUBY7g8aksxGH1Qvlw9w8tE1gr2kU8BXv\nDWjtaOW9u6Y2vyBYmRHvo7u5G+VOfwqevAnE3VfuXvK0uwxudyjwZyIONQjY\nOw6RPfiDpvxGcuhkUlAUvhv6dMfRCXA85v5aI+/PdXRzpZwfzVK93up+lmSH\nvb22JUEfKn1MyaWsntT3bvvqDukYd4rg9Dc/vP2MUF0y5A0aQlVOd18hN5Dr\nSjOY1u5XU7tnSLl7Qjo8WiXumT7p5WUggixAEQ0UlaInOEHmvD+dkxDJ3+Xr\nRd8BllxkDmsO4zUZYCpU3afQoDFG3fxABwK51gXYSB0H5qLrMX0koHWmQp93\nTBhmZMBMQtu062qdno4U1jPy9Nq8G+sC7+T+KTDtPQG0QvTKB+SANJLPvVjC\noHPW\r\n=GkfV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFoddJ9GODJ1ldejSBqlYexiGLtJUCOcj5wY8MN6ouviAiEAqwcfx8uL6XNd6ue/HKBPWt0aHJH1oAF3mctq1KnXgB4="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.0-rc.1_1620302834163_0.01870281775366056"},"_hasShrinkwrap":false},"2.1.9":{"name":"@spartacus/schematics","version":"2.1.9","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"keywords":["spartacus","schematics"],"scripts":{"clean":"rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p tsconfig.json","test":"yarn build && jasmine \"src/**/*_spec.js\""},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular-devkit/core":"^9.1.7","@angular-devkit/schematics":"^9.1.7","@angular/cdk":"^9.2.4","@angular/localize":"^9.1.9","@angular/pwa":"^0.901.7","@nguniversal/express-engine":"^9.1.1","@schematics/angular":"^9.1.7","@schematics/update":"^0.901.7"},"devDependencies":{"@types/jasmine":"^3.5.0","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jasmine":"^3.5.0","rimraf":"^3.0.2","shelljs":"^0.8.3","typescript":"~3.8.3"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/my-account","@spartacus/product","@spartacus/cdc"]},"main":"src/public_api.js","_id":"@spartacus/schematics@2.1.9","_nodeVersion":"12.9.1","_npmVersion":"6.10.2","dist":{"integrity":"sha512-rUf2GMxKnj03YoG7ipom0Lt8kseozp5vHwXGAj37WmzCcQEyMPj42QapCjQqN6vcSA64ZFPXMTu2SXufnnpNOw==","shasum":"bb6634b668de2a3f2722ccb875e3002f86aeb8a2","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-2.1.9.tgz","fileCount":422,"unpackedSize":544373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmk4YCRA9TVsSAnZWagAA+pEP/1PwqgfSnWdCXLfh9n/2\nujtUx5TMf9+0xzNQIlExDz8cr8HL+VzP03KG8hK9/FrmUn4R+9oEIFIVmm9I\nhWB/JcxWEfLdKlOUAfoFdVMk+F7hWlczwmFrHWoIPIHx2LTgaqteH7mr7BHv\nY9O0+kQjp1zqfWKFi3SteCcP/N/LWmOSzPEImo/WrE2PgHJw3U/IczLd+EUx\nmfIyikI0gebPRdK2U2H2TyN/LD2ZAevMipztYlpZ5sIJa0S4AsdbQWO1rrXI\nBkjm+KowvsgNxvvl1y3STGzFeSSEvxjX6m5MMfDDiKL8eiE0D75lBurraecS\nogQ7KGmVNXlyS+o2ViGclqI0xa6OQQq6ih+ZIcHTKb/TPndHafg2oQQjdmtF\nHdL7JlDk8TtB8h+sbqm0SPp0haVJ7u1luQX8UgiPJmGLcRY3Tl9CP10unOAD\nBxtXwVL+em+n+quAkV9zHHuE70mwm7AvVnWwWm0hulabd9Vr7dCcBlE6ZppF\nSgoe2wjpq9xeHeVPiqz/o+zsJV1FS0GcaC+q+3DO+GtOsi7BCKpUMHafYIi7\n3TmRd7YiMAX98WSU2fTGFkhneuHDAzUKoMYWgoNSeEkxI6iQlkYmeYc0QC9C\nHZ3GzSBBTDtTsjrx0sR1+EGF8TlZfvVeXDDNxkjQEZvAhikvsYq8iI98AQBx\nJbFo\r\n=5sIF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHLiPVNLuav5T1XuK8iY1Ppx8GrxPMvwVow/Ev1nR57lAiEA25MDJF0DoK3VCaq48t7jVZY0J9ZAARUQRkkNOvAB4H8="}]},"_npmUser":{"name":"michal.gruca","email":"pucek9@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_2.1.9_1620725271894_0.09034507853200946"},"_hasShrinkwrap":false},"3.3.0":{"name":"@spartacus/schematics","version":"3.3.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.3.0","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-2cmd5AttJ2FmlzjIgK65SFUuRxhPwBsR7ZQhVYlXfWR+2+edJY4rHaEbRNhkSxNf7wOtZSp6b5A+OgelL8cFwg==","shasum":"0f547de05e7aa3e64d176db91ff5473a704e3d71","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.0.tgz","fileCount":536,"unpackedSize":783660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnBQlCRA9TVsSAnZWagAAlQYP/i3Nq8i3Qr21b/phas6L\n/RY2PKD0dz+9UMwcR3o94Daj23JO2jXiFuMLq6qGuE6KQoKXtdqpnXJgzbY2\ncs0CriKtq3dw4dotkpdnviAfE5FWyZrudUg6znpFBor8w55tN/wK+u4881fL\navbM9p0xdnX/Bd412RNpHLJFV0kMEG6PsGxgpTp+Que3ZFHC2qQ9vxfrZHyo\nTEsR2sM8snZdoYQrbpBPaxDaVXbspUG8d/TqZ8D0DomOQ2ZpXkKWu9pYt+Sz\niKkdl98SA6a7f/nrKJkTuJk9BLK81/E/AJ+NW8P4pv9vCBKYJ2+hm3vHxyEo\n3aP4z9GkQQQmEq8M+MCDItL/ue1yQGLFZKWzGJH/Jmjx2GTWR1CeiH+1UpvO\ntHYaRSHIZqJXUZgLYjapZTNmUfxUBIKnCbp0WDMWld73InrKhPVkHte4PgVv\nLKVIO36SdlHspgzM5iQB0tT3ym5QC4ceqwkhXTOWFSbK6Xz2M1NlmhcQyfkY\nY1UFA+ZZlqAyD0LUZOXhKzs95mv1CdjK9BuVvHDUP3w3gdckmYlLtM0HJD+m\neTlSHc2YseCz3WA5K1cMiy2NEUqMDpd90y/uCOj65A6LWa7TpQ7GI66xMPRF\nju4YBsgtNltjXVmOqgabyomvJftOmGni0UirDpUPfZUOwqb91i0+Zc/e1Vwh\n13/w\r\n=E4Xe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7c3pGFXXm8TR6jN6M2V7ymHioc3XVjxbCav237IXghQIgPiF5Tq2/44MAmHlhCl3CUzfZUkPdMn0rYwwCt0JbLq8="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"mirkosoft","email":"admin@mirkosoft.pl"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.0_1620841508800_0.3487517427811939"},"_hasShrinkwrap":false},"3.0.4":{"name":"@spartacus/schematics","version":"3.0.4","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.0.4","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-SJZHB3ZmlUr+LtbJK9N2j/ySwcIUEgagtM23gDCV/4ZpPLgTDSpR3h3kRzcD5q92BV/CRH77nWpkw+Vvy5v1iA==","shasum":"19c32bb7de8758154dda73d02c78d28029f8a36f","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.4.tgz","fileCount":810,"unpackedSize":974415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtiNlCRA9TVsSAnZWagAAJ+IP/ikGbH1KuXzBSReNd5hK\n0Kyp80lPtkEE0/hejfiYEOb6bi2EYmOyGLvRmOwIYcBcVGQrt0TQTB7b/HGh\nvN9MZeB1fjy/1eUI5u941+0uB4zMPfUCUIrKyWDF2vHwuYCL6addh5yyMYgs\nDDhviuZ4VXUMvmL80ZYYQT4EnieQeAYkVYPR6ywrI8s2BgJCofVc9Uxi31CT\nG+t7Lq+6MKMyXKbVojgFDy/Wy4Fv5/BblAIU6JZJ5FR+eVFMSJr6pUAf/eGp\ni+VPK5pM4r86Jbt5G/2hXXwFsBwr+zwZ0aomJsGS9J+QO0gA6LS/1PDkUS3m\nsjqmDRaGfUein4gLL6pPIDxl+y1I1n6rGfJPNwrT29Q/V/nNIeDU+vDTiSNQ\n8vgcnaGNDu6AyTRtR8oHxaKRKIffwzMaIVz7IQsrrvKokH4aCJDxkV3byQ/R\n1Q0Lw/b3/Bdnuul2hsDO/bNSl2ktbFf7qDSn/gnXXDaPt9zMYRKX9ZAhQJdn\nIp4olJxm6ocpuH/7uu67fX6+OAy10JLz4gJ+ypqPdxY4/DUOY+eDJ0fJisny\nA6r8haqogWcFmZzuuPvo73tOPAhshmRJjjN+2oYScttlwvnhqngz2KoL/ubD\nO91mZRG9YBlUiYuaAhR/rPWimZoEHJ11Z+9dU49/akCBDkZnekScqbNyvGDC\nHIn/\r\n=w1x0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvzfzxQvFe0xFnD2XFCvTTzy4KGc6o7SvGDVwNl0STjwIgIMnswEUo0o1s2yEmofMKgWaGJIRb1lEGO8o9zvVB0YQ="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.4_1622549349456_0.704175258934209"},"_hasShrinkwrap":false},"3.3.1":{"name":"@spartacus/schematics","version":"3.3.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.3.1","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TnmZLK0Fh1/A0nN+eGHS6m4v12iSm32Ztc0Hr6/V6R0HzeWAFQwtlCVOb4Vm41Ccpu5+ZABsfVUWdQrZIujPRA==","shasum":"b1920c9198d7ea58a86290c4cb0939e00bd073bf","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.1.tgz","fileCount":543,"unpackedSize":889517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtk5bCRA9TVsSAnZWagAAucwP/AlF8uiIeY/ria3MMiMI\nqLgVjtmM2EGvX4sJ75mApsYUn844CfZMcKLI6gBuEprg4+7zyDeUA9ml55H1\nqRK+WTMfkeGqZWlw4wdaMXWdyY5pKwzpzlv18SckWPqfjUM7vNBgvnsfqYW7\n11ReR2lFI2SK70Xyn+QwQJDB9OFpgNjLo0euxaOjt2U+Z7rv7lmPCy6wlhTA\niFkE8mJgU1KyDH/Lnc+pBXo57S68uJLQoJhVpiUf2OrYaJ6S8GO2z3ihOFbq\nLCUSdal24dsnpwFsBg2gaq+2ksic+6q+V6aewpUlJcYfZQgoA308X1zF/2Wo\nuNZbX9hgf0lqTcyNmYgBxRIsNcgmy99wrMJLdLV3ppq7kx6lKqrVvyINcTpf\nFY082kfsKmron9MTdKiWZF9WIucwdunhYIdMzBFsIpbab89KK1vdDDipX8DY\n/zxv4vXpzc8onGsCEAaEcHh7I6SQZY185WXsH/AAGtsHgWBSI6uzq9F7Sg8X\nxeSeNyhW2h3IckLMLmRwWNNTHNz/DD6JuEYXGe7+283YYZnYOO/AvsSEkGp9\n9Jd7lugE4mUuHzi3Gm6xp/1wLn48V3RnReuX21Q5QlSyvGFxoJp6Qwra6r6P\nBkL24QAL2ufctLw6lBNR/+aCUwA3qx9KdwewUEGoza+wwVl/4h0j6jDzn1+h\nDGUZ\r\n=1OoB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHnbOk1etvkdTgt3RBNfTrsL3cPh9tKhi6WuEZFuTyOXAiAMa+4YFZQ+Cm7SGvrWkeeuGGw2DiHvQeC0CvZ3cKlbyA=="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.1_1622560346758_0.7376758203861624"},"_hasShrinkwrap":false},"3.2.3":{"name":"@spartacus/schematics","version":"3.2.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.3","_nodeVersion":"12.22.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Os+7wWo948fuCGIG9bMoUGUHYtT3JPP28d/n3ss7/6K0mZiG3aGxs8J3lbW2JLrSfUJ9D3daWdjqtGYQWG/CuQ==","shasum":"b62f3decdd4917fb62cd9e29f5181b9487cd0ea1","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.3.tgz","fileCount":533,"unpackedSize":798699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt1G+CRA9TVsSAnZWagAAwSwP/2/SsDXun4e89evMe1I2\nsl6KGJBWjOETFwOXt457mnsVggGHNDGHkbwzoY/qqw1YY0FiHIKKRHB0yCEQ\nXIwZPgGQXOex6sdKwDmbgRTILGCplBm8L0LA1te5DT/wsqsKTbTcjwp8fRA1\n8ZSQJVMmxPWlgU0Jb3fFhAw6e+ws7XUzgDQskgLgMhx3KC+wusBSfq4hDSGH\nBdhNxR72ofoePLYOb9+a0M1HoS392q/Op4Ib6TtOKjqjpburbk9PBezNQY6Z\nNRFaxQQvHQmSa3kkZljQNGQVCrXMYfCBjTZt6y+tMEdmLQkOvvZ5ba3vXGF5\n9BcbxP6moXXckL+XRFZi6zP9rf49U8/f/sohJwUg/yupanLUXLEqHXB3EGAr\n/RehU7ldM0XWroqwDRCHlz0nZk2SVJOOVx75iVPqVmVgQCOrREGzWc8Z15pR\ndcvfh5WOEIEMXq/Jw2zdt5FuvIqosyPbSLprOu58co1ZnUxnHAWi9EfHb5zs\nohzrTLX0m5U8S4Bi65TagH9gk6Jg0qZVpq+aCQgLYLBu7EdIo3fs6uHAhBbr\nL7774/CUFP5rmxaT0h6KyBkLioKohzG6HWScjbMkJnrjGKme3pcN3FLdKret\n50vI5i9zdxZxO7VPpMv6yk1qStuffJ/9Nz/6eswsKZQmdilW/edHr9rrHobW\nCSP0\r\n=+sIW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJP2gVtskQ597Im8Pttt5f+QoNk1VQWQPM1PHVTAsrngIhANUwfDwBYlhXGZ2v8R1SnnyROTNJSOry1k139XZ2mUBh"}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.3_1622626749590_0.8984402370103233"},"_hasShrinkwrap":false},"3.4.0-rc.0":{"name":"@spartacus/schematics","version":"3.4.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `npm i -g verdaccio@4` (only for the first time)\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"migration-v3-constructor-deprecations-03\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `migration-v<version>-<migration-feature-name>-<sequence-number>`. The elements of `name` are as follows:\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `migration-v*-validate-01`\n- `migration-v*-methods-and-properties-deprecations-02`\n- `migration-v*-constructor-deprecations-03`\n- `migration-v*-removed-public-api-deprecation-04`\n- `migration-v*-component-deprecations-05`\n- `migration-v*-css-06`\n- `migration-v*-config-deprecations-09`\n- `migration-v*-dependency-management-03`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.0-rc.0","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-GcFSBc3jX9CPPsYVpUpyuwMOQycKQ/7FGToAxEQrbbLEMeVkYorcphc3Efl8Mo2JByUPGjp1cqVSZSZFJD+byQ==","shasum":"9895c2f822b79706ecb6c9344370a3d7de997908","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.0-rc.0.tgz","fileCount":548,"unpackedSize":811235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgt2VNCRA9TVsSAnZWagAAIgMP+wZDC3iaDqHvl3O7pqy1\nen/iVw65FC01mEQbyCYXE2nBkQYMc/3D2atzmT7kPx0mmCYr3RhKZXV5K+cj\n0D3Lhra0MDIyMKM6vUwc818LPHbsvDVKCHJ1X8Jazw0lSf2D5fTmy9a2PDJx\ncR2fu1GhyRIrzt9lhOIZlu9nzCai64oGwsKkuO6vySyYlOmAvfLNvaYjCAs+\nYDpkB2IcRYspXPgO9nqRXenV1gRde02A1o/3m2SEsRn3kuI1jyC0ZQZ7DHUd\ndc4cclsbcje5zHFRgtyK8MOX4G0Atiyy6f0ew+KF6X6NkQV5mmVp3sohZ1v9\ndzGNhH7Sq4BKaVCJ+NvmQOSALgkwb3daYVV3HIqsoODpfHvow1NQCUjPjIyW\nIeGIWq7goJuCA9zb8hT6DHR11/PcF+/N8Rd+tyod8jNUaHcKhYrcH26+ked0\ndFWows7cttNRAiuS3LywXplfR7FqFqBdYpnK8CoB5IBM9lIFE/GW3LWmmcGQ\njSuciXYaoT6iWvnTjKLpJ4+CEDfRppVo/jSlWEVjuJTGleh1Ybwq3QeFg0m2\nKB8uencqzwW+TyUmYNSK2l27tMokAzj1+x6k2DEBr+l0fmGTfEjyD+bWWU4X\npjD9X3UU4VCp2kjpoOeoz0iEepsuzbmlualxsNVMoZFVplLsW9UjcFtjOxAn\nTWGB\r\n=ykdO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2MdQo7aKz+SjcOpS1UIMH+yiZC5OQMgHIUekuoKG2fwIhAIu3WSe678iWt1uQUad7PQ1Vw1jVFC2YHR5xqOiLXxkQ"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.0-rc.0_1622631756951_0.1781808021816631"},"_hasShrinkwrap":false},"3.1.3":{"name":"@spartacus/schematics","version":"3.1.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.1.3","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-dMtRtouUaNtALYLvgWJ5t5BSeF9qc04bZSGjPzTWsxmsm8kiTytRGqJgYgRPMYwD29HUfExD0B6aTPJxBd+BlQ==","shasum":"4ebbf3d1d3a132fbb4c1f9f0af439fc14d8ce6fb","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.3.tgz","fileCount":810,"unpackedSize":977483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguLX8CRA9TVsSAnZWagAAebIQAIKOh129QL5it+zn7VKG\n6tiuJtahpom7A2Xtb3HZGPVLwJ07Mj5cvJQkFV6pZljPgGlprlYOd5X/gdGV\nb/BLh+Y+pczsR/smK/kDpl3454pG0i1Y+ycyd5UlTH39yygZjQuaugCLx8aG\njDtyu8ixkURnZ0rsi+3iELMj3ZkU5rLiFzbST3PmgpZwBFXLyIWPMV4QjtqB\nQ7PWpLvH4+Kt6j1JCHcyO9WrcgzURIr05np626wyZrPcz1gTxMJbKPMKAIol\nff9m9nUQlcn4jiCnHpVcxHfVTVEAPCduGp0bqtfxSvwLaGkhDqBGD7YdZv81\nhaZOyVsX13ZmzkDzWnGzUSVTVtLFAll5T3XQnvhJfZWlO9JXac3Di0MPSWut\nqNUG1UTZg27e/laPw4lp7o5UtC8x3T0CHEH/LdADkAJUH4N7KQJg2g8yEw1p\nOvnkNFlT4s4Tpj8o4i0GzNlTmmD2iDa2g/UAwUlPWlNEdv2/W3hZ0anX09uQ\nxQDbggob8g/HngssKkw8wy1QTq1s4RnwxH15pCmKlJnmR51yT07LwbMV6jnk\nM/RlgMt/vemnaqt692UCb4J4K+mKfWWI4+ORg2H6JOH2N08aaJ4nZixCrHsa\ncVIdGIrW0UtKlCDTTG6pes5+lj040a8HwuJZH+fzvYxfeVRaTXnsuHpRiphh\nRNEi\r\n=q6dK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGUPkR5JuQCbjrCvhz4vjyIXA3Y1yivSB31qvFJTrPsdAiEAl5iR5mZXfX7lchZJ0K50uUmTBrg+KIZquLJMgZ2QXvY="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.3_1622717948005_0.5909462927478246"},"_hasShrinkwrap":false},"3.4.0":{"name":"@spartacus/schematics","version":"3.4.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.4.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-TlU9unlVF0xAtXz3CZCMvWALfuebZebisRpR2vofIsgD886cmvM1S2vaElY0IU1wJ6r1QiXplR8q85349k7a6g==","shasum":"db130fe9c3e6e4cbf2c2e7030412495cd22a8934","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.0.tgz","fileCount":549,"unpackedSize":897482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyha0CRA9TVsSAnZWagAA8GgQAJntc1EqB7+X/jB1zSA3\nKaeB+/So/CInDl8im8Irbly7hq4v1NL37fZwgH0YJ68iKLOG3DG7NB9+NAPF\nDIQer4ljoVi40I5ZuW8RpY8HUC6Y+TRikAbXXJBzevkcEN4WDovja6Q8npP+\nDUFZbP5aSHYVG4DyMV8npJIEC/rrn8ta/6773SFQgTXeFXtuKH3eEp4Xgpwq\n6/y+yS1Xy5vXnTV7zEfRIYtUnthO5MM6pjMI7PtibtPCqbGB3JHiZgfhjgXl\nPvnU5H6r7CZ0OJLvKUrY761qWGL6IZI4/XaMH62J8gc2LH9cEQBoLvFRGem6\nnlcidiX1ZnJ4TBmiKAQJHYh1jwxRm6qdZritNVyibfR8wplMzDhQ4zpe9UTC\ngn3hyOoau/GAE4BwHqTMuype/yEPOGKWnRGZUqPPUJc5KJ6/cI2qCNDzuCD1\nGX/jMSAt2GqqzfB1HzDkxfNRab7pmceokaIyt+ZcYPAOF/89VAnpbuviOX9H\ngn6QDG9VvZMv2haO9Y6ymT6yfOQsq04BbDQISEWp77m4UM0Tawxj4EhH5lI5\nz2ettyxjC/x1e3UNLlzTtV3GGwSZrn3sgXUKE28gt2Q/+qGRiRYqTjqple09\ncfa0C1WoYZBj/WLOJ01WEEDi04hb7q6M4Ns6doZNyvcB5zKPUcTRWYFirwwD\nGx9s\r\n=6h9z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBE+glzECQ4a7+L0b2jzc9pSMBCHwyyubmrHy/RDTNqKAiAE66OF2pn5EhnzjlIhyVMyoKRn1z8KqULSI8uBlg1Fqg=="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.0_1623856819798_0.9350356246409901"},"_hasShrinkwrap":false},"3.2.4":{"name":"@spartacus/schematics","version":"3.2.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.4","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ErHCxDDe+AfrPo8IsllujkWDbdln30UEPnOYy1yNBkZNx7NPr4+HZfHmABp4tbTUq/wpJbhFnKfRd718v9G/CA==","shasum":"7176551d053ab21658612a38f475e4cd6e7950e5","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.4.tgz","fileCount":534,"unpackedSize":873146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1IRqCRA9TVsSAnZWagAATK4P/3nmdY8qFf7pHPSWkSO2\nHHfWT6HSwutzxu7yq5YQ6PON5thJdscBIwy93lrCxYAEksD/9BrUObaR6zHF\nUitKmKnjzpB6XYl3hq7d0SBS/hhCYlpQxyFQwwb4YwAX6HKXaUQCyt7OtAlB\nCYX5umN7rvJo+MjCe6J0oyuz7FARUD6OoQVgYXtSYquU2XbDoLeUqMFlc9y3\ntdlgcYXPcz9ehPDR9dcc42rmIYkAfmojakVyaSB20Um2Ot6d/8G6h4tOPjMv\npDoZeJT+iEWdEOlLJ48g2EDF6EixKN7Cb3xLSNRzDztJ28i8/W9xq7r0Z925\nUgx9+rMYSGQg/3jL9qTRdcFX42y+rtRCrtxhWhaqPwNrRFqkUGJtZyyOhz7y\n31cl2Dkes89steWTsBssmImy+NpDg+gXuHnyGTJcfcej59AuGN39PWkSFdKa\nMvxnXg5ZmxtLJsF7pyh87U54XH6EdosvzbXvQKbcNsEzuydf90tbKfAUuCRF\n0E0s296IvNlXAskXqSa3zxMC5Bb0oMPIhVpDP2mogckAb2S88ickP2jO70Tx\numl/bJ65II6rzH7Iy+iE5mooZ6KpTpppE35Ku3EUje0yK3qTrnDz98olCFQ0\nSBFDb18cAnfEF9EN0LPUhLjGqEoMbn4ORMrlLyhxFQeYNtueZI4aLjx43wmU\nkXzD\r\n=qwbj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAmyHAcUv0mQtpizoi5MV3O8ANnFcMEpl9RGFujTCmdmAiEA5+Uhx0tHSRscGAXSUymORRnJNv5oOaekwIlzjI6+q0c="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.4_1624540266225_0.6950875932650966"},"_hasShrinkwrap":false},"3.3.2":{"name":"@spartacus/schematics","version":"3.3.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.3.2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-47PZ4LI64xAT1cEB6xZvDfszPzVDtmWR7wjYiX27Xa3etq9tjsTOsIMlHYAAYCVl95VNBXrixwuxLM+IjjJ08Q==","shasum":"5e75f325dcb435ef9649a7d609677a2f8161a048","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.2.tgz","fileCount":543,"unpackedSize":888732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1JtFCRA9TVsSAnZWagAA9o4P/2tkAO0m+ytyFZcB9WyI\n81npYdAT/68r+UxA6gBQXE8He54cxTYCM16iZzEHkwKq1ZiC9AdX1RnZALot\n4gu5NOViSgjuvxIkw/TU0og5kWeAc7FvOz3E9Xc+laNFrhow7XQTAs4wfGqk\nhGym9rqWn7zks9UiosFdnikMIg8BmHq0RRohm2+mB0khcjD2mYfMomwUP/Nx\nzPIXknZ5JxQv1z4aAA4kUUiVHhr9HudbFRdMWfJ/TJO7V6JFi8Zed/OTx1IA\nqAqcRvT0SZMV/G2lVWNtA4OIwG0nY/9PNDpHcROtEsxEkeEl1JD0LIvChSGv\ndpCvRlCba4RzlZCoe3kDE5Og48Gbop+AKNOkn21oq3h+4Wy+6FzgVBU5Ovn8\nlLyrUH1dWuY/U6oK7r8W+KQYxdO1TfofNMTKxJ25r0iTwhxcLFDSp7uE1tDP\nYOuDu66SjqjCay3WGPGzg6mGPgXXLZBlnNtfZ09FBhXYnYBgMdjXRHvIXo4z\nsGg367wVgsSoZm3IF9zrOdMKezyhEzhfD43dY4T4FJ0GAl/Bo9qY9x/X+efZ\nBwJtI8NdjJ1dxVpQcl0LYGuy0HPYP7FexeCEjARvxjfh1W4vfrJF7adWb7Oz\nYiwMMbYmJJ6aYiIVgFhndXswt+5D8lfF/u+r5upW8GHTIwWEChyd35ltPzAq\nRjOQ\r\n=NtKR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE51Nci17/E+Rtou+CP2BKI4yaU5ePFjvt+6O9HjuPX2AiBfYDuomaQ01WNORhliIf+0n3n/IoVco8+8bh64fDnhOg=="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.2_1624546116527_0.8728151758791602"},"_hasShrinkwrap":false},"3.4.1":{"name":"@spartacus/schematics","version":"3.4.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.1","_nodeVersion":"12.16.3","_npmVersion":"7.19.1","dist":{"integrity":"sha512-rTpKHZC8Hc6nFRfTkT3Dcta1GrTDujR2UVp2rjOzR3awxbhNXB0JwFQYJ6/4iOUE8OLsoytnuA9fukBUiBsH6A==","shasum":"4b30c444e450449fb95fcfaaba8d72561350aa92","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.1.tgz","fileCount":549,"unpackedSize":899285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5ZeECRA9TVsSAnZWagAA75EP/2FN6BkszwDw7CgIXAIS\nnPS1xlKTuragAaIdwUhG5+OYKPKYUQZK24TS6h2lMrnBOxpgsxnCCkqLvynJ\nBDrLMc9GlQOWUToZLEi67+GiD2/ZzRp2ADBIBH9UoVdxhtJ8BATnWI9Ld+Vh\nW4hdZgMXvfG1a/a1JUDtfJIjlYx9oLTbgtZCLpgFkVCXjjo72oa0H+/HI52w\nlAD9PHIFoC5v0fY+pZV7JLbBn9NsrubLTndeANBuAG6OSJ1WpA69+YFXhnq5\nMLPvDqQDZO4WFwpF+HyjYLS0KnfOCSFMpvslZLwPQks9S3RO5RqGlcpbeoJC\nzT/dySR/Obe9DLnSi0dXIBvf7lVRbkkHuoSnqM0VgFfcYgD6zOCj+t8QelFx\nlZfbv7WsbKuFacArFvokN42meqoeTuYtcNfhpEuNt8py7VWefRxxqKsonguM\nl5AcNyleM3om+0qontPm4s0paJQdckxXy67aTtf4LaocN+C+3EbVqq0KvpoW\nwHTj0sBzCz4W6vnHlifEb2d76KICwlejRKvcPYBT222KaWKqLptojh4VT3Oq\nRgy3mH19qrpxs2JWeP590KC5bs8eLqqDYFXQUZV+9dGZJquEtRxFMjNcaTPl\nPJPU6rlgL1kjiX2y3tZENwLnYgEchV37HNlLqb+5AzpNpDOd5cJoBhqJJY2d\nubsB\r\n=i8bY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsJg9D1NKnJU5IDRJV5qtIY3OqvVwopChIy8QE4mxsbAiEAvi9hyJfNWbtwUjJm3yYBZe+4qW7bcC9wwf28HxsgvyU="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.1_1625659267636_0.5142216978555114"},"_hasShrinkwrap":false},"4.0.0-rc.0":{"name":"@spartacus/schematics","version":"4.0.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.0.0-rc.0","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-NncI3Oph4zcaOFd0jjOmGa/tVOuamrqUyfGf07gFXPvBiKxmg3bkaWM+mhkWwZtZw32WiK5gd2+MLSekrZ3ChQ==","shasum":"2848ca9bd0a53c67cc54df50e54c59b857d23349","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.0.0-rc.0.tgz","fileCount":905,"unpackedSize":1258070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7wsfCRA9TVsSAnZWagAA8s8P/3p0nyzD/chtUUSAwM/5\npnVliuYgIH4BIBJXhia/Q583jmgrKyrfb4bC/PljMk8itBm4ojCltJfG68nM\ngiUnlxoCuOiVykAT8v2JqYQxA9tDP1I8J8ub5n9UaBLNvp0uk6Utefmr5ciP\nf8O/jIC8pqu3yVA6TxjhVNOuphjQPW+AxRo9NYPGw/IRa2wsvJGi5Y4u3W0c\nznOl0UARJH/cXs8upVb4OSMqYqijkCMimZo1PWEX0yzdempHSNWWh3m90dPr\nBlpegPVGcViqTjmTLQxw2BBd+WdD7DYTHYLFfI3c4pC/NJE2tNnKiitrVEVf\n5v1kPEeQKDmLqdwN9TFLpOVUI3+G3nmfIadzaZyDqVZBlSy7/fYt4Aj6YsIx\n2v154biHRYo/Zi5JsD9cxFv9vsPr+XjNhn10lCV+az7yMiyBrKNPMlJFSKC+\nOr1inPskEwnVUSPrJ8VZT/grIngnuCE7Fpt1hv7ivGjCoZzdKwMpDFFsE1uN\ntAP7X/KwWZY41avxPBS303UbXM9zQYNH5FhKPQXO6HDM2CcKZNva9V6xD+7L\ncCmkWHu9bcVqhhTUg1Re4TUjgROh1YBQ/eRlC9rInfLt1iGtvaweEwNNs84+\nhgWrJhc+xNSSTXiCgEznRlH9u26Mebd5SXM4RGe5ccXgl3iHDNL8zas7kd3T\nJ4Sl\r\n=jcKB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJ+WmEGeKPnYoGlDsNTqftLCDW8VUIxYtJz71jeQMvoAiEApFjns6vEvsF94yvfjmCzs8W8Vii3uFAOuu8V/lzGvcY="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.0.0-rc.0_1626278686794_0.0388711761386884"},"_hasShrinkwrap":false},"4.0.0-rc.1":{"name":"@spartacus/schematics","version":"4.0.0-rc.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.0.0-rc.1","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-2UpkguAafdyCNGhpgbq1q6L5HUNwb04spsHhsZv2oP+4Jo9NOGeaWiFGipW/bydL0+iQL86kfxuJpKnS3Y4EOg==","shasum":"3e889f0b14701e8363a68856f776d2a99fa6a13e","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.0.0-rc.1.tgz","fileCount":905,"unpackedSize":1261477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+vzeCRA9TVsSAnZWagAAuQcP/jCg6kwLfnnftYuypVlq\nnrcUpW2ldPC6h+RLx639SX/1vQmEwNNL8t9+5MJoUFgxc5WsTNLCpli1yLOm\ndAtvIp4+rSWfKPGIfGiYYpzWMxiBpShEYq0VjTSYy55fAKV/SiTaInel88Xz\nOOJ0wj1/tEnOygAPvUdjKMtAGPH2XS/+US0c5g2kAERJYfEigSIM7XcDAMyI\nRpk7D9dXwi++ILMIZG/c20BoDMywD2Hm+sWxSQVAH5QdcTjAkrNFomNBPu1e\n8EaWZuVB1F4/jm9Jr0CsXw2m9zp++0TMxavrPh7JoMx5kcs38zuuxMiZ8yLD\nW7FHZ7BQcucTK/nYI1Wkl1PAf6pGDYSl2vliu4fV9MIAqaORcy8SOwweLQXG\nKCZmeMfdWu9e0FEV5NQZRuiyGyDlfehlKJmhScBzVxXGZgipcivTEiFZLDW6\ng0FVGNnvCSPAWYh3aDhKiviBcJhwv4OD0hAX9P9AR5W8azn6TECr5JfzV2AH\nhNdlpUwtddRkxPl+kTMZISEiFh0hCLgqaVLdLuAOxryqIqSu9UfJN1RAt7F1\nOBCtajGqzjfG6dHZm8l+LEijSIb7k+7zAZ6DkZKXcXzEHtmsW4JzZ8uOilyI\npXr8yBLe+sRh2uE0vjpoq+Jj2fi4Yg5J0dqFgdbabaS2n7b7XHC9ALOpeZSs\nA/KJ\r\n=HalR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4A4qa01g99yXvj0JgNZqYZL0R71ngOmD8uyOxyVMlMAIhAOGQgASXqN7YGn3U3zHzjx5rS8Po/5e7JWgNPBl3ihBH"}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.0.0-rc.1_1627061470363_0.2820499705733166"},"_hasShrinkwrap":false},"4.0.0":{"name":"@spartacus/schematics","version":"4.0.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.0.0","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-ozl7DVucIBBbZWHBw3bqTK3ZHSNby8Y73Y7wDRxc7Iua8PXEdfCg+qFFy+qd3mIbnD5+71eqysp/4sX/+frc4Q==","shasum":"e9c866f7ee2644419d52efc01dd7ef380ecc63e9","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.0.0.tgz","fileCount":911,"unpackedSize":1266833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAwsVCRA9TVsSAnZWagAALXwP+wTDYV0apyEq1adC1DzJ\niFTvfLNbYZ6agYaKUKwO+KlkCec72MT0WBAk+ZPT5JvD4gjdZc0oSucHJsQ+\nJmfKShLi1Y97Sx0Db51Iz0ZVVf/B5LuWkSmTMSxlK+OW9D3GP7I4xE831xJt\n6Tf02Yi3P/KC8jubmhgWKj8ZI7YtBonHLAFo9Jaf5GzN2RewJ9ulXmwKASlb\nA9QyfzzmifIJliJCTK7TEnKZq7ds4yBM+e1ySVE89nLC2C3kGMxxw9EFfjzC\n2xRXtYJWmC4Gr5tXEqTf+0lOZwOWtXssf2TiCaNLeY0Lj9Kebpo0LJyaFkPg\nycHPNngSPMZOHBRKop1pfmZQO/wrRPXU1gsA46BJj+1IIioU1cuUKf729ndr\nX/kRZ6P2LuvKfo2r+2mvzNC3QhXsapZ4DYZhrCPKU79na1LrpqhfiDKyd31x\nxLjjNzw23j2+DzhVvbACN9MJQChwtZjDwlgNR/qdrkrSgIe0oUsPNesi5Ap/\nxM/qnytgXK4deCF2oQLuFMSXBkF0lNYYzcQ/rdW5ZhXGw88uhYncilOFcRBZ\nR0UmRW+EW8uSgGNEwconHVaER7STvRqMhylo2as8ktNjFVkXF4vTWaXkk+zf\nhbrU+ugzdKSe2B50aR0Euh2FWidFuf2zE8p7PlBDbsZmcRoMN13Kr7gcRjun\n0W9i\r\n=6PkV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8ReHZ9N9vGW1Mh6Y/qwe4aIAvW5op+kcRHdrPvH73mQIgXwHF0BozC3XmVTcqUB7W7sGwWS0XZP3GQ9zJcZSwHZo="}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.0.0_1627589396800_0.7267460582150089"},"_hasShrinkwrap":false},"3.4.2":{"name":"@spartacus/schematics","version":"3.4.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.2","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-oBncO+F7+xBBxys2Axao4c9nWBmjY8LqsTJWGGZDJ8+wJAFXCycA5qNhHhiDE365Exgt4SP1lu4OVeIlQkmt7Q==","shasum":"c31212a842d88be959033c0ecc772f117f3c3625","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.2.tgz","fileCount":548,"unpackedSize":814412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCurBCRA9TVsSAnZWagAApWAP/juaOpseMOSqQPognv5y\nt5tyDWGHiRV4McVE8/y9uyWt8GWUkcLopKi+uGc8+nnyyqYiWRe0KVWIB2CB\nqI4e8lQrfeZBPtBpRxghPyZMmuyablov4TvjVUatqMyBbGFOoIs//AK8S8zd\nGEWXV2DypjFfVmFGBCwdAfyIS2YqB47uWVj3tewGvyOj88ZYpECxcOGd2PZ0\nM3XkdI1z4qVd6zqY2CiBEoS3+OkXY3zVN9TjmPXOrojKcbqUpa3jBgw3S07X\npMmH09luifxPnRzWFJ2KyjH2PIFZSi95hjSLJDGm5E8BoxKXQsztbRL/U2Jr\nTb7Z8GEMBeyHCSq/2IZLgkCgZHP81SFeL8UnIgA6Yj0oCirkoUGXeAzqDB2p\nd0B332HSe1TovJCUHM7Kgf3RXSD6KiqIbnnyZ3OyseMXqHIc+vppB6sYeqCE\nsI+cgG7rDfJTIrcYIVbjEYa/TfjRdDr+lNLrf5Ip/AdLinxmihDEPRIvY3te\n33L4IFgODEJ00KbuK/+NAB77/RUZbQ3fc42qSvQupLgyCruXImpavyku3dWp\no7BOT7vLaontzL297gB6CDovaLSXLruEJrvL2SQtT44p/acC/t8zYla8wxCP\nM47s7y0aZg8xcPs8irAL75fIlPTpXJbGlk+C64SF40eyx4VeLPFqkW2UwAKa\n0W4E\r\n=0diP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5Z0FggvGz+OFohP/G3mzdgHI2zbJT1L4KkYNSY86oHgIhAOICl0/PxHUQXOZwi//yLD2UFq15/debYyFq8F9HJpbv"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.2_1628105409384_0.011848463466182624"},"_hasShrinkwrap":false},"3.0.5":{"name":"@spartacus/schematics","version":"3.0.5","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.0.5","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-CsoYm1SrewzK93GejdcmZiiOaEsCZd7HPGsGQrksARHgO9OVdr2ocp9S4iHRaZA2WrT1oikoqJ2Ixg6SsqY02A==","shasum":"474d10012f2129b51a106aff65c2ac4a900f0803","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.5.tgz","fileCount":810,"unpackedSize":974415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCvBfCRA9TVsSAnZWagAA3p0P/0oLDpyGIPeO/0vG5+Sk\nigwJsLfza35J96Ybo3R2JVbkKAqyqxLQJ01W7qmiVg/CwDNHF+L7IyWsSyM8\n6gnooB3gGKGFoQaorAC8OZXDByPIJIVCWILYnozp6uE9YdW2c+9ROoCgdwUP\nTPQ4eg/MzTczBDabSER6xGE0V6kyhOUaZnPqabcNT27/UKEmCHwd6CxBcddC\nnteWpHHtXgIZmOIoRgFR0E56S0GQbepIG2kgaFVRcdN9aDnOBXAuKhwCzyQ5\nek7Sg4rweAKsAO0jEMuF2S4cCLFm5Aj3g9EWoCqiA0Tn6dMViUog+uY1u0nB\nmRZJDJLns80zgYQQkt50Z2jA+N+Hu3+aC46VAfA6XoZ+WOv9XVoEXwKgtDCN\n9SSHG3nQnOby3/W4SFFQxg1wNOPSNfgYO01MfJE9JwfSLKi3qByoTOpoeBJL\nAg2H3bZIqsalX54dKr1NGd0llPAKyOuVRaHoNDSdl+7j1GNLhwPTYDHm3f+l\nkUdclCuuI+QRvwdkzwUlXEDbefqORXyTN4XNDFp/x1rIzb4oBOqsMGu06a4d\nOzB3GmNBhUPAma9WhnOjQIRrX1VQSQFFDXfsdOnuR5uJLI9r12GsnJed19vg\nu5gOrfbVI9jH701Afqhset1fh7oD2sr9HG8hEA+eaCxO2OHYKsoqt4/WtAP4\ngCjL\r\n=DIqp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbQxs0d5mB7sWetD3fNduS86XqHRpuow05f1jeokyaBgIhAIHW+F7dz5Wn0OpjJX1MQgro0OKKntXlgpbYoEzMQ1Dn"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.5_1628106847152_0.9608326681335699"},"_hasShrinkwrap":false},"3.4.3":{"name":"@spartacus/schematics","version":"3.4.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.3","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-L0CSDArjMpNaQ0nkW5D+Xl7YdebIVst8h1ChXXQ29XcOvwYj3YKoTP8Lg+bzM/rr2BhOg6qeTeyRjzwUoxg7Bw==","shasum":"d38e692aa07ef8752506338587b94c13ef7315ff","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.3.tgz","fileCount":548,"unpackedSize":814412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFYUjCRA9TVsSAnZWagAAIG0QAI/gW7Th4ge0diqA2/tz\n0EW7IIFtNcPv6w+ZFAXuZWU1CgAwnaazWb+/w+4rYc0M4goPbOlGxM3VJX6+\nzBxUYz6U8qtW9pallyeDoBd2Jnw5MioUBFDZGR17G7L7hBNDMSpqGkmcJCNJ\nkfId/2EmE3txWB90pSoibfmkjL9c1bZmaW1CvNWWYOcbeCgpzoEX+LYfgK3H\nrvAoXfH2KVdJqrk1xkf2lq1/S1wm+fEy/kc1zD4WNCIIYDG2/zuC2J7/PSdD\n9VeYvukvxmF8cGHLtC+HkFtCglV62tvvhQmQsamjD72nwxfjyrLkktxm1Sbw\nDuVcnw6DZ+xL9eA0oS7pEhigQbKgtcSQ4r8PcHevNDfRgqFzLwVXRAjRO3aW\nRZbFBh1fyXHI9pOweK2SylUoKgwbVj69TFj6SzTwVGHb3S2EeW9qyB5GNYk5\nyHW3bsvCgO5UUJAIp/UJQADMrRLLI+iJ2QRNV1m9GrQEMC92ZnloRXVq5G+M\nILhTCTSxe7ZSW4fxkqa01Dk2aPQqHGaexikcvvgzgARgDFVXlQCqD6fpfS94\n02P9AS3hyc5xYOU52kwjVreyS0plF66jMb+B6ltDsoVOqHXBHMleav256z+U\noIrhPdC5AEhE7w+UDFYSHFIJ/4BKSm1mKHx6YniYzPRSzMxvQT50h3LL5Tjy\niicE\r\n=W4a6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVFsH5bFE+7jnjzcet2mglUmlRGVfXAh5cJkDl9wbjxAiBvnReFDBvnrDP8llz4LIZS8XdUSRZDdpO2DgaUAY2eRA=="}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.3_1628800291024_0.21760634537198298"},"_hasShrinkwrap":false},"3.0.6":{"name":"@spartacus/schematics","version":"3.0.6","description":"Spartacus schematics","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"keywords":["spartacus","schematics"],"scripts":{"prepare:schematics":"yarn install","clean":"yarn prepare:schematics && rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","build":"yarn clean && tsc -p ./tsconfig.schematics.json","test":"yarn clean && jest --config ./jest.schematics.config.js"},"author":"","license":"MIT","schematics":"./src/collection.json","dependencies":{"@angular/localize":"^10.1.0","@nguniversal/express-engine":"^10.1.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/cli":"^10.1.0","@angular/core":"^10.1.0","@schematics/angular":"^10.1.0"},"devDependencies":{"@types/jest":"^26.0.15","@types/node":"^12.11.1","@types/shelljs":"^0.8.7","jest":"^26.6.2","rimraf":"^3.0.2","shelljs":"^0.8.3","ts-jest":"^26.4.3","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/cdc","@spartacus/setup"]},"main":"src/public_api.js","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.0.6","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-PYJGMxWkCFsnR90+Dd3vsnW+zXIsML1onsAsJ7lxmHGdwbm5QQzcTPGitJyuVWQ1vLJ6GuVBSkQeT0IdW+Xe0w==","shasum":"c97511240f7cbb0cc43425fddc801bac27407173","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.0.6.tgz","fileCount":810,"unpackedSize":974415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHSm4CRA9TVsSAnZWagAA0q8P/0p7qtEsDz2QrMbW0yNA\nYdiA6hKmsgkaftfcfPAVrHiw7ZPApv9+PD4get0nhujU7dvD/fSDTemF3rbo\noehi4JEPKk/HJZ8zUWlRPx4xaDZ1qTt5gnU1CojHHQO9vAAgiQoC0rZJkFOI\nTrk/VH3VDGOlnqk8ei1POYpZfvwx+qPom4zkxYKq7P1oSgFFezy+j9nSLEqv\n3hwcMVnvs7tGYDgH1YuC9iM89Y2HO46VmjACxdce2KHCUlSqcZwWnJFgo/HU\nThouxEUgkvuDMcS37haKEVcP9gxOrs8/m4zHPvx9gdKOf+KXpKoiT4k/GgzC\noa3ff4FK+SrktpaeOLvTLr4b7Q/qwT9l/66APIJOBJuhlE6KTc4Ccu9eK/qg\nQzze5fEbSDH9uPpF2/u6gN1WPPUyDEG0fp4HGAPKW/gJrzITqEp2BCM7Hhvd\n3xF1CiBO+17e/Mz6X9fK35+j+t2RuHfZnZWS0kkZdbiXcwwJcKVzhQ3hpztK\nFDDcT3/l69uiOVnHY5IZY3IRBjCdNVMHRAPMiOhMMrlEwvQOvPv/KAyESO2q\nX/vwYn7/3DCzB9OsC1eQLLU6NwdQHh0gXAguzQJO+CEGJ06M/OCjA/7LAYkX\nrlt3f6Iq09uTBopoO9NmZWP4751yZUL9snw9RH6ayHdA7AwtcnqRrWeY6A+W\nRKj+\r\n=RX86\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAMECU+AdSor1Fpjnxgg0m3S1HC+eXkkqu6RX5qFPelgIhAN5upX+bTjXeFHF5m355VJ2WxQtscuhmUbTMH8Sqsekd"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.0.6_1629301176791_0.6608438083769752"},"_hasShrinkwrap":false},"3.1.4":{"name":"@spartacus/schematics","version":"3.1.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","author":"","main":"src/public_api.js","scripts":{"build":"yarn clean && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/qualtrics","@spartacus/cdc","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.1.4","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-GoOVXOmu6H0nwdYo8zvSWDmYJ6t21PQtPA7xGYU4EVNjalxGlfcHROQxeg+28jzs0wJtl/tLNPA7OEZRc12fxg==","shasum":"b8cd278a047beffebbde406e436f16ece3221385","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.1.4.tgz","fileCount":810,"unpackedSize":977483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHiNsCRA9TVsSAnZWagAAI2EP/isSL9UrKepTHR/PdZ+u\nhSmH6dxWG6agnqlH4FDYmgLLPdGXtGJJ6hIDKTd+mBRoOlrs+5xdgI40iRte\nOUdQmj++VqufoecGfJu62G7FRk6fbpC9AHRnIR3W5uiENBPIz//6bNFetJ56\nRyNymGxREnIn227SCuN2zeeaZMWppMAMlv3fsOb9iZeiL5FuJ7bvYEm6NAf4\nWQvmvCQo3mMpdIW82ueI6FfY4YVaEyWxfR/zeyWX3/JA+RhoGXlxAB8WPZn2\nC8j6t02RlpY7bZFz/b2IjqMbTaBym3g8PebJCCsDZ16jbIOengX3KDnP+u9Z\n7seKcjWUoyLyYB/Ffz909NN+S9DRl7Wo+3ZuqC+337/Z/bKeQLNdhudJ/Ini\nLRRk9qR0mgqDA7bPTa7Z0tmoEiBIENdA1gjJXh9qPTTIz0GGABKCEL68yTNE\nTl+CgZjSzQabFE/z9UKQGc3fxzGYG7ITFYICv+h3G62ffNMH2/dQp7X84E6A\nKb+zedu272vMQo/bM1fg8RTDi/9ZQ05FPwWxQVNUV79sAo22RdXNsX7j4k/c\nr9d/5PT3BPyya38NUyiItmCROpF7nUfrE8M/FpYIReitVyprgEhkjtNfnOMS\n6UCZTKEJZmJx6tLEJSlboYfedIRBKCgJBQtLGvblNHbMRaayljL7atTxQRkn\nCj5O\r\n=WGwp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGToamyoNsQc2DKjzHZfNUs7e2YyUsYhQUkjzcW8j2uAiEAohnudmeC67Y48aVDUoTjy921KBhRrOccsxp86hTycI8="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.1.4_1629365099992_0.9947864431627333"},"_hasShrinkwrap":false},"3.2.5":{"name":"@spartacus/schematics","version":"3.2.5","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.5","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"dist":{"integrity":"sha512-sruHS5Bm1mtvSCb1vh4BHU/meQq6T8z+TTLN6QqvfyCEa1lH6y5bRo/MfZvrwv6nnBwfyWraYTVNRwhrnZZ18g==","shasum":"e3c32b5643781d5b691e6edca2128b93b7392472","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.5.tgz","fileCount":533,"unpackedSize":788515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHjBqCRA9TVsSAnZWagAAR/IP+gP/oRZd7wba5EYjiJyP\noKucDrklE3LYdcmOCRxxoo+YI5ozy0VIEtTzQ/xioNKf3Mk4pbRjz8C0eSVd\nJGjWobFn+rLVwgcjzEfIpRkfb6jFT6tFfqjosBzfRSptkM4Y06vRHPL1S8vZ\ngKi2I91Cg+PNa309EB6iRL4yH4q4AyRFDKYbJs+BV0YOf+7ZSqxZcUfkUXzd\nDDMeStq57kcAbeD/7xD71JGv08xvQAQA+lasGQvqDUELNpiD5oU8YVnru7XI\nYh6DJx80DyVGUKwRaRUhWj52B23pETJdEXTAdQitrHjXpWgX4wQRxxxQ6yNy\nykWkud+dKqndZn8sV3Xv5VvSJStJGPuvabT9jNIfSHxlvH+I2lUKr5KCh8l/\nb3kyn2fph+e34gaJ7NSx+/C1e59ynYNcm/GMhtOxBaxVPBDo8yixhSYBw6S2\n3uywHXmTTC+Rwq+oTtpyyBVyxcGsJXxA3rkUhYR8BtDCiDYsjJYmxPCjuQQb\nyjtmM9ekwSXqFdZAhJupnw7G0KIRkAGqHoGPuj+/kGVBlRMvaCDVLHyFlR7I\niU0rcC+PpGaSruCM/OCIAC69wtbMOk6Qpx+hmGZi9p79YSko9Bm2q5ace/fb\nT5XUyFUCUIV+k6gFZcsYu4fpOrIV7U5qHaccc8sMOh1NdLxBG+n/08cGKB9r\nH3U5\r\n=tfMm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDetkof+sxCqllQIvcplIz97k6wECZvU91BQCXrQe/92QIgOW+mklJi84RuvssDoVSh5tajQBgjjnpm1P8PQNVO3JM="}]},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.5_1629368425854_0.25708101701675057"},"_hasShrinkwrap":false},"3.3.3":{"name":"@spartacus/schematics","version":"3.3.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.3.3","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-sMjieh/fKjPw91SAbGsH8udpVDnL4dcv8ucN8881XDlfrtWRrs6gwT1K6T426fpoFjwDyD6G72awOO/SsrRimw==","shasum":"f26c889ed630a2d0d659222bda9c3ffd6d5eefb0","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.3.tgz","fileCount":542,"unpackedSize":803999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHkROCRA9TVsSAnZWagAA8cYP/3LrVidIEnkEA3YGmiGA\nUhvUqn58ew3wpRk/iiB+Nedwtw9au8hK1UNaxjL3eb9pmVeJv2Cr5/Ix9HI5\nTXOHwOCsQfOFJUQWzApSSKiB2RvYyo+DxcyHL4Qc+yTs6FfZ6TemvHPFMr69\npJ3+XnRWJ6RgKpk8OZ5bIYzLt7TJTlBSJuCao5J+CWvvJuebGzOgtyrUQ3VW\nzuYb/BHlicRHUMeRSIRVQOUS9mg8Uok/i/r5ssdeX+iqTLOkigG01XALcMqT\nuobOydGnQR1F0ZT2O8bfxc6Fm8vDn+sxXRoQMJMVBqiv1YwCFMvP88JaWdip\nlZHeGrOr38rdtYhEJlzeAEmh7zJVP1MFQSOG2XhNiuMTWqRdByeZ5sRPWc6U\nMF90MEnv772rCQ0GPaSGCN9guI9pL4GFOS7ro4O89rJzO2v60fb5uWvinFp9\nu68xl5GDhCO10050TMwbn35RlBR55/EwB6j5HphI1qLyw+09WWMYx0is9f9L\n/+fVChj9AyRGH6itCl4fCEfQmuC+8ahJXttvwjRN98BcFErVriktL1ERJinz\nlUsJQ5fQF5PlZFeqTM8q2jueMpCwRU6OiiKYN4ue65kugcRZMKhzRBNSMWxP\nYlBFelag2Sas0mb5t6xraGDhSjaUtR3Qkejdr2xQ6l0AZaoJuQws2ke1WVbL\nDred\r\n=9FT/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC6yPe/BjSB2dTt3gu14ZjUI/+i7VP06dqAbRGY4Mz46AIhAKq5osluD/d8ZQ+lnAKRhnGtejCeqHURU7Wgcx5Spc1H"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.3_1629373518024_0.4390418066255297"},"_hasShrinkwrap":false},"3.4.4":{"name":"@spartacus/schematics","version":"3.4.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.4","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-7a23hYq/VLhyclzhTSE9K7WtNIUKpPV6sPQTop6Fb5y5UnVoeNKR70AitpyAS/iep9krwvBA33H48I6ng2fGEw==","shasum":"85b80d589ae68170307f483f0fad35515dbc2d00","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.4.tgz","fileCount":548,"unpackedSize":814412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHlRSCRA9TVsSAnZWagAAtwcQAJsZWAEuRjG5vKmKsa0B\n0zCv4eHnmLiG7y0I6U9us5K+5LU+FGG/uy8tBb3PjGP0Rllc42nZDobH+1RM\nI7drbXo4V1EGKQ1EzoflnTwNiBO0OWSvNWhW7yb3GcZEDmBfzRq1zl3Qv4Py\n/JCMxsPb2gOsfhlsvO++TqsV8LrnjFMyBbZw1qXUXGW+kb7Qx14YJ7m4kpJ8\n5KETDVDtLC503ZRX6YDxOYADnTdMNZZJvU87Mj3Dtnp8yoe9oT0PRgMdRxmf\nII4mNdhN3dx3tw0LDd6R4DsQAEkZww/aKwJm7HlC+vWGx+2qS9jt93D1dj4s\njB/hXEJ//XIAqjAAKCaqV0SJlur15yyEdanl2HTsyEmlEXBj8HM7micEHRfC\ncQcm7WOnrMdwiS8odNfi/2ZwUeNThafC7n/lNIdI3I961nRum3xCLYV/bk7d\nHPb62UxftzQ/dkqfXiYnerbqkrhM3d86dMxVnzoVRnPoBDuxj0tsLZRBWa/f\n+PNJlDnN6aD1lPRx1OKDkZfzPzdUhpoU/+v9YoiGCodYS17GZiS7AfCoGS/J\nYur0CrZQ2SYQ3LUB0J+R9z8L+MMq9SwLbngWbui8BHI+Fg3ffDOn1qVvF1lq\n9NH8rEvxaeem3ACTjKwCSCqrTMjd6RrfJMb9BauacyXhRcZuU2T0Z8lrce55\n1Tsk\r\n=fahX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvcWTBR+XCSqrbWHtoCssOtgJI22vFrBiylH+WUUb2gQIgDxsNhjLbwvMGAsWiMKLTgovASI87/b5Fq0gVdsujYXQ="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.4_1629377618545_0.532796669102916"},"_hasShrinkwrap":false},"4.0.1":{"name":"@spartacus/schematics","version":"4.0.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.0.1","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-wZMpzrJZUHtQ4ECIsr0Ni5/8XSvATvFKjFAjsfleewyizmtpdn0uzglAAfl8D8PWimDdyVCT36zf+lPBGYceJA==","shasum":"d7954bb8dc39442ff1dc7181b53712dd9f17d816","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.0.1.tgz","fileCount":911,"unpackedSize":1266808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJOJHCRA9TVsSAnZWagAA9bMQAJUYZtKtMNm/QP/1IPpt\nlRiJO4/jV/P88qH+n0mipdnWKdAegSTtTeqhLTSWN47OR10pNL59s3FKEEfj\nktAOQWNEY4ItbpUZnNgvvEZdNcuOfdgUK8AOFVyakLJy8MRK9ewBw+8KSGx0\n5+4UAMOLvonGVRFZm2VjbQsaU64YMSsNaPRzr9rSFTLyBdg2nQoZK15wxJeF\n3HVnB+wfVYl6QqsKzWz5zTkM0cZrFMabGreEnLCz4hb2fnuaVWCrvIsJU7Er\ngxuMGhGM3lu/3yNihsHtYG5336ZxGPBS2ei4JE8ZkprfA01A2ocYr89k2j7y\nmb/tdYr5RTFv06bKNR5/hYwn+WEAuWHiiUDxpbOxoEWpXbw99CRymopJviIQ\nCMIQRGNA5R1JMBMdxohF2G+0KQvlZN4lwfW/uivVv9CDpmE2jdr2YrglrPXY\nR6ECK+AGirZhssSVyoavtfzn5tBnRaBY5XGrrf3P6pC6ml6BBt1DB9MKm8eR\nsQ/LLiTpkc7EVd77Uau/99SpND/JCbWfZ4e89/+HQOeG2+ouNhRBBs8X/OH2\nu8gwjll2g5DTFbEAhELH8VUt8HmM61Am3pVzFQnm1EgROiaY5IGpWi7O9bih\nn5sWnTUD8s7AF2g+0BHWh2p4iQ8sMab/rz1fouFNwiSe8t8INeal5axE/WFd\nk1J3\r\n=HID/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGlgLd/o9iwX0/1r65wWwfJN1CBlUR7YjzuVowtbmQWnAiAdA/7bvxwPAmYSlWcx9q/HTPVmN0SOM6FBQB0+VX0cfQ=="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.0.1_1629807175718_0.21453023966711537"},"_hasShrinkwrap":false},"4.1.0-next.0":{"name":"@spartacus/schematics","version":"4.1.0-next.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.1.0-next.0","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-yaxUl+dR/+rlQ51i4zvybSy9eazVH1EG+ItddVXbOZRrtX1jbzUUfxHW2s/XN9BRm0gCeSDviE718RTkegqaeQ==","shasum":"02ab336bd6cb27d89992745ca9ca868d472f15af","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.1.0-next.0.tgz","fileCount":911,"unpackedSize":1270968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ4OnCRA9TVsSAnZWagAAqO4P/ip7H0TCSnDxSiNiNEhd\nrKT4+zAM3vZLC/tFa8fBmmNDmAFZYO8jSbVr6WtFfJE6ltS4rzxzVTAq1aWH\nfVkSV2bO83DQ73GEcxSuWgrzgRvNtGqKDxdSmJc9EEHPalV5AzaQz2kCTjxh\nnIv0K24TF30uEG9KRIO9PoMNPM1DkDDTjnfa8FBcxmpq9a8icUJtCBPcXH1w\n157K/svuqNH5ui10v4+SwChOuKbSgkzQeT0OgXypR3iQ7+jxpKRmDuPSuld4\npbExr+nffvhQjSuKNs0v6rO52hNwnlUA6xLS8vXH2v1SCBC0E4KJkm8zfTEn\nHOsiH6y2qV1ZdwO+elVHJX+m5RQNdEx+x7gqpUu1qgoAPO6gd06KE/BNQkU6\n2aix2veJ/nboCjgvyzObu7LLBIRHcle5E8e3jFvQsLMDBVUMB7uRUh9eFTsM\nCX0EGJ/IuCtqXNcdu+BWbWgxY31rT5ph80xZhiNpmusb3mBVr2ds+gRc1lfT\nJsBsjNhkG0yBIgrihSookONRvyViA1PzXvGyqby7LhcW9hX8j4RDsA2w/YdX\nUXCQiFyegh5b67XHlHY5KsF3fzvI8Q2U3LrE83fpEnGxkJ8pAgNa3HYSUDKs\njdmVNghBRtHymSqdeqo3qTwgISeiFr6/N8QQBWMeRuzISzXwUd36aBpDhPtR\n7Y9w\r\n=TBNp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC27rMyR4RYgndy54B+OXHhsjw6IMps2/yhmIWDAr6ytAiEAtw+eujV/OdCbWKZeOGFd9XScFjw8BjMsJVcLiH7XUqc="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.1.0-next.0_1629979559744_0.4289962443448252"},"_hasShrinkwrap":false},"4.1.0-rc.0":{"name":"@spartacus/schematics","version":"4.1.0-rc.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.1.0-rc.0","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-jdJvb4JK58sddRuthdGyrQlq6THpr/vM6lUJaSQt6/xyJ7ZdXCIwGB8yPmNb4vn03Z6+9JR2qY6B+pX9KvOR+Q==","shasum":"7f5f30a5cb7ef2a30200d38a981a487c5d8a07ea","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.1.0-rc.0.tgz","fileCount":911,"unpackedSize":1270890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhL5iCCRA9TVsSAnZWagAA/dgP/jSQl0ibCKGots4r8smk\npWqAf7NQcDZC5c8VbrU/t9i/cMpgQ+IChV7v/tFet63phYCb6ArSguxN2oID\nrWlNOUH19OkNj6+q+GGDSqscvrflWR6AR5+hSpCHTRmm/t02BjBWOnGJMuX5\nuogFdnltu0XWAfnmekSpQPiDFhzeHArsjDY2YjyjXCqOMYCrQl4iq5DJOTjX\nZMgMP9kX0iNjMSc5VzW/YW20MmaV64Eks4ERbF4xg+hOLpoUqrudnvB/5Nrh\nwTPJU1u/23Jaz7rDEL23IHP1CrKwwEulhAnWuDgNSC3l4BUjd47r+abQM6LB\nxQUGMorjEYAq3ofTRtktBZ0TBcjhR8imlXvlgSTJ3/YAr5OUz7rORiAhSnQs\nDt9ZWB0/9U0xVx8SfCCthJfQAn4Iwgx1nsyrj8iwJ9BlB+i/mksDpLICI+MG\nlIWWcm/RAsGLVGiTIz6ATF5EkAAZjpANNcL3S0e/HKEohfeWkpHhOywX98Vt\nl06gtLMc1BMxryiY5ky1ckSAhmMjEQBrEnkBvQysoP2AClWYG6PLi5nA8tx6\n4bC7V2RHzDuoV85VMItObWAQDLxGFaa0h9D2uBRCGFBa77YYvS7DubeQ/85a\nwnvsWWt8imC/s3AztlDjd9mtWA4hSY7IczgMgPvSdvMFF0Pow2fp7OmUDa8q\nk8ek\r\n=MI7p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDU465EO1vJpb0hMWaDMA6djYUAMPdZEYF0vfgiajrUlgIhANlYCv46m44v5ocW1yIdupSviVJHuZi5fuhVsxSt4CJ4"}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.1.0-rc.0_1630509186548_0.994260420771498"},"_hasShrinkwrap":false},"4.1.0":{"name":"@spartacus/schematics","version":"4.1.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.1.0","_nodeVersion":"12.16.3","_npmVersion":"7.19.1","dist":{"integrity":"sha512-OwTrnKUJpTd9M/LyLFp9py0HZgiUpwQ6gsUByfzbTR7S9+s3TNJ19BLuCr1C5wrDl6oAAYFirene+nXvwBsYbg==","shasum":"1bff0940124ff70e78f22f163e6a4e737bf6c4f1","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.1.0.tgz","fileCount":912,"unpackedSize":1361613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQHU1CRA9TVsSAnZWagAA1ZEP/0uPrGvTtnGXIpK488vI\n3sbl7J3CCSDq4b4qCznhOipVlhTF0A+VEjtU8Nm7JQ31/D/SwIEGy4BTuxpO\n+6bcWLyiJSpllJJAbdRWMlPS5mBwVmO/8mEMIXKzp9TpcS2uVCqcMcj1IYxx\n12LxPGwOQn6bLzz6toKmKvIXC0zDqnzkqklKyv8qNWXsMsf877I+L3ksdM1G\nfhX3Njp284AfricL88G8NO4NFeSbL4yREvJHb/30cF/eH2g33NNhNANRpIFE\nYHNRHWrvY9JDq9aQhVc0F3eBQJT9g8HJP9YFJeSCUuY/ZN4UP5OnI9LSd9Aq\nXoKn3DQgQ2tqD1CJ6T00m3zkPfuSZb1CxQ1tDqUns0RT7i3tIsCDY/oemSwY\nixFXeWEGqCgnX6uKzixAQWhwehuPBoreCp4hHpbU9nQN80SrvLHbjNgaJ+dH\nAg9gaLgGcMM7pDGN20BfMvghWjEqL+fG95kFY3RWLesfjVECOTJS6AAEre+5\nf8W+wZhf8WsPK5RjAN4ZwCxR0BPPzMeKATITxShr3qbs0PO76ocjLXX0DAtA\nthw73ugRCZRbbP1OLV09SOKkL063OwE8CSHMp4KNjGtp8RgMX6GiFvbqciqZ\nS9ZPL0iugqWc9537b67HDDfFD4yeDqbRCtocCTUXCRN8GekdBUw422BD7ZHQ\nN/rA\r\n=E08V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVJPjAUA+JQI5NKYVR4Q9Yumppv4ntWLnMORjJ6Rfb8AiEA0FNLKTEnZTI+gnzFfVN94L9cQdpRVfgOp0Snp/w8108="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.1.0_1631614261392_0.5934649227209532"},"_hasShrinkwrap":false},"3.4.5":{"name":"@spartacus/schematics","version":"3.4.5","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.5","_nodeVersion":"12.16.3","_npmVersion":"7.19.1","dist":{"integrity":"sha512-qUInzPbBsSAyoxUKLua4mJJsXesKCIz87iwv0RHcSnsxQw6zpsJDFm4L3YDNYi8IdAgCkWSYnyHEvycgghnAxg==","shasum":"5afc6eec1e56a132694c16ad7a746a194bba33d9","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.5.tgz","fileCount":549,"unpackedSize":899275,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHtN1i0a0VQ6xpknT70s7lellEUYcTSXxJhMbP6dHdUIAiEA4MXptRATyt5V6myDDajc93uecpaf2jbyoLTW18yNsoM="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.5_1632390518002_0.8492738683996219"},"_hasShrinkwrap":false},"4.0.2":{"name":"@spartacus/schematics","version":"4.0.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.0.2","_nodeVersion":"12.16.3","_npmVersion":"7.19.1","dist":{"integrity":"sha512-xQ9qkt++F4HzTRIOHfdVqEQU5zMC7Wyxx4wAFGdeZYju2snxUcn2SF+8gaxzQdOYfoJKTve4F52QWppAjJJ/Qg==","shasum":"96caca21b9e1599c8d95a4c68ce267e6156b276f","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.0.2.tgz","fileCount":912,"unpackedSize":1357819,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDyrh4CzvXiOVv1tIW5Cdff76mMEhi7IehEQ/lN1kHJKAIgVRvZqEm0dxBXpB+umCXKs7YipcuB53gYdWr34dCBpCo="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.0.2_1632401071528_0.6395055737444197"},"_hasShrinkwrap":false},"3.2.6":{"name":"@spartacus/schematics","version":"3.2.6","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"https://github.com/SAP/spartacus/tree/develop/projects/schematics"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","_id":"@spartacus/schematics@3.2.6","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"dist":{"integrity":"sha512-VYFLfd0gpsLKH8umEJ47zGRfe/0VzCDz1Oj/TLaK+/e9tu2jUfD9pE+XpHfCkDAlCdnSQUOT9NJnkR+zhccN6w==","shasum":"ee40f4807e7684024934ff05166eb40985a48a32","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.2.6.tgz","fileCount":533,"unpackedSize":788515,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV0900TNWkCOOQKfvFsju1+HzN0SFHTCdGk2BNnFbuDAIgHnpoFLXwwK6GjhFsit3i1iHx9lu51PYNvrJBrs+BbcY="}]},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.2.6_1632404590634_0.6586005797141172"},"_hasShrinkwrap":false},"3.3.4":{"name":"@spartacus/schematics","version":"3.3.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.3.4","_nodeVersion":"16.1.0","_npmVersion":"7.11.2","dist":{"integrity":"sha512-nv1le8rNnxKgGG+nH583hVrY+Rpeo6XNsdpxQr0pJZV/gwdg0lbJpKKFKQb6nMNRl8UIqanzfvhI28flggdnaA==","shasum":"6d5cb3b1f865248f8d42d67a950aa5975c86b8f1","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.3.4.tgz","fileCount":542,"unpackedSize":803999,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPzobD7D5kO91WGfuXe/WbDocn83x0v46ZxcJAitFoYAiEAyTQxa2mn876nUbtoicNSepYHWOSgFJ/YcC3PXjB+LOc="}]},"_npmUser":{"name":"marlas","email":"lasakmarcin90@gmail.com"},"directories":{},"maintainers":[{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.3.4_1632409160742_0.5452220434800634"},"_hasShrinkwrap":false},"4.1.1":{"name":"@spartacus/schematics","version":"4.1.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.1.1","_nodeVersion":"12.16.3","_npmVersion":"7.19.1","dist":{"integrity":"sha512-LsOeO0Cwa+OTaLEk7XI0gL8YEvKejI12ldy1AnYpWhyvs3MztsqXofmx07tggD+En0ZCqhRyn5jWCNCJzQqpUQ==","shasum":"e57514b6bde91381b85ce5c1cfe05eef5b3ea61e","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.1.1.tgz","fileCount":912,"unpackedSize":1361588,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDNfFtxQ2gOF92r0lLTAvsV2fSzhHC/DJc2qyrZbhMy+AiEA95WRFuhkOMWjGj7ozQLNPw7w2UCDUNMEZhncvOMIB+g="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.1.1_1633525372755_0.6237684062862423"},"_hasShrinkwrap":false},"4.2.0-RC.0":{"name":"@spartacus/schematics","version":"4.2.0-RC.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.2.0-RC.0","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-CIYgbEWyk0JbfXMhxxgB3EhngDSsz6xeOsuAHMHEPf1IaoADNRD7ZPS3V1UyESPcWnU+/FCcqOEzBMmZbGH/RA==","shasum":"0d51f6bf64218c71187da8b031b820db9dd26d65","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.2.0-RC.0.tgz","fileCount":908,"unpackedSize":1264058,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBq5CFNQXILJ9KBHxDsLg9yC6vikXixvZvvJM2Eh998mAiEA57HCgYvp4FLwy6KFhPIdHwgSJVjoqneC0qEp2cZUXno="}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.2.0-RC.0_1636384497341_0.2604736387378366"},"_hasShrinkwrap":false},"4.2.0":{"name":"@spartacus/schematics","version":"4.2.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"c84839b88ff7a9301148f4b6f59b5a807c8c2dab","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.2.0","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-GPcEBBwBysYTnVreK+4vXaBlpaRv0eaOVHwXlcCcuU3WGBNdOT2yWlmao8njb2HP4UDKEP9Sw3KLXpYOwaqJTA==","shasum":"82d4ee2dd18d673c660859503a3134617b85ee5a","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.2.0.tgz","fileCount":908,"unpackedSize":1263588,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEynhXkixI3O/AObXk6gEwQCCFQ4O7JHQthWp4QuPpyGAiEAsF8LT3YiMenJ91T85v1hjGZ27Fr/KMi8GzZSF7pS5as="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.2.0_1636538772701_0.8586742586334193"},"_hasShrinkwrap":false},"4.2.1":{"name":"@spartacus/schematics","version":"4.2.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.2.1","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-ryoxz01cBW5so4vVhqm5plFo/C0x2rdYYGokUvISj3WYd9e5cgocHxBzuYam889H0V4upB2qnViQSeRTEdhB6g==","shasum":"1f7524af3da4e0f3e82f55129c3c6898570eafe4","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.2.1.tgz","fileCount":908,"unpackedSize":1263588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn79LCRA9TVsSAnZWagAAh8kP/0aI9xfRSlyT3Yow2rlF\nJmmNxAofPp2DLZLjuoZtOhEHFTG3h9SfOUnmcOJ5Figo7TAXA4+VYsmIoIe1\nIyucroH1bhlNA0WQgwKjvwkqkZRXtBCL6EcNNtLyPxX0YaHPHsdtIgbFPmyc\nYDPEspuSMEhrIWnhsavLhuPLFFFWhEolUuIG5MOKssCx7a70dO3PXurwe6pt\nQgZ9C7NgpfNn6zmLn5HkIJX6ne0Oe1qH05hcbAI2uo3Zbi52R/9ZIEmBEhvu\njb8uAts+7ZELLyVqrX1GsT6gZL4PZjMHGBaNd5HdnMbMjW8yp+tcu1jL+PIK\nSFv7gOri/a2unbcNV8UkXlL0XQnMs8ySn+kPMROdk2++UBs0scgp3SUBDJGw\ndEI1ytL1WN3SiD3k9m33q/ur/lBureaDIRmnKAx0WxLUNXpm6J6ZrOVaugR2\nFSs3OvWSk5MrXZrj2Ucg9bRoDwXXmu+59JtTDtfyr8F467H0M27I8EKRCIer\n/2w3nnRA+uUjqe+Knnh/U6WkO2OvDbqGKA0KVnMqGRsuavYmfP5SVdyo9w3W\n4grpCzCmM22pAn8djkqAzL8+s2IFbm4XajhU1LE7WGrz2LcWNZZpu9jsArDE\naCjhsuonVoHVQpynQLFGwU4ibN0W7Xy5DgF4CKmsE5wA6/3cdGfeuVS+IzI8\nQVtL\r\n=nsyB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfvz7ll1W+huLjJnzgIg8xUNZoF1LWQRYfP4efgvNrvQIgKV18sUMz/KGR17L0tH5ik3iiHRaHjq2RFy5HaSrd5tM="}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.2.1_1637859146848_0.8562008167755584"},"_hasShrinkwrap":false},"3.4.6":{"name":"@spartacus/schematics","version":"3.4.6","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.6","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-6W16s2hoLgldMkBfbuz3kBIg2B1bpTxZZ02+Up0jVAlM9sIwATkmSSFUb7/SBcj6RQ6QRsl8WZJNmQloSoANjw==","shasum":"fac98857891d8454ec965877029970f486548adb","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.6.tgz","fileCount":548,"unpackedSize":814412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn+QICRA9TVsSAnZWagAALFkP/Rh1ZCVTX2phHB+Chxam\ntBR2FQYUzCXUAbGUOdLdZU1vTHxLpfaXSFlvh44i2EjYJS95b/2lXaxmXGEk\nxXd5tN/sif1aX1nfyoWPEwz1d2lYg8p2QlYe4awUyaejWzDupsCObeBeRu0s\nmCgKr/wkTcneOftMIxo26cehqGd8446e7Egce/FHOgKh+1U6sEcv2OTJ/jlM\nnzAS+TBgScielSIxUomYv+ixRNcXi616wsaFt+LlvKdqZ91d/YxgXu8nwFz3\nZPozlieC7xNeiY4gEdehjMSS7kywGulXlihVmxGRV29lDXxsaE9EU2QcOna9\ny2A+SLWF3MjAXs0PfWtETRkATE2gzbj+exPei1KonxlRtO33jscDvXbNHCle\nEo636zT1XwolI88S9RW4JX4vWhZ0g1FFmTHpxuHDbZ8ip+9mLnlhdCgQ/Y7R\nzZNwiDc1HELq7KZauRzb2u7aQjLMb2RUehe37uAYjbWj8LtQYwUpepyFH11G\nmSSWeRArDJxlQPnoR1NMF9+tEN98wBYPfVwwK/7kfMdVIAjjHHi3/ZdXiwLe\nKzCpxL3tYYtGqkKGBLFNsASj2lB8IlR+YBaRHaP+3SkK1DalCUF+1kRWY1yT\nLdV1Tbt+oRvgtPvqd+4RLba+E0h7YBrywVpMC7iPSa3CeFN/4F9GRY9Nf+18\nCyAl\r\n=ba2a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeFpNmzP0kM3hW+3wrydFIqk+04pS8/iv8dbOmj1TScQIhAPiL25OowSWqBMlNueHp1iZcxiOyPza08H1uxNyt3JNY"}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.6_1637868552213_0.7366165128148552"},"_hasShrinkwrap":false},"4.3.0-RC.0":{"name":"@spartacus/schematics","version":"4.3.0-RC.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.0-RC.0","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-ZDhqOLeuiY2F21N1jPrVXn1LOdku9kZg1maUV24a39YFPrBt1VomDmFbG9G01q36sGOco+lnpCgk26/zZ4xzSg==","shasum":"6fd1c5afbef509505e91d867b446a829e1b6dc41","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.0-RC.0.tgz","fileCount":908,"unpackedSize":1265047,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6eWSCRA9TVsSAnZWagAANO8P/j1LMw2cZH9+cSRYKDrT\nWVtZNOqGtJb9FKSbFaqtzdD7FD7w7HPqcdHGlfmPw+VxLiy/ePwgN9qBQcHi\nPU+zrFv3ZJ5Rox0Jw9qs9uWNcnXCY8L1SlmfvCDFS2SHhujQ2PGj4aMc5WeC\nXh3zg23Djdu1DLZE3RZmn9QXm5t8TGlGEi9NJv3Knn81caSQ3opcc8EEbJdm\nJxqiKVCw6Bw/cDElUFX7DsMFfw0UrFoKTSg5mCuUS+5BJvM+ql9WRouFuz+k\nsuhVIWJWvTgX8eIEyQyA7xnTiwRF2kF3AyXrf1dR1fIN/7QL6GOynOShOAby\nTQBtUZQZnl5zEMruSrtErTEXxvqTwJOckq9/3XubTB45IyouFSqxLY535dAk\nHC86Y9TMlO400iVCOoGCPRmfewVhakNjkMb3vHgP9aSi46pa9KSNgRjsImd1\nJQ3TOXF/C49IST8SGcGX5dKM10YxODiVB0zTfs3rbENMMIvHCuKJpwCBkXNt\nc6fJgXU+LeT4MVFzZ5T4pVA1do1+V1rM4YGphhbpaH5w9qyYwq652lIVICxc\nbU792/+fheEFVE527u9dFdlFMbktKLm0wG0aBIjYhg34wX0RrBkkM8O/fIwx\nzPU1xDv8HpG6rElK/9wxVEicdyp96SSuUI7l2MGCrSx7CbY7LKI1BWWH3a70\n7ikR\r\n=j1d1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCawYFvEfM0Waa3VZYPO9Kx4r6186lNc0EYk/ITbT1ogwIgTaIMqLVIIChXdCjDxS7G7Ej1NaiRBgGfiCJB+IoZNL8="}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"marlas","email":"lasakmarcin90@gmail.com"},{"name":"ltiger14","email":"louis.pierrestiger@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.0-RC.0_1642718610499_0.788190620901208"},"_hasShrinkwrap":false},"4.3.0":{"name":"@spartacus/schematics","version":"4.3.0","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.0","_nodeVersion":"12.20.0","_npmVersion":"7.20.1","dist":{"integrity":"sha512-zWvnNIpGlrdh5yHs0PTqDy2bWZmIYbVl03eSFvnP/78C+pwoCZedUBOhF2sYLLWdAPCzRL+PhDfoI7k1x7RVnA==","shasum":"bde3b2abdc78f6f06644fccebc52d6cdb0898095","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.0.tgz","fileCount":908,"unpackedSize":1265366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8w55CRA9TVsSAnZWagAALgkQAIXrdooXCqOK/hAtgmJm\nRMTqeaPbR+btK7h0fiff30RsOqfYfWqCi/5mjFzt4t8isIHstPDhzT70hav5\ndD/Oct177DfPCzlZdgSDqpHeMgdkaHCwcHEOPQvXg4LzD/M0t8VvUll46wti\nMppDbxfDMfdaOPPzbYLqeI47U+ydAFOTN1qzntSjgfyDR3xk6dY+uQR4EFHt\nGCdwQCt2sDgPYxcweMKhJzvvXXbaYeY78alJKmRA/u7CHkPmsJsMztKt1R6h\nrx3kBXs1fdLL+zTETVxSNb3Byd0tbTzhbyHvMBaBS3URA5SQKn9k4i1QeEfc\nGXA+gZ/9uJwD+Q22XYALDbh7AC6fZR1eFR+lUHd1TIm2Bz06W8WApbKQklh+\nV3jmS4m5IusnZwQHNTV0aWitkYThSYiy/ltaGMsNAxk3tOoxKBgs2sxpZxc+\nsIzagSP2rY0f+e1FbrOezxvgS34zPtQ0hEbr7IFS+YtNCXoZg1hFR5Bk2+gV\nihWhEp5JAGgItCDMe0YToOzxvELXwtjidf9pkLAzc6Uk84ATBuCiVNGNzCHu\nDKE4T/CiV7F1KSYufe6vkfCiYE5794gHxdCMIqX3JEHj6RL0B/a14z6Ltn+0\n1QazeUt1mscDaJ7DwV9LB/ar0rtN4GFobv+Y+/akXeS12OH6oIPNNuMAtIXd\nvK+V\r\n=zk5c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTVFLtGiDNlX1PzdhjkzXc+0tzeAm0d5v07Ic43YEndAIhAMZxZqQ7h0tCz97BSNlEmzxsHC2kojDLz9bYSUmD6jh9"}]},"_npmUser":{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.0_1643318904862_0.5855763916640857"},"_hasShrinkwrap":false},"3.4.7":{"name":"@spartacus/schematics","version":"3.4.7","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"56481662a0b721f0c661829b4a94e9adba427ac7","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.7","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-oWCHa8fILZF6uoR9lNtuK0ylL2nTm47JwWpxP3CboVFfcMy2xyzT4ihfYc/CQv8Wq5rRbEUAh4wj6Sqsgnk4kQ==","shasum":"5327b74f3e171433c466076a633524a2ac34a183","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.7.tgz","fileCount":548,"unpackedSize":814412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDNn1CRA9TVsSAnZWagAALFUP/iweAXHr+jn7VZlU/xic\nncuIU2Ba4sNTDAxRO/VyFOBx3grPfqp0kQ15ag8hy6UCwkxDPsBE3C757LrS\nPP+i2DsYyseztNKkjOsdiTgwWqiYSxYjbjOk+30abI09q23wNE5QFG1nxvsv\nL/HDaqJ66MxV6+vt0HkVIR4/5VcJZJiUgE5ejqiK5D4xNQ6wawrHfxQO4nuP\nRDwyhVlyvJoX9j8sUn2CU/OPru5Pqyn8b03hrOSgJmDiCoGV4sekNbVIBzze\nGoT/hkzjLF/Vg9xmmqBVwKnBk0Lzrsa7expLL7KIw3DxpqA6XSrjxoKUDDBH\n0zKSBaCBeVPyUkxgkql+Qoz6/qRDo1H61/CFt9HSLUQ2q6/jllsaoqdDSR1w\nf+6vSy6a0fpp1vWCRRoAUXu2yE1FrffjWt2dxOeH1VtIePsGbLVTz22XaXai\nftWJnSDCRAyS+xFeDx93xiGiyTx/hdYn8HQZle0GVQHPJ9JaGO63A1di0C6a\nvoX3uRnc4Jxwy42cyGk5pIGZa5wRQuUiNVHfp+ud7hQYX2iOO8jPYixJmJj8\nR642CX5iJ/OS5/6qfkoTV633zSzTBevlNZIizOjXbY7xELM0ZNJBWWxfLbOX\nRqgnVcdM1i+XLRro8d/7C1inhJo+kSlbCprsKbWeW9bqyhl5+G4TI9mv0VMi\nwIFs\r\n=24jG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICj9qPmmg8r7dCqNfC/tuKrGVGeWZP38+NxDCyXKbAD3AiB3l3BV+LS8Geftu49DmD4nIQrpasWB/oMw6QAXWDFJvw=="}]},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.7_1645009396830_0.531446471750747"},"_hasShrinkwrap":false},"3.4.8":{"name":"@spartacus/schematics","version":"3.4.8","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"a713164769080cf4ab66f068d94bc9a87fc0149d","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.8","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-WsW/3FuzHSuFZ4Vytk+njw3UDh0ws33B85Uy1uEosFb5cXyBO29XeTl6ct8F9dBLS8GobujbG4CjScE2LeXS0g==","shasum":"b62a0bd773e27a6f9f965de5646bdf745c59822c","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.8.tgz","fileCount":548,"unpackedSize":814412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNJ8qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvNg/+MGHrhYZ98X+NU8h0QTvTUitnK+G8bhF3nnvvrpGBbIY3Oefb\r\n+jF/3FrmcN+42uTN0Luqt0MqB3k4EhzpXE1BulVpYCc5+kHy3k48si0Lx+7K\r\nxUNN4x7incE/MAbbMFW0n3n8JIVS5xh9O3ivxN9ynhxlpx8sn8NGYBzn0n/o\r\nJxTFKzuYeexo9IMdkgMslFJmWP4uTnnmnWjdx62VSqFWRQf+JbromoTqdOR/\r\nbw1ByTWRgOR56JtyEhoPuFSCoOKquQqigDvQyPOMrQNOiZp4UymIXWIXow5U\r\nsXSJEwXJ4nE6iTcNylDY7n3JPGFG0KfwTT8tjJ5U6pFDUt9fwOOee1Qbzyf+\r\nVM6yZUBdi94j3AneJVy/FDI1B528+365pKD1edku3NOWiwgv/XCjxmkqw1sb\r\nT/81M8P/5qIopmQL0ZlFiLOoZK8LAM9XQjl1Ca2X6QldyB5qj4eJhAyxlaJ5\r\nfwmeMamQfn2836TFKQpNfzbZ9gL2PqG+DzWJXQfOR7zpZ5agcbwhJT14WRVi\r\nNZYKKQ7H2q/0EVnzG/YxURP6s01scp0VX9V7WG7u+G+0Q5YdsGPYLYRU0cSK\r\nrxgvHiayPlypd88kixd2OQQcmyxwllz+xcn1c+ifPe+d3WC4RJRGgc/UcW52\r\n82lvZN3xkkjioh1t71oZGnjn7oX4ZZ5X2dY=\r\n=VhmV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzwR6tgeG1wVDLpjUosb9mSLy2ulkoDYuvjbT1MYC6awIhALKshM+bWNPebBFVtLAm4OmJfJrIie0BPHQwAWf2K9nU"}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.8_1647615786263_0.632642406280072"},"_hasShrinkwrap":false},"4.3.1":{"name":"@spartacus/schematics","version":"4.3.1","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"f98c9daad9d8e25efdb4ce91cd03c572a7b50109","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.1","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-+fIBDRqC2iKEc7Q1YrlWOF683kxdKVV8E0jEYZgHJQoZuDXKaWQMx5d30rCXcsSt+cF3nOMo6p1vEF16KdMBNA==","shasum":"87fe6f29422e36e460670c5716f086170f0f3919","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.1.tgz","fileCount":908,"unpackedSize":1265002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiNK/xACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpDLRAAikpwfpoDXxp9JaDTWvstofmezPjWePml8bU77xdPNRZaGDS+\r\nAHtrHGcKaFY4j6gkSJVM2AOoWx8sh4r0dr46sm6tEL+75M80QJPhk6kttAma\r\ndVwpVNo789ty82VFV3D1WJafMcTEnXmLDXf+Yn3Gt5xeolSv+c/REdfb96l/\r\n0CC0mwpfMCi2ARs8tX561305hcLKukEmGyxc3G6x+cjZjp9bZneT0k60YtLD\r\nY3/ZF1Va9HjRltcGxx8hfjq1HFLvno5hXpsowUQ9XDWIuN1T/00lTdaS7dWl\r\noqLxdShM9We+91YpCPIEbGJVql9uXEdiGHCxozQ2cTORdjwjyRsW0wUTkxQO\r\n8QDinVgY23v1IfQCxG8ybuOpfyrpjP6M09vuRPSdkzSqyqgDFcRQ2xZyIEV0\r\nHXFhO0VwTJs8Rzz7Md5+vomTskorBx+5YG6kwr/KJRHvX3ZrbBUJwB5whQQR\r\nQ1gXXl3Jx/AfgQKOC4XXYdQp/KI405c1Fx/Xr/efJn72XQQ60l6qzJfyp84t\r\nHoIm+KNAhT1UtpXfjbdYqd03vqXVdPZj+jwGUAulEuPaY0nCuzdZ6oFdQMjQ\r\nCRxlRFb8Uzlx1k7UmJoJ0ELPW7OMYi16txXWlx0McRIEKDnunaYK2AT5yL56\r\ndvIRdz2B+q9xAbZO2yiK+eMNUlG+iGVRRp4=\r\n=5jRf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFVfzHXVCUUOTNlF/dq1kfaWy/Yt+qlwEIoeSdLyE0VyAiB6H9k4PFLlrgMayJCW4YLCt6f/AzjBmoNMjj8ni/pURg=="}]},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.1_1647620081644_0.6176705316316"},"_hasShrinkwrap":false},"3.4.9":{"name":"@spartacus/schematics","version":"3.4.9","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"5c1dfc48c3542a97e249da1863d76ed12881428f","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.9","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-owNXOjVxUw6TqxaVbvd3yvjXRxV4xC7iQDM9q7xzwTiJWm5KHzyuu4OjWm22H0ssA847ENGURAkf9Cjt1c7GmQ==","shasum":"ea3be2b07ae0b8c9ff9eb9bc6288153aa9837257","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.9.tgz","fileCount":548,"unpackedSize":814412,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLm6FPcXytC4fBR9Jpw00lZwCrGjXc1bWCbZ9CuDU6rAiEAgXr7qVsyHyJXW9Fi1fFbyQsAyznSH2613bcbk6Wck3g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZlukACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqF/hAAoAQCek4BMvu1goEoaBwF86VkDafENzdY78pFXv4GMPeOwv/4\r\nJas1J8KTczgqX5Q2728x8FpJ4UTnWxfSddihH2II1NRSjQu90Le3lT7LsCKZ\r\n3OL3yMybLo0od3OK7IFOTf1bP+zDHXaK2sYRay7CPHazrRItH3t/02lotJLR\r\nYgmtmu2zOmFVDtd257H21xRLTb0LRigxmwPX7YdlMXhdJFK3p4jmzwR3i6fk\r\nXdTiyMSV/TqCphiDhPse9igDshjYsVKPmUelV7TL9naU+4a3Mlqj/wBH9p9a\r\n6y+XkgHXk2YQWraO/FU04tNNRJGcSaBaK4MjTYSo2347KDwLwzEn/nGCZ104\r\nmWzWWB6SDEOik1/7/3aYGgXtYr7va/EEXGnV2oSoJsyRX9z9Hp0GwJCmG33L\r\nOrfl+fVF6w3fvXTnHraVYsbVSuX8SUB8+AX8oJNz3zexc2FalxjcAgUcAnkh\r\n+cuHrKngvCJRZeSDHvGnJcZ5AJxM2YnVKAx76Nm39ghoEfAMKbp906TnCd+9\r\nLMfb8cIm5hReWLfYIeN/oYtf0Ql+Y2ZGWLzljBOHi68z1tLCQt7IBP4T6clA\r\n9I5jJWBI2SMyJzjTiz/30jC1DlV2C5YS0m99y3w9f9PawTmjt6bKE3TKqZaU\r\ndI+gMdq6Cy6SZ86ug2hValjWucVcxVN+yTQ=\r\n=jDug\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.9_1650875300371_0.1940271535098439"},"_hasShrinkwrap":false},"4.3.2":{"name":"@spartacus/schematics","version":"4.3.2","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"d8ca8468e28b62b2142c12d07d330e147f6c7ad6","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.2","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-gU8RUCjBdFtKYAHbTTtDgDV/Ogu+aC4LzLJ/bHASaJE74qaIPXocj6lx/zCmPK/cJAawk+fif/X2a/sMROGvMQ==","shasum":"6def5dc954a0d4ab6d73b1e8b56398d96496ece8","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.2.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDV0mTgxR2Z4zseW4ZFlfgAyJnqMpVGxKuecmADho53zAIgGKZtH+Vj1w6JX8mpGzT/1nlnBmze+X6mXHIILpIttjw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZmjuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZXA//S47OxBHANOmZOOyy/JSx7l5xTqAnl0++wptmz4cb/00LJQlQ\r\nD2Z16CUqq3zYNobNudAy3NNujYNLmjCi9HDbk37tt/LyA2PI2gs877MOOXy+\r\nmN4kCAq8yM6OHiUfUnMYWztxUfJUI565vcRpoRFYwXaTjoSd6ynwjIKAjjLG\r\nTLjDmgrYwulOcj5PpL6zPDMczAX9Fgj6eOoVeYD9slrAS//8S8iFUW2wCaNf\r\nhWhMUFYx8xZPgXCnonaK1fWV4IZtQUPtWWXDUaxk1TyB4HCJ4tLGxbz6yz7a\r\nU+5OWBrPug6PLOasfQg+yuZYNqtnHOaH6oiWqvTWg9BDfkl4LytQOsoilpJc\r\n/YGBxCPKR/wDA4SCWEszQtEApXiqQ4XCO6Qkmafl7qoVK8FWJfwiH7QC+5cD\r\ny/eF/KyQnC7JyjXcnQ8Lt4ngTUdCGYTX3eJyx5+c+SUrLdrp2YPXkkENYwOK\r\n0b/KTw3CehTRaz1f+r+CgP8o4OJ48foi/IDmrEZqJFAVgxk8n0ZRSRFFctXh\r\nM4GH8IERiiUG0fo3V8UZzDhbyXniJvqhbPlarqSMSBrL+d6FwA9faQTKh/rH\r\nY34i2YQOzKPkJ1z8PrnVJmVfWn1bGtFZgDhJJrGCGuxqBmokL7z1AW62Mc6U\r\nG2/ELoL3SaBRPvi1AZotMsX6FrG6YyaUwpk=\r\n=Xq9V\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.2_1650878702748_0.7688200748615779"},"_hasShrinkwrap":false},"3.4.10":{"name":"@spartacus/schematics","version":"3.4.10","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^0.1001.0","@nguniversal/express-engine":"^10.1.0","ts-morph":"^9.1.0","tslib":"^2.0.0"},"peerDependencies":{"@angular-devkit/core":"^10.1.0","@angular-devkit/schematics":"^10.1.0","@angular/compiler":"^10.1.0","@schematics/angular":"^10.1.0","parse5":"^6.0.1","typescript":"~4.0.2"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"f7b0bcac617326e43af1a8dede1e129186008b5b","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@3.4.10","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-3NlT7I1BcNlRu7GjBCiXEt/AFBZHuu1c6X8V2jSR70MKTQ9/vMJ8v/zLE3pUv9ohWKdXGS3ibzMTRiMXE8LEug==","shasum":"ba290a9fd7d09d52c768ea2dd223637d288f93d3","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-3.4.10.tgz","fileCount":548,"unpackedSize":814461,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQxyv4zeNCzN6iTbsKmnHGHVEKw+hJ3YUdohyEJGvKogIhAIiEkStf8s0Fg13SNoPK2nm0B+X7VOvWhQ3UvLCH+66o"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaT5HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmodOQ/+LOgCPptz2STuk2oyfpej+y7aOSHcZXC6Md7IzBxg+E9bC5ab\r\ntbP01nNsJ+uKUw9x1RA2hcH1Hf/7b0hVGyd6r1ClW2QQIFhEwHTn+BobPKlW\r\nZSfwjYAVVTSTGxVxlJjJTWXDPQtzgWS/q4Sda0eGmIkvSTZXImV+X/ByHG6W\r\n2kyKdsKBJZgKsFJ+k/+8ad5XK0HF0yzQrz8zdovQdBjOFKti6FKaOyRkCzkG\r\npUrqYnxLogTKc1HULt9wSRBae5t8hjhm33584/ogxkxRkXWtpg9gJFxu83Ed\r\nbuYej5MlZt8rbomDwcjTwPqcuD5OdNNuOHGGL7IzOQVjbOh+1g5+wMBoV+7I\r\n9eCDcKYkywoBaHofpFMUvssrZqTmDP6/YVy+beUjJtPogCJaeDH03Hbvj1E7\r\ncDaVrRPy+TvgV9hDawiZYGJ2KknT8cr4AYj/e054FH+Z01QD6Ktc4R24WNPF\r\naVcXLbSlhP4VbW7lDIeeJjC59X0wNCcOJbS9yO11hc2GwPXK4XdgLa6EHM3G\r\nYLucAtkCuiOL1VoNsE9ZK1F/EJNLN8nhj+b3Q09Te0lIGGG6n72Ut+MqO3OW\r\ndVyZP9sPfq1bbGJP1rXSzjfGchJcgFh/aBnIgB4hOxGBTFv7meRZgGP9/h7x\r\naO0wljm0cm2mxJntfLRQSPNrmUIAJZ1GFKk=\r\n=ncLJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_3.4.10_1651064391349_0.7726270158257045"},"_hasShrinkwrap":false},"4.3.3":{"name":"@spartacus/schematics","version":"4.3.3","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"10aa7e53607108ef75751157810539515d319c79","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.3","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-Tq1f1SVKfqCA/21ItrgEC6FEcWO2ZpMDmewf8qGTXPWNKQpWwi8JPkc2qu89E6rCriUgaIQfEe9ZeiewxClCVw==","shasum":"127a14a2330afccb749e6de408fc9bf3f85e51b4","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.3.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIApptwUUSoLKTFNNQaGDP+EDa0JI2VHOIThDnLmca0joAiBENiffMBWMNv5y4aGf49qSnwV9h1yl4OnhAYyZiB6fqA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiakwzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpiNg//eN8MyVaTOcuAY9nQ1yf/q4mu0qjn0anWWri08zM+3YgI2XS6\r\n5e84muOQImn9RmBF+hJKxmF1Vmo8D/84sOBW2L3eN2wV5k+pI4hSAOvLpk53\r\nyYKh1QaLGNbjmI0o7gzX3zHaERR32l/DMQHWxAqMLBaPelQFfiDjpGgO9avX\r\n2ZYyfP05OmE5+Re5QnildJ/aQmi8ywOyA0UkVRbydq3mbHKudCLGEICiuGrE\r\nwcDsC2dGOgZo51NclUslQsAQ+megeZOMiXPGEmuvN/R5DL1mrp5hIrysBg+i\r\nk2P2Ut2Potg3droPdDcrsy8WUq+cfx5kCHBnDrREidI9T3Mm9ZBiBwqr9n11\r\n+cVY15pJgQ5aPc/yyPo6mxwVCOAGelZf0X8U8TEiWmzjqQ7d9eFjJgmH5+xl\r\ndW17BeWRFh9qxVHMs9H2O+TxY2W5zoVhjpvchQeIefsGFcq5ZbpDfRB1GKVU\r\nw2Y1XTllkHxByNVKgKoX0XxvNDYJk5MROP6rwHjjaUUnHX0a6awAae53AV1q\r\nbXeOU6BaoIG4v9lhnzo5vsY/fWgjcth+ifhBx1XSSD73csPCriTI7RgzCtL1\r\n6ESl4XPOvSi5R/lv8rtydnqdN0u/NN7a0rPHBImfAI6zSNjQ3LN4uANHKfPz\r\n8I8sxP47VEgRKe2n2QxnGUmzTgZFGGRyDzY=\r\n=sEfv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"zeyber","email":"rotherham.c@gmail.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.3_1651133491208_0.4530633978871712"},"_hasShrinkwrap":false},"4.3.4":{"name":"@spartacus/schematics","version":"4.3.4","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"e1e05b118bf4850a7b84e93083557069a5f5e8d9","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.4","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-H+cykwhwY6pGyf0vA8UXKUc1ACnyrGK550dEpZt58xDFd++oy3DD5sVEspF0Ka8DBz5dHZ2KGZkMBlu5f9o+2g==","shasum":"497837b04c45f7973a047077bcb4bf3ee279e133","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.4.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCReS58pZq/EXAwu2FjQ5LeafcEqBMrtm6uwcpTJt6F6wIhANjOnAeJbgWI8ZgVDUuWM2CGxinvewBRQUdxpRXmGM+E"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijg5SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqp0BAAhcPdS2oVJDFWP2QkN/ey5oKMLualFqKA5havwUkInrhcE7Dk\r\nitjk5nWURk/kvHb2Ll/Q/fE+W5yktqTYd19U6tOfs6WEZWFnghVJxdVOtNKR\r\nP85OLFkWmvchYTcB6b9nP1Lro5mIfBJgA3zLp89FsNSs6Yjmpw8d5MGfKEEn\r\nSj02vHSMTOQvU/CYmtYj+cb18E0JmEljXLsRzRIdsFYokNRzLTSeFc2Ct9Yi\r\nsUsFJbON0ILiGYX9+VFI5u6w3eR8ahGijtsd7woHLXMxcXqg9dXPru4r9zxo\r\nQVHFTHPcfdMR3ni1AVE35HT+NTPdXs0CNRBus2lVz8vRXVMicuk6Hn3Rj1PQ\r\nfOFGPcG7duMbKvuUW4GUhcozTBA4X2YcMLVDwku28bKKXIaRknvwIa+uQOhh\r\nl6/bKtTpvDSn9t3zU475m3Tpx7zyQaWEzRprBbDWY1+WE8nCELvGwk4d3N6J\r\nnywXDkPVXsr9uEOXqadRQPBQR+bIZEEJGwEEJMLCmnTeFwm4rr2kBnG6RhJR\r\nO7Fn2+NIWu+mCFN/AqFLKLZAETlH1trd7theEnErPQfUZt+9H8N0S19pls31\r\nB81GCGh7KuTq8No1pae7uDYmRmyQUjYsztp/b3EaCigskw4gUyuUgFRI/NLL\r\nMx+IMz4WLydMOgLXGdSuxayFkGfjVqXRxE8=\r\n=1Oj4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.4_1653476946676_0.14209039409187585"},"_hasShrinkwrap":false},"4.3.5":{"name":"@spartacus/schematics","version":"4.3.5","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"019ebd1cc788e0695160de38f951d4d0fa0a2065","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.5","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-MQwWGszy/2fJ3uebySlPHt04xsntR+/SqXVY+xHgjwU8OG60ha3yAXHBKZpQp19YlJ/V++FhQh7GRD5lB+80bQ==","shasum":"9593a78c2a97c585b04d28dcea8250ff26e775a6","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.5.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKHoY2N6yG+1s7kthq2ugKaD9D2XfoCGFa15rybMsVLAIhAMBCvv25cnxWslwLAi9NT+kPMLd+OIIqN3HRkPwnlgJY"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJioI0wACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqwDw//XQvULd9mn7kuJ4cCYPRyCvjMAIBM+IVA5Ml3S7LVX1t+ySA9\r\n2evoua/0Qtvi4WSK4W7rbrNecfpRF5o3oAurk8BMNzZHnRH7aOjlw1tf7mGO\r\nI9qs/kahXxpu4uD0G9DsLW7gNBST0yybSn3wcI0twAP/T3B6t1mFJmXdYsjf\r\nS+hCQwtuo6DZqqqfn+ryWC03FAU0LiL5UMuWXFMKCFJunK7eUiIjMgt1+O8N\r\naLNXMsw6BdcVs/uWeH8k3yoyqi0TEDyrOJ44HZRSmn8hmrI7MGjNWTuDK4GU\r\nnEcBu5s0Ms18le2y/mgqt7pHxenETR2ycBZjRh2VixeXwgQIzsx6xx+Tpi35\r\nRvuAHo2y+RTCsmc3ei/ku5Om/ZqDOvtMEKBY5tfjqo2Yfw7+PAZXUJ2qWzhi\r\nHBA4AZxZ/tfbYRd3n4BXpDRHRQrF8yqYiRLESAPx78gH3515ZTQdnjWcOAKk\r\n3LuYPbWfzbAqU8PgbVS/XZlxzZkhdjnDVjo/efhZ7IxEdWhVN/CEz9cIIIPx\r\ntim/ZWRKvx2fWgYUaBoi1li8syMVFKJEg3XQQpCbpUjw9MgfVbSWISMUhNPh\r\n3QKykLySsXnowlCR7hmxaunzDavNzsJ6I81PehdWMIPETZOFC+4ruiIkTgfv\r\nc1B0F5+rOyUjxiNUemjugDtLDSheFr0vxuA=\r\n=DJEB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.5_1654689072729_0.14954127578319665"},"_hasShrinkwrap":false},"4.3.6":{"name":"@spartacus/schematics","version":"4.3.6","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"731ae8eb1e13a90fa028ff69b7bce276ee6b9bfe","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.6","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-2WLtSsjdeg3Hpng9scBY+1/68VdiZo+PPWH7xSHz3IzHLj6uV5JXAL+ZEmuvvqkqICKWJ2MnY8HjZ+hAUbznhQ==","shasum":"bc513aca4d0541e947c18380731286a0a8cfeb6e","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.6.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDOckrAbCxB1qaFn0fsXwX51M+JFOVWNqi6nuFjccAZBwIgJLSJFbcYTcLndzQUfs81AWmP6VSeV5cWBvFOoec2Q1s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJivBkXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIzA/9GteB6KJFaB/mI0vTHi3nupnrl9jGxMJGh5ud3SXOE5ew3J7X\r\nhns+vlWN97Sq5Dl1vRvmaD0ctx+qf9+OXwMzwWfIDbPmR9PW0Dbwdctj8kRr\r\nSfx9VBslZ6d57KYoKZHOFfRMk0AZ/D9BxcL6b7f35VdYb6u26GiPWOg1hAP+\r\nDznk0aqLGfVRG4jQmRVudHGr1UkFpnRiHXyqsUnhDv1qKpMq+JQDPcZCpnhb\r\n5Nt368ttbYNoMnnQKZyRP/VUwtt3oH2pJlG7sD7HlQOKl/uiWKgcVu1MBApS\r\np6+r07RXfDCSGFN32pl0aXOIdbx4FOZ0QbDoLGxLQbI0xQy9irAubkbuex38\r\nwj/eY0SkrPUh9Gfca4KrHMItQyF17/WeNyjep4ZTiFtCtLx/YGRRPapwLZyr\r\nMz0X/eJlkUHoZWjmW00lo1enJpUwlT6JT0x/LO8fbZ/d9qHekr5+XS3c7Ou3\r\nT4g7nXwDVdrnp1lQXehle1emkWKS+wko74exTqmLPwa4/D8ELOgIK7hqyrPf\r\nrGmi4zfJUyEw3jLdVXadUmkc3uaT7zqmu3kcVWJW/ui54xluLDZheVBd+GP/\r\nbFP1rNJ5Q7LqNMzqOw/671qmLvBhr2SmINT10wkYFzdwJr+Bbr5p/TqN4h8p\r\nS97UBgOSQHRu107PWO7HNqeZSh0bCQhd6nA=\r\n=9q3o\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.6_1656494359654_0.9751418849547349"},"_hasShrinkwrap":false},"4.3.7":{"name":"@spartacus/schematics","version":"4.3.7","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"15684f7f904b3aa5d60001e82dd62fee96b72736","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.7","_nodeVersion":"14.18.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-K374U7CVyXpwp/AV2kwqx94S29oPKySMT3ssmIJblZxEB/eR4jJms5ebfQXHlDfEKeu8Yl2yimMHJBDQGq2Wag==","shasum":"006c01c6360b91d957441a89a374542cd4b77365","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.7.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZpvXiwNArMLzmQ5lnaq/c6KjpUhbjbDc2ptgTezQz2AiAnVgdZNa5muFFl/jEpxNzfIQPRRZHFx1SizEl8jj6S5Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi85v8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGWg/+MNvDqpilsRczzVfj7R5I2ynRRLnKDqIj5lD211fNZDFGthwO\r\nOuywCk4lw/brgDhCofWM21f8PEMvhhTisVZ1wdc+xHp4W1E8b4GOineJVa7+\r\nbb7QlUFRfYiaAwx+9/umlXGRvXfoeHseND64gmZued2CvUIxK5E9tyuFxGto\r\nCBdYWAqjiRS1wzSMjVhU93+CDkskwRMhzedHgpN3A1+kegtOEyjvDE2T2Qfe\r\nD77biZo6fy8BlfZUY1nuYAf055ui9p6td81yzHikJfJCZteGY5pVr3xP5MaS\r\nti4A4/EOd+rFkLU98c1b4zf4cGlHU6IZG4KiSveOLPkh1Zim1yqgFYWP3Zwk\r\nYO2Zcwfx8yuJZswhz+76zm75iTdPF8ZD4GxB0SZwKKMOOSX40bUaqdMpya49\r\n9J6RzRXewYltx0kCjzi8E4xBsWMPDaCkajVd4ygjoBlytaqlpXMQ3cbGCTE+\r\nIGO7SBz7DOBD7yuBC/73Q33wKO//QE5cGlsfdwi5gximMZcP9MFeClXsmk3S\r\nphazI7OPpln5850XKseFETVddpWzN1AT/lm38znnUNaewtjUvbPBmcFhEc/G\r\n4wssj1Nbpu7bOl2wcvwBdVAqvEIVj5sBS3Da6cTn+FnUWQHE/dD9XtMOIuF3\r\nVU6tC6zfLJ7yfMNMBWX/wccKtakp22FIP5s=\r\n=nTE2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.7_1660132348581_0.6038728307821721"},"_hasShrinkwrap":false},"4.3.8":{"name":"@spartacus/schematics","version":"4.3.8","description":"Spartacus schematics","keywords":["spartacus","schematics"],"homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"license":"MIT","main":"index.js","scripts":{"build":"yarn clean && yarn --cwd ../../ generate:deps && ../../node_modules/.bin/tsc -p ./tsconfig.schematics.json","clean":"../../node_modules/.bin/rimraf \"index.js*\" \"index.d.ts\" \"src/**/*.js\" \"src/**/*.js.map\" \"src/**/*.d.ts\"","test":"yarn clean && ../../node_modules/.bin/jest --config ./jest.schematics.config.js"},"dependencies":{"@angular/pwa":"^12.0.5","@nguniversal/express-engine":"^12.0.2","semver":"^6.3.0","ts-morph":"^9.1.0","tslib":"^2.3.0"},"peerDependencies":{"@angular-devkit/core":"^12.0.5","@angular-devkit/schematics":"^12.0.5","@angular/compiler":"^12.0.5","@schematics/angular":"^12.0.5","jsonc-parser":"^3.0.0","parse5":"^6.0.1","typescript":"^4.2.4"},"ng-add":{"save":"devDependencies"},"ng-update":{"migrations":"./src/migrations/migrations.json","packageGroup":["@spartacus/core","@spartacus/storefront","@spartacus/styles","@spartacus/user","@spartacus/cds","@spartacus/assets","@spartacus/incubator","@spartacus/organization","@spartacus/product","@spartacus/storefinder","@spartacus/checkout","@spartacus/asm","@spartacus/smartedit","@spartacus/qualtrics","@spartacus/cdc","@spartacus/tracking","@spartacus/cart","@spartacus/order","@spartacus/digital-payments","@spartacus/epd-visualization","@spartacus/setup"]},"schematics":"./src/collection.json","types":"./index.d.ts","gitHead":"69ba82d257f570a9343f06670a22be756a7b4def","bugs":{"url":"https://github.com/SAP/spartacus/issues"},"_id":"@spartacus/schematics@4.3.8","_nodeVersion":"16.10.0","_npmVersion":"7.24.0","dist":{"integrity":"sha512-gOP7C2qnUym0+KwEj0bKeiMRJJsESk2kr5N2QnxBYyFdDzI3S/943bcDvNjXoD18zucrMrzD3On/PC5r4KiC1A==","shasum":"1d0c51dad2597a35be6206e0919a441175e696e0","tarball":"https://registry.npmjs.org/@spartacus/schematics/-/schematics-4.3.8.tgz","fileCount":908,"unpackedSize":1265002,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD354aod65wJgyA/Me8KBisEhFwwSF9+2H8N2h+dZuldwIgGjcWnzehko0t08KUNlYk69Xo5vgMMQNKielBKPqH9IQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjanXxACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQ6Q//blbCp0zXPcg64RO5Gyi/N1FZjJQbz1ShhFLrBPDsf7qE7hI3\r\nCC0+x61IJKveLWrRJugfWLMKyZKMFL6EGxvF/nM8mJnDOvJWss9yRL1F4l93\r\nhqNBMVNQnReSipyblLay31sBvgyPcB1TDSwKM9+XWh2MQ7+ucAUiP4Mn+7/s\r\nj+91859NINxkEUi/HSViRbwmAeEfAGfTYGxdSOgES8E8VyNw5u5saje09R78\r\nRPNuhQN2c9Th7mvH/IykAM6sdr1kKL4oF0ndK8uhvM11+Scw95qgp8KCoQ1z\r\nejQVbu6hhuboYYOGCGlKilspGotQwPq7p1HEi7CNc2rsmLvHwEFvDS1glEXd\r\n2VarHGAbDm5BAdPwZ2QqeWIXXmCwR+gRhOoaQr+JVU3eLAaY4u7Zi5slQR+D\r\nlvND+VKA1eQSdYFOkJtVGD+7pJqidDSVsdb9adF2AgO2PTJ0FaekQUDcqOJ2\r\nL11WqRzYwkjDuMFFLwyi4qjMm3dhdeSJIctENnz3xM1/j30hkjyl12929mUg\r\nYc0fKrj/IswOXb7/qczAr4mEDZieJxSeDQTdwKtP0xQh1JPLMLh8KyMd6gy8\r\nyl4lgWAa+PwzoV77AAweP3RLpH8jE9CvCcmc0P3AGHXjgQVvOUIp6FF0JOZf\r\nC4YAKq4Ww357Z6ar2zvDgx89cn5dPP+34fU=\r\n=B5NK\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"psmul","email":"patryksmul@outlook.com"},"directories":{},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/schematics_4.3.8_1667921393334_0.8599370977708938"},"_hasShrinkwrap":false}},"time":{"created":"2019-08-28T07:41:17.765Z","0.1.0-beta.0":"2019-08-28T07:41:18.224Z","modified":"2022-11-08T15:29:53.710Z","0.1.0-beta.1":"2019-08-29T10:42:43.483Z","0.1.2-beta.0":"2019-09-30T13:40:45.273Z","0.1.2-beta.1":"2019-10-01T10:51:29.732Z","1.3.0":"2019-12-16T15:38:13.424Z","1.5.0-next.0":"2020-01-23T20:15:02.901Z","1.4.0":"2020-01-27T20:18:52.138Z","1.5.0-RC.0":"2020-02-05T17:44:16.981Z","1.4.1":"2020-02-13T09:49:57.476Z","1.5.0":"2020-02-26T19:55:39.309Z","2.0.0-next.0":"2020-03-02T10:38:54.471Z","1.5.1":"2020-03-11T16:10:35.963Z","2.0.0-next.1":"2020-03-12T11:04:47.375Z","2.0.0-next.2":"2020-03-23T17:46:02.574Z","2.0.0-next.3":"2020-04-01T15:29:07.696Z","1.4.2":"2020-04-03T12:30:21.381Z","1.5.2":"2020-04-06T10:11:59.381Z","1.5.3":"2020-04-07T12:27:34.953Z","2.0.0-next.4":"2020-04-09T09:23:42.187Z","2.0.0-next.5":"2020-04-16T11:44:08.777Z","2.0.0-next.6":"2020-04-16T14:18:09.005Z","2.0.0-next.7":"2020-04-23T14:17:43.706Z","2.0.0-rc.0":"2020-04-28T11:04:20.190Z","1.5.4":"2020-05-06T14:49:17.733Z","2.0.0-rc.1":"2020-05-06T18:33:05.029Z","1.5.5":"2020-05-13T13:14:18.497Z","2.0.0-rc.2":"2020-05-13T17:15:23.223Z","1.5.6":"2020-05-21T10:15:36.175Z","2.0.0-rc.3":"2020-05-21T15:01:59.962Z","2.0.0-rc.4":"2020-05-28T09:22:00.448Z","2.0.0":"2020-06-03T12:15:58.814Z","1.4.3":"2020-06-07T12:24:17.881Z","1.5.7":"2020-06-10T09:38:42.784Z","2.0.1":"2020-06-10T16:17:42.029Z","2.0.2":"2020-06-24T17:57:42.353Z","2.0.3":"2020-07-02T14:10:52.810Z","1.5.8":"2020-07-10T12:23:31.674Z","2.0.4":"2020-07-14T16:10:22.472Z","2.0.5":"2020-07-23T13:54:16.890Z","1.4.4":"2020-07-29T06:48:26.885Z","1.5.9":"2020-07-29T07:05:39.402Z","2.0.6":"2020-07-29T14:53:02.301Z","2.1.0-next.0":"2020-08-07T09:44:47.858Z","2.1.0-next.1":"2020-08-12T15:34:13.359Z","2.1.0-rc.0":"2020-08-20T10:29:42.762Z","2.0.7":"2020-08-20T12:36:53.281Z","2.0.8":"2020-08-27T10:57:47.560Z","2.1.0":"2020-08-27T12:32:49.415Z","3.0.0-next.0":"2020-09-11T19:41:30.545Z","2.1.1":"2020-09-16T12:56:57.608Z","3.0.0-next.1":"2020-09-18T09:07:22.622Z","3.0.0-next.2":"2020-09-30T11:14:37.853Z","3.0.0-next.3":"2020-10-07T15:24:45.567Z","3.0.0-next.4":"2020-10-14T13:01:29.625Z","3.0.0-next.5":"2020-10-22T07:45:17.294Z","3.0.0-next.6":"2020-10-29T16:03:46.183Z","2.1.2":"2020-11-03T11:29:23.152Z","2.1.3":"2020-11-07T12:27:18.576Z","3.0.0-rc.0":"2020-11-20T15:10:53.866Z","2.1.4":"2020-11-20T16:46:38.660Z","3.0.0-rc.1":"2020-11-25T17:19:46.205Z","3.0.0-rc.2":"2020-12-02T14:00:00.864Z","3.0.0-rc.3":"2020-12-09T16:23:23.927Z","3.0.0-rc.4":"2020-12-16T13:23:16.918Z","2.1.5":"2020-12-17T13:41:53.620Z","3.0.0":"2020-12-18T01:52:07.338Z","2.0.9":"2021-01-16T08:36:48.464Z","3.0.1":"2021-01-20T15:10:16.099Z","2.1.6":"2021-01-21T09:19:52.244Z","3.1.0-next.0":"2021-01-28T13:45:58.368Z","3.0.2":"2021-01-29T08:53:25.034Z","3.0.3":"2021-02-10T14:13:18.854Z","3.1.0-rc.0":"2021-02-10T18:54:08.261Z","3.1.0-rc.1":"2021-02-17T11:40:21.373Z","3.1.0-rc.2":"2021-02-18T13:03:05.340Z","3.2.0-next.0":"2021-02-25T07:45:58.558Z","3.1.0":"2021-02-25T09:27:31.464Z","3.2.0-next.1":"2021-03-04T16:56:39.825Z","3.2.0-next.2":"2021-03-11T14:17:05.127Z","3.1.1":"2021-03-11T19:52:52.097Z","3.2.0-rc.0":"2021-03-29T17:20:05.746Z","3.1.2":"2021-03-31T20:46:11.997Z","2.1.7":"2021-04-02T15:56:07.984Z","3.2.0-rc.1":"2021-04-09T09:31:56.198Z","2.1.8":"2021-04-15T01:22:39.858Z","3.2.0":"2021-04-15T10:46:14.049Z","3.3.0-rc.0":"2021-04-28T11:21:50.733Z","3.2.1":"2021-04-29T07:55:27.945Z","3.2.2":"2021-05-06T07:28:40.023Z","3.3.0-rc.1":"2021-05-06T12:07:14.455Z","2.1.9":"2021-05-11T09:27:52.091Z","3.3.0":"2021-05-12T17:45:08.929Z","3.0.4":"2021-06-01T12:09:09.631Z","3.3.1":"2021-06-01T15:12:26.998Z","3.2.3":"2021-06-02T09:39:09.795Z","3.4.0-rc.0":"2021-06-02T11:02:37.130Z","3.1.3":"2021-06-03T10:59:08.180Z","3.4.0":"2021-06-16T15:20:19.997Z","3.2.4":"2021-06-24T13:11:06.404Z","3.3.2":"2021-06-24T14:48:36.850Z","3.4.1":"2021-07-07T12:01:07.804Z","4.0.0-rc.0":"2021-07-14T16:04:46.995Z","4.0.0-rc.1":"2021-07-23T17:31:10.577Z","4.0.0":"2021-07-29T20:09:56.999Z","3.4.2":"2021-08-04T19:30:09.526Z","3.0.5":"2021-08-04T19:54:07.329Z","3.4.3":"2021-08-12T20:31:31.235Z","3.0.6":"2021-08-18T15:39:36.989Z","3.1.4":"2021-08-19T09:25:00.274Z","3.2.5":"2021-08-19T10:20:26.109Z","3.3.3":"2021-08-19T11:45:18.221Z","3.4.4":"2021-08-19T12:53:38.739Z","4.0.1":"2021-08-24T12:12:55.916Z","4.1.0-next.0":"2021-08-26T12:05:59.971Z","4.1.0-rc.0":"2021-09-01T15:13:06.768Z","4.1.0":"2021-09-14T10:11:01.570Z","3.4.5":"2021-09-23T09:48:38.178Z","4.0.2":"2021-09-23T12:44:31.754Z","3.2.6":"2021-09-23T13:43:10.859Z","3.3.4":"2021-09-23T14:59:20.915Z","4.1.1":"2021-10-06T13:02:52.923Z","4.2.0-RC.0":"2021-11-08T15:14:57.603Z","4.2.0":"2021-11-10T10:06:12.973Z","4.2.1":"2021-11-25T16:52:27.082Z","3.4.6":"2021-11-25T19:29:12.432Z","4.3.0-RC.0":"2022-01-20T22:43:30.784Z","4.3.0":"2022-01-27T21:28:25.125Z","3.4.7":"2022-02-16T11:03:17.390Z","3.4.8":"2022-03-18T15:03:06.414Z","4.3.1":"2022-03-18T16:14:41.860Z","3.4.9":"2022-04-25T08:28:20.579Z","4.3.2":"2022-04-25T09:25:02.943Z","3.4.10":"2022-04-27T12:59:51.565Z","4.3.3":"2022-04-28T08:11:31.472Z","4.3.4":"2022-05-25T11:09:06.859Z","4.3.5":"2022-06-08T11:51:12.962Z","4.3.6":"2022-06-29T09:19:19.821Z","4.3.7":"2022-08-10T11:52:28.896Z","4.3.8":"2022-11-08T15:29:53.563Z"},"maintainers":[{"name":"tejasai","email":"teja.sai.kota@sap.com"},{"name":"hackergil","email":"gilberto.alvarado.jimenez@sap.com"},{"name":"michal.gruca","email":"pucek9@gmail.com"},{"name":"zeyber","email":"rotherham.c@gmail.com"},{"name":"psmul","email":"patryksmul@outlook.com"},{"name":"mszczepaniak","email":"mr.szczepaniak@gmail.com"},{"name":"sivaprasad.kare","email":"sivaprasad.kare@sap.com"},{"name":"divna-p","email":"divna.popovic@msg-global.com"},{"name":"razvan-serediuc","email":"razvan.serediuc@sap.com"},{"name":"jevtic.bojan","email":"bojan.jevtic@msg-global.com"},{"name":"ketki-mujumdar","email":"ketki.mujumdar@sap.com"}],"description":"Spartacus schematics","keywords":["spartacus","schematics"],"license":"MIT","readme":"# Getting Started\n\nThis section is for Spartacus developers and anybody else who works with Spartacus source code.\nTo see the documentation on how to use schematics from a customers perspective, see: [https://sap.github.io/spartacus-docs/schematics](https://sap.github.io/spartacus-docs/schematics)\n\n## Prerequisites\n\nInstall angular schematics globally: `npm install -g @angular-devkit/schematics-cli`.\nMake sure that Angular CLI is up to date: `npm install -g @angular/cli@latest`\n\n## Testing schematics\n\n### Unit testing\n\nTo run all the schematics unit tests:\n\n`$ ./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` and choose `test all schematics` option.\n\nTo run schematics tests for a specific library:\n\n1. navigate to the library / project you want to test - e.g. `$ cd feature-libs/asm`\n2. Run `$ yarn test:schematics`. _NOTE_ that when testing `projects/schematics`, the command which to run is `$ yarn test`.\n\nThe schematics already have unit tests to cover the migration tasks they were designed to perform. However, you might want to test if the new schematics configuration you added will produce the expected result when a user will perform a migration with the help of the schematics without running a full migration on an app, which would be very time consuming. A convenient way to test your new config is to temporarily modify a schematics unit test case and use an example that will use your new config instead. After you assess your migration scenario plays out as expected, you can revert the changes you did in the unit test.\n\nThe following points provide guidance on how to achieve that.\n\n- let's say you're working on a constructor deprecation task, in which case you would open the `projects/schematics/src/migrations/mechanism/constructor-deprecations/constructor-deprecations_spec.ts`.\n- first thing to change is the `MIGRATION_SCRIPT_NAME`. If you're testing a migration task for v3, you would change the value of the `MIGRATION_SCRIPT_NAME` constant to `migration-v3-constructor-deprecations-03` (notice the **v3** in the name). To see the exact name of the migration script, you can go to `projects/schematics/src/migrations/migrations.json` and copy-paste the script's name you're testing to the spec file.\n- next, you can pick and choose a test that's using a class as an input (where the class is a made up testing class from customers' perspective, represented as a string). The output of the test is also a class, modified by the schematics (basically the expected result); again, this class is also represented as a string. Therefore, in case of the constructor deprecation, you can modify e.g. `ADD_AND_REMOVE_PARAMETER_VALID_TEST_CLASS` constant to match your made up input. You can then just `console.log()` the result and assert the migrated code manually in the console.\n- in order to save yourself some time, it's recommended to `fdescribe` (or `fit`) the test that's using the constants from the previous step. To run the test(s), follow the steps from the beginning of this section. An additional benefit is that it removes a lot of noise in the terminal, which is especially useful when using `console.log()`ing the result.\n\n### Integration testing\n\nThe best way to test an unpublished schematic is to publish it to a local npm registry. For more, see [developing schematics](#Developing-schematics)\n\n## Developing schematics\n\n### Preparing setup\n\n- Install verdaccio `$ npm i -g verdaccio@4` (only for the first time)\n- Run it: `$ verdaccio`\n- Create an npm user: `$ npm adduser --registry http://localhost:4873`. After completing the registration of a new user, stop the verdaccio. This setup is only required to do once.\n- Create new angular project `ng new schematics-test --style=scss`\n- Run verdaccio script `ts-node ./tools/schematics/testing.ts` (or `./node_modules/ts-node/dist/bin.js ./tools/schematics/testing.ts` in case you don't have _ts-node_ installed globally).\n\n### Publishing to verdaccio\n\n- before you publish for the first time make sure you have builded libs or run `build all libs`\n- select option `publish` from the verdaccio script (it will bump package patch version and publish to verdaccio)\n- do changes, rebuild changed libraries and publish once again (every publish will bump to even higher version)\n\n### Workflow for testing schematics\n\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n### Workflow for testing migrations\n\n- add Spartacus by running e.g. `ng add @spartacus/schematics@<version> --baseUrl https://spartacus-demo.eastus.cloudapp.azure.com:8443/ --baseSite electronics-spa`. Note the `<version>` after `ng add @spartacus/schematics`. This should be lower than the one you're going to publish. E.g. if developing schematics for Spartacus 3.0, then you should install Spartacus 2.0.\n- commit the changes, if any.\n- run schematics you want to test (to revert schematics changes `git reset --hard HEAD && rm -rf node_modules && npm i`)\n- try until everything is perfect\n\n## Update schematics\n\n### Introduction\n\nWhen upgrading Spartacus to a new major version (for example, from 3.x to 4.0), the Spartacus migration mechanism automatically implements fixes for code that is modified or removed in the new version.\n\nWhen you are working on a feature or a bug, or making any other change to the Spartacus source code, you need to update the schematics as part of the [Definition Of Done](https://sap.github.io/spartacus-docs/definition-of-done/). By making these updates iteratively as part of the DoD for each change to the source code, it saves you from having to spend a lot of time upgrading the migration mechanism at the end of the development cycle, and as a result, it makes it easier to prepare the Spartacus libraries for a new major version.\n\n### Migration Mechanism\n\nAfter upgrading to a new major version, the migration mechanism should be updated at the very beginning of the new development cycle. For example, if Spartacus has been updated from version 2.x to 3.0, the updated mechanism should be merged to the `develop` branch as soon as possible. This allows contributors to include migrations with their features and bug fixes from the very start of the development cycle.\n\n### Structure for Updating Schematics\n\nThe `projects/schematics/src/migrations/migrations.json` file contains a list of all the migration scripts for every Spartacus version. The following is an example of a migration script:\n\n```json\n\"03-migration-v3-constructor-deprecations\": {\n      \"version\": \"3.0.0\",\n      \"factory\": \"./3_0/constructor-deprecations/constructor-deprecations#migrate\",\n      \"description\": \"Add or remove constructor parameters\"\n    },\n```\n\nEach script has a set of properties, which are described as follows:\n\n- `name` allows developers to quickly understand what the migration script is doing. The migration `name` has the following pattern: `<sequence-number>-migration-v<version>-<migration-feature-name>`. The elements of `name` are as follows:\n  - `sequence-number` indicates the order of execution for the migration scripts. For example, if a script has a `sequence-number` of `03`, it will be the third script to execute when the migration scripts are run.\n  - `version` indicates which version of Spartacus the migration is intended for.\n  - `migration-feature-name` is a short name that describes what the migration is doing.\n- `version` is very important for the Angular update mechanism. It is used to automatically run the required migration scripts for a specific version. For more information, see the [releasing update schematics](#releasing-update-schematics) section of the schematics README.\n- `factory` points to the relevant migration script.\n- `description` is a short, free-form description field to describe what the migration script does.\n\n### Validations\n\nIf any validations need to be run before actually upgrading Spartacus, you can use the \"migration script\" located in `projects/schematics/src/migrations/3_0/validate.ts`.\n\n### Constructor deprecation\n\nThe `projects/schematics/src/migrations/3_0/constructor-deprecations.ts` performs the constructor migration tasks. Usually, a developer does not need to touch this file, and instead should describe constructor deprecations in `projects/schematics/src/migrations/3_0/constructor-deprecation-data.ts`. The `CONSTRUCTOR_DEPRECATION_DATA` constant describes the deprecated constructor, and includes the `addParams` and `removeParams` properties that allow you to specify which parameters should be added or removed, respectively.\n\n### Commenting code\n\nWhen it is not possible to automatically migrate code, we often place a comment in the customer's code base that describes what the customer should do to upgrade their project to the new version of Spartacus. We should do this only in cases where upgrading manually is easy, and writing a migration script would be too complex.\n\nThe `projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier` method adds comments above the specified `identifier` TypeScript node.\n\nThe following are examples of how you might add a comment:\n\n- If you removed an API method, you could add a comment above the removed method that suggests which method can be used instead.\n- If you changed the parameters of an NgRx action, you could add a comment above the action where the parameters were changed.\n\n### Component deprecation\n\nSimilar to constructor deprecation, `projects/schematics/src/migrations/3_0/component-deprecations.ts` performs component migration tasks, for both component `*.ts` and `HTML` templates. Usually, a developer does not need to touch this file, and instead should describe component deprecations in `projects/schematics/src/migrations/3_0/component-deprecations-data.ts`. The `COMPONENT_DEPRECATION_DATA` constant describes the deprecated components.\n\n### CSS\n\nTo handle CSS changes, we print a link to the CSS migration documentation, where customers can look up which CSS selectors have changed in the new version of Spartacus. If you are making a change to a CSS selector, simply update the relevant documentation (such as, [Changes to Styles in 3.0](https://sap.github.io/spartacus-docs/css-changes-in-version-3/)).\n\n### Adding a Migration\n\nThe following is an example flow for adding a migration:\n\n- Check whether any of the changed files are exported in the public API. If no, then no further action is required.\n- Check whether any of the changes you have made are breaking changes. If not, no further action is required. For more information, see [Maintaining Public APIs](https://sap.github.io/spartacus-docs/breaking-changes/).\n- For every breaking change, you must do the following:\n  - Document the breaking change by updating the corresponding migration doc file (such as `docs/migration/3_0.md`), and if necessary, ensure that code comments have been added.\n  - Build automation tasks, as described in the [Validations](#validations), [Constructor Deprecation](#constructor-deprecation), and [Component Deprecation](#component-deprecation)) sections, above.\n  - [Test the added migrations](#testing-schematics) by running tests, [trying to migrate an example app](#Developing-schematics), and so on.\n\nYou can see an example of adding a migration in [this pull request](https://github.com/SAP/spartacus/pull/9946/files).\n\n## Releasing update schematics\n\nThis section is for developers who do the release, and it specifies how to manage the versions in `projects/schematics/src/migrations/migrations.json`.\n\nThe migration scripts that are listed here should be executed each time customers perform the automatic upgrade by running `ng update @spartacus/schematics --next`:\n\n- `**-migration-v*-validate`\n- `**-migration-v*-rename-symbol`\n- `**-migration-v*-methods-and-properties-deprecations`\n- `**-migration-v*-constructor-deprecations`\n- `**-migration-v*-removed-public-api-deprecation`\n- `**-migration-v*-component-deprecations`\n- `**-migration-v*-css`\n- `**-migration-v*-config-deprecations`\n- `**-migration-v*-dependency-management`\n- `**-migration-v*-missing-packages`\n\nThe `v*` refers _only_ to the _latest major_ Spartacus version (v3 as of this moment).\n\nPlease bump the `version` in `migrations.json` only for the migration scripts listed above, and _do not change the other script's versions_.\nThis means that the scripts for the older major Spartacus versions should _also **not** be updated_.\n\nThis is _really_ important for the Angular's update mechanism, as it is used to automatically execute the required migration scripts for the current project's version.\nIt's also important to note that after we release a Spartacus _next.x_, or an _rc.x_ version, all the migration scripts that are written after the release _have_ to specify the future release version.\nE.g. if Spartacus _2.0.0-next.1_ has been released, then the _new_ migration scripts (added after it _2.0.0-next.1_) should specify the next version (e.g. _2.0.0-next.2_).\nThis is required for clients that upgrade frequently and it will make angular to run only the new migration scripts for them, avoiding the same scripts to run twice.\nHowever, there are exceptions from this rule - as we have data-driven generic mechanisms for e.g. constructor deprecation, we have to bump the version in `migrations.json` for those scripts.\n","readmeFilename":"README.md","homepage":"https://github.com/SAP/spartacus","repository":{"type":"git","url":"git+https://github.com/SAP/spartacus.git#develop"},"bugs":{"url":"https://github.com/SAP/spartacus/issues"}}