@pega/dx-component-builder-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.access_token +1 -0
- package/.agilestudio +3 -0
- package/.eslintrc.json +18 -0
- package/.prettierignore +2 -0
- package/.prettierrc.json +1 -0
- package/LICENSE +185 -0
- package/README.md +199 -0
- package/bin/index.js +5 -0
- package/cspell.json +26 -0
- package/package.json +67 -0
- package/src/cli.js +104 -0
- package/src/constants.js +134 -0
- package/src/tasks/authenticate/helper.js +60 -0
- package/src/tasks/authenticate/index.js +81 -0
- package/src/tasks/build/helper.js +125 -0
- package/src/tasks/build/index.js +52 -0
- package/src/tasks/bundle/builder/index.js +218 -0
- package/src/tasks/bundle/builder/modules.js +139 -0
- package/src/tasks/bundle/builder/paths.js +50 -0
- package/src/tasks/bundle/builder/webpack.config.js +336 -0
- package/src/tasks/bundle/index.js +65 -0
- package/src/tasks/create/index.js +380 -0
- package/src/tasks/create/template/config.json.mustache +62 -0
- package/src/tasks/create/template/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/template/index.jsx.mustache +55 -0
- package/src/tasks/create/template/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Boolean/Boolean.js.mustache +38 -0
- package/src/tasks/create/templates/Constellation/Field/Boolean/boolean-format.js.mustache +26 -0
- package/src/tasks/create/templates/Constellation/Field/Boolean/config.json.mustache +145 -0
- package/src/tasks/create/templates/Constellation/Field/Boolean/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Boolean/index.jsx.mustache +171 -0
- package/src/tasks/create/templates/Constellation/Field/Boolean/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Date/config.json.mustache +195 -0
- package/src/tasks/create/templates/Constellation/Field/Date/date.js.mustache +327 -0
- package/src/tasks/create/templates/Constellation/Field/Date/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Date/index.jsx.mustache +254 -0
- package/src/tasks/create/templates/Constellation/Field/Date/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Date/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/config.json.mustache +256 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/date-time.js.mustache +93 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.js +286 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/date.js.mustache +327 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/index.jsx.mustache +252 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/DateTime/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal/config.json.mustache +278 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal/index.jsx.mustache +272 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/config.json.mustache +291 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/index.jsx.mustache +300 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/config.json.mustache +93 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/index.jsx.mustache +275 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Integer/config.json.mustache +347 -0
- package/src/tasks/create/templates/Constellation/Field/Integer/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Integer/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Integer/index.jsx.mustache +335 -0
- package/src/tasks/create/templates/Constellation/Field/Integer/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Integer/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/config.json.mustache +114 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/index.jsx.mustache +308 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/picklist.js.mustache +43 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Picklist/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Text/config.json.mustache +62 -0
- package/src/tasks/create/templates/Constellation/Field/Text/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Text/index.jsx.mustache +60 -0
- package/src/tasks/create/templates/Constellation/Field/Text/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/config.json.mustache +111 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/index.jsx.mustache +189 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Email/text-email.js.mustache +43 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/StatusWork.js +27 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/config.json.mustache +111 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/index.jsx.mustache +196 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Input/text-input.js.mustache +43 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/config.json.mustache +111 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/index.jsx.mustache +189 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/text-paragraph.js.mustache +43 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/config.json.mustache +123 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.jsx.mustache +223 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Text-Phone/text-phone.js.mustache +43 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/config.json.mustache +237 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/event-utils.js.mustache +18 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/index.jsx.mustache +232 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.js.mustache +172 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/config.json.mustache +185 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/index.jsx.mustache +213 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/suggestions-handler.js +10 -0
- package/src/tasks/create/templates/Constellation/Field/TimeofDay/time-of-day.js.mustache +286 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/OneColumnDetails.svg +22 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/config.json.mustache +35 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/index.jsx.mustache +88 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS/utils.js.mustache +155 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/TwoColumnDetails.svg +28 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/config.json.mustache +42 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.jsx.mustache +88 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Template/DETAILS-region/utils.js.mustache +155 -0
- package/src/tasks/create/templates/Constellation/Template/FORM/DefaultForm.svg +29 -0
- package/src/tasks/create/templates/Constellation/Template/FORM/config.json.mustache +45 -0
- package/src/tasks/create/templates/Constellation/Template/FORM/index.jsx.mustache +49 -0
- package/src/tasks/create/templates/Constellation/Template/FORM/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Template/FORM-region/TwoColumn.svg +38 -0
- package/src/tasks/create/templates/Constellation/Template/FORM-region/config.json.mustache +27 -0
- package/src/tasks/create/templates/Constellation/Template/FORM-region/index.jsx.mustache +51 -0
- package/src/tasks/create/templates/Constellation/Template/FORM-region/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/GetNextWork.js.mustache +29 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/config.json.mustache +32 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/index.jsx.mustache +68 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/localizations.json.mustache +4 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Template/PAGE/utils.js.mustache +226 -0
- package/src/tasks/create/templates/Constellation/Widget/CASE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/Constellation/Widget/CASE/config.json.mustache +23 -0
- package/src/tasks/create/templates/Constellation/Widget/CASE/index.jsx.mustache +75 -0
- package/src/tasks/create/templates/Constellation/Widget/CASE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE/config.json.mustache +59 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE/index.jsx.mustache +48 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Avatar.js.mustache +73 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Operator.js.mustache +239 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/config.json.mustache +66 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/index.jsx.mustache +110 -0
- package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-Angular/Field/__components.md +4 -0
- package/src/tasks/create/templates/SDK-Angular/Template/__components.md +4 -0
- package/src/tasks/create/templates/SDK-Angular/Widget/__components.md +4 -0
- package/src/tasks/create/templates/SDK-React/Field/Boolean/config.json.mustache +73 -0
- package/src/tasks/create/templates/SDK-React/Field/Boolean/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Boolean/index.tsx.mustache +109 -0
- package/src/tasks/create/templates/SDK-React/Field/Boolean/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Date/config.json.mustache +133 -0
- package/src/tasks/create/templates/SDK-React/Field/Date/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Date/index.tsx.mustache +122 -0
- package/src/tasks/create/templates/SDK-React/Field/Date/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/DateTime/config.json.mustache +190 -0
- package/src/tasks/create/templates/SDK-React/Field/DateTime/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/DateTime/index.tsx.mustache +112 -0
- package/src/tasks/create/templates/SDK-React/Field/DateTime/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal/config.json.mustache +80 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal/index.tsx.mustache +105 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/config.json.mustache +111 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/index.tsx.mustache +131 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Currency/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/config.json.mustache +80 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/index.tsx.mustache +128 -0
- package/src/tasks/create/templates/SDK-React/Field/Decimal-Percentage/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Integer/config.json.mustache +74 -0
- package/src/tasks/create/templates/SDK-React/Field/Integer/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Integer/index.tsx.mustache +124 -0
- package/src/tasks/create/templates/SDK-React/Field/Integer/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Picklist/config.json.mustache +72 -0
- package/src/tasks/create/templates/SDK-React/Field/Picklist/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Picklist/index.tsx.mustache +141 -0
- package/src/tasks/create/templates/SDK-React/Field/Picklist/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Text/config.json.mustache +69 -0
- package/src/tasks/create/templates/SDK-React/Field/Text/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Text/index.tsx.mustache +119 -0
- package/src/tasks/create/templates/SDK-React/Field/Text/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Email/config.json.mustache +69 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Email/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Email/index.tsx.mustache +121 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Email/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Input/config.json.mustache +69 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Input/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Input/index.tsx.mustache +119 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Input/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/config.json.mustache +69 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/index.tsx.mustache +123 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Paragraph/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Phone/config.json.mustache +81 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Phone/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Phone/index.tsx.mustache +147 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-Phone/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-URL/config.json.mustache +111 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-URL/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-URL/index.tsx.mustache +98 -0
- package/src/tasks/create/templates/SDK-React/Field/Text-URL/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Field/TimeofDay/config.json.mustache +121 -0
- package/src/tasks/create/templates/SDK-React/Field/TimeofDay/demo.stories.jsx.mustache +44 -0
- package/src/tasks/create/templates/SDK-React/Field/TimeofDay/index.tsx.mustache +120 -0
- package/src/tasks/create/templates/SDK-React/Field/TimeofDay/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS/DefaultForm.svg +29 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS/config.json.mustache +21 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS/index.tsx.mustache +45 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/TwoColumnDetails.svg +28 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/config.json.mustache +27 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/index.tsx.mustache +53 -0
- package/src/tasks/create/templates/SDK-React/Template/DETAILS-region/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM/DefaultForm.css +25 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM/DefaultForm.svg +29 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM/config.json.mustache +45 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM/index.tsx.mustache +63 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM-region/TwoColumn.svg +38 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM-region/config.json.mustache +49 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM-region/index.tsx.mustache +69 -0
- package/src/tasks/create/templates/SDK-React/Template/FORM-region/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Template/PAGE/OneColumn.tsx.mustache +32 -0
- package/src/tasks/create/templates/SDK-React/Template/PAGE/OneColumnPage.svg +28 -0
- package/src/tasks/create/templates/SDK-React/Template/PAGE/config.json.mustache +32 -0
- package/src/tasks/create/templates/SDK-React/Template/PAGE/index.tsx.mustache +31 -0
- package/src/tasks/create/templates/SDK-React/Template/PAGE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Widget/CASE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/SDK-React/Widget/CASE/config.json.mustache +23 -0
- package/src/tasks/create/templates/SDK-React/Widget/CASE/index.tsx.mustache +183 -0
- package/src/tasks/create/templates/SDK-React/Widget/CASE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE/config.json.mustache +59 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE/index.tsx.mustache +78 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/OneColumnPage.svg +36 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/config.json.mustache +66 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/index.tsx.mustache +239 -0
- package/src/tasks/create/templates/SDK-React/Widget/PAGE-CASE/styles.js.mustache +7 -0
- package/src/tasks/create/templates/SDK-WebComponents/Field/__components.md +4 -0
- package/src/tasks/create/templates/SDK-WebComponents/Template/__components.md +4 -0
- package/src/tasks/create/templates/SDK-WebComponents/Widget/__components.md +4 -0
- package/src/tasks/delete/helper.js +122 -0
- package/src/tasks/delete/index.js +45 -0
- package/src/tasks/delete-all/helper.js +177 -0
- package/src/tasks/delete-all/index.js +45 -0
- package/src/tasks/index.js +11 -0
- package/src/tasks/linter/index.js +46 -0
- package/src/tasks/list/helper.js +118 -0
- package/src/tasks/list/index.js +51 -0
- package/src/tasks/map/map.js +118 -0
- package/src/tasks/publish/helper.js +147 -0
- package/src/tasks/publish/index.js +72 -0
- package/src/tasks/publish-all/helper.js +139 -0
- package/src/tasks/publish-all/index.js +84 -0
- package/src/tasks/update/index.js +5 -0
- package/src/tasks/upgrade/index.js +31 -0
- package/src/tasks/validator/index.js +216 -0
- package/src/util.js +442 -0
package/src/constants.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// cSpell:ignore words timeofday caseview casepreview objectview
|
|
2
|
+
export const DXCB_CONFIG_JSON_FILENAME = 'dxcb.config.json';
|
|
3
|
+
export const BUILD_CONFIG_JSON_FILENAME = 'build.config.json';
|
|
4
|
+
export const SDK_LOCAL_COMPONENT_MAP_FILENAME = "sdk-local-component-map.js";
|
|
5
|
+
export const COMPONENTS_DIRECTORY_PATH = 'components-directory-path';
|
|
6
|
+
export const TOKEN_PATH = '../.access_token';
|
|
7
|
+
export const OOTB_COMPONENTS = '../.ootb_components';
|
|
8
|
+
export const FIELD_PATH = '/field';
|
|
9
|
+
export const TEMPLATE_PATH = '/template';
|
|
10
|
+
export const WIDGET_PATH = '/widget';
|
|
11
|
+
export const COMPONENT_PREFIX_FIELD_PATH = "field/";
|
|
12
|
+
export const COMPONENT_PREFIX_TEMPLATE_PATH = "template/";
|
|
13
|
+
export const COMPONENT_PREFIX_WIDGET_PATH = "widget/";
|
|
14
|
+
|
|
15
|
+
/* REST end points */
|
|
16
|
+
export const PUBLISH_COMPONENT_SERVICE_REST_ENDPOINT = 'PRRestService/dev/v1/publish_component';
|
|
17
|
+
export const LIST_COMPONENT_SERVICE_REST_ENDPOINT = 'PRRestService/dev/v1/list_component';
|
|
18
|
+
export const OOTB_COMPONENT_SERVICE_REST_ENDPOINT = 'PRRestService/dev/v1/ootb_component';
|
|
19
|
+
export const DELETE_COMPONENT_SERVICE_REST_ENDPOINT = 'PRRestService/dev/v1/delete_component';
|
|
20
|
+
export const TOKEN_URL_V1 = 'PRRestService/oauth2/v1/token';
|
|
21
|
+
|
|
22
|
+
export const COMPONENT_SCHEMA = {
|
|
23
|
+
framework: [
|
|
24
|
+
{
|
|
25
|
+
name: 'Constellation',
|
|
26
|
+
value: 'Constellation'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'SDK Angular',
|
|
30
|
+
value: 'SDK-Angular'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'SDK React',
|
|
34
|
+
value: 'SDK-React'
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'SDK Web Components',
|
|
38
|
+
value: 'SDK-WebComponents'
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
type: [
|
|
42
|
+
{
|
|
43
|
+
name: 'Field',
|
|
44
|
+
value: 'Field'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Layout template',
|
|
48
|
+
value: 'Template'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Widget',
|
|
52
|
+
value: 'Widget'
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
subtype: {
|
|
56
|
+
field: [
|
|
57
|
+
{
|
|
58
|
+
name: 'Text',
|
|
59
|
+
value: 'Text'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Text Input',
|
|
63
|
+
value: 'Text-Input'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Paragraph',
|
|
67
|
+
value: 'Text-Paragraph'
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Email',
|
|
71
|
+
value: 'Text-Email'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'Phone',
|
|
75
|
+
value: 'Text-Phone'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'URL',
|
|
79
|
+
value: 'Text-URL'
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'Integer',
|
|
83
|
+
value: 'Integer'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'Decimal',
|
|
87
|
+
value: 'Decimal'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Currency',
|
|
91
|
+
value: 'Decimal-Currency'
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'Percentage',
|
|
95
|
+
value: 'Decimal-Percentage'
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'Boolean',
|
|
99
|
+
value: 'Boolean'
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'Date',
|
|
103
|
+
value: 'Date'
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: 'DateTime',
|
|
107
|
+
value: 'DateTime'
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'TimeOfDay',
|
|
111
|
+
value: 'TimeOfDay'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'Picklist',
|
|
115
|
+
value: 'Picklist'
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
template: ['DETAILS', 'DETAILS-region', 'FORM', 'FORM-region', 'PAGE' ],
|
|
119
|
+
widget: [
|
|
120
|
+
{
|
|
121
|
+
name: 'CASE',
|
|
122
|
+
value: 'CASE'
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'PAGE',
|
|
126
|
+
value: 'PAGE'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'PAGE & CASE',
|
|
130
|
+
value: ['PAGE', 'CASE']
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
2
|
+
import { getPegaServerConfig } from '../../util.js';
|
|
3
|
+
|
|
4
|
+
export const getAuthQuestions = async () => {
|
|
5
|
+
const defaultPegaConfig = await getPegaServerConfig();
|
|
6
|
+
|
|
7
|
+
return [
|
|
8
|
+
{
|
|
9
|
+
name: 'server',
|
|
10
|
+
message: 'Enter pega server url',
|
|
11
|
+
default: defaultPegaConfig.server
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'user',
|
|
15
|
+
message: 'Enter user id',
|
|
16
|
+
default: defaultPegaConfig.user,
|
|
17
|
+
validate: value => {
|
|
18
|
+
if (value.trim()) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return 'Username cannot be empty';
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'password',
|
|
26
|
+
type: 'password',
|
|
27
|
+
message: 'Enter password',
|
|
28
|
+
default: defaultPegaConfig.password,
|
|
29
|
+
validate: value => {
|
|
30
|
+
if (value.trim()) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return 'Password cannot be empty';
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'clientId',
|
|
38
|
+
message: 'Enter clientId',
|
|
39
|
+
default: defaultPegaConfig.clientId,
|
|
40
|
+
validate: value => {
|
|
41
|
+
if (value.trim()) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
return 'clientId cannot be empty';
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'clientSecret',
|
|
49
|
+
type: 'password',
|
|
50
|
+
message: 'Enter clientSecret',
|
|
51
|
+
default: defaultPegaConfig.clientSecret,
|
|
52
|
+
validate: value => {
|
|
53
|
+
if (value.trim()) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return 'clientSecret cannot be empty';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import https from 'https';
|
|
4
|
+
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import inquirer from 'inquirer';
|
|
7
|
+
import fetch from 'node-fetch';
|
|
8
|
+
|
|
9
|
+
import { checkPathAccess, getTokenUrl } from '../../util.js';
|
|
10
|
+
import { TOKEN_PATH } from '../../constants.js';
|
|
11
|
+
|
|
12
|
+
import { getAuthQuestions } from './helper.js';
|
|
13
|
+
|
|
14
|
+
export const DXCB_CONFIG_JSON_FILENAME = 'dxcb.config.json';
|
|
15
|
+
|
|
16
|
+
const pegaConfigJsonPath = path.join(path.resolve(), DXCB_CONFIG_JSON_FILENAME);
|
|
17
|
+
|
|
18
|
+
const generateAccessToken = async config => {
|
|
19
|
+
const formData = new URLSearchParams();
|
|
20
|
+
formData.append('client_id', config.clientId);
|
|
21
|
+
formData.append('client_secret', config.clientSecret);
|
|
22
|
+
formData.append('username', config.user);
|
|
23
|
+
formData.append('password', config.password);
|
|
24
|
+
formData.append('grant_type', 'password');
|
|
25
|
+
|
|
26
|
+
const accessTokenUri = await getTokenUrl(config.server);
|
|
27
|
+
fetch(accessTokenUri, {
|
|
28
|
+
agent: new https.Agent({ rejectUnauthorized: false }),
|
|
29
|
+
method: 'POST',
|
|
30
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
|
31
|
+
body: formData.toString()
|
|
32
|
+
})
|
|
33
|
+
.then(response => {
|
|
34
|
+
if (response.ok && response.status === 200) {
|
|
35
|
+
return response.json();
|
|
36
|
+
} else {
|
|
37
|
+
throw new Error(`Failed with status: ${response.status}`);
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
.then(data => {
|
|
41
|
+
if (data && data.errors) {
|
|
42
|
+
const errMessages = data.errors;
|
|
43
|
+
errMessages.forEach(msgArr => {
|
|
44
|
+
throw new Error(`Failed with error - ${JSON.stringify(msgArr.message)}`);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (data.token_type) {
|
|
48
|
+
fs.writeFile(TOKEN_PATH, JSON.stringify(data), err => {
|
|
49
|
+
if (err) {
|
|
50
|
+
console.error(err);
|
|
51
|
+
}
|
|
52
|
+
console.log(`${chalk.bold.green('Authenticated successfully !!')}`);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
.catch(e => console.log(`${chalk.bold.red(e)}`));
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default async options => {
|
|
60
|
+
await checkPathAccess(pegaConfigJsonPath);
|
|
61
|
+
|
|
62
|
+
let data = fs.readFileSync(pegaConfigJsonPath, { encoding: 'utf8' });
|
|
63
|
+
data = data && JSON.parse(data);
|
|
64
|
+
|
|
65
|
+
const serverConfig = data['server-config'];
|
|
66
|
+
const params = options.params;
|
|
67
|
+
|
|
68
|
+
const questions = await getAuthQuestions(params);
|
|
69
|
+
const answers = await inquirer.prompt(questions);
|
|
70
|
+
serverConfig.server = answers.server;
|
|
71
|
+
serverConfig.user = answers.user;
|
|
72
|
+
serverConfig.password = answers.password;
|
|
73
|
+
serverConfig.clientId = answers.clientId;
|
|
74
|
+
serverConfig.clientSecret = answers.clientSecret;
|
|
75
|
+
await generateAccessToken(serverConfig);
|
|
76
|
+
|
|
77
|
+
data = JSON.stringify(data, null, 2);
|
|
78
|
+
fs.writeFile(pegaConfigJsonPath, data, err => {
|
|
79
|
+
if (err) throw err;
|
|
80
|
+
});
|
|
81
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import https from 'https';
|
|
4
|
+
|
|
5
|
+
import fetch from 'node-fetch';
|
|
6
|
+
import AdmZip from 'adm-zip';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
constructCompleteUrl,
|
|
11
|
+
getComponentDirectoryPath,
|
|
12
|
+
getComponents,
|
|
13
|
+
getComponentsObj,
|
|
14
|
+
getPegaServerConfig,
|
|
15
|
+
validateRulesetVersion
|
|
16
|
+
} from '../../util.js';
|
|
17
|
+
import { PUBLISH_COMPONENT_SERVICE_REST_ENDPOINT, TOKEN_PATH } from '../../constants.js';
|
|
18
|
+
|
|
19
|
+
export const getPublishComponentQuestions = async () => {
|
|
20
|
+
const components = await getComponentsObj(true);
|
|
21
|
+
const defaultPegaConfig = await getPegaServerConfig();
|
|
22
|
+
|
|
23
|
+
return [
|
|
24
|
+
{
|
|
25
|
+
name: 'componentKey',
|
|
26
|
+
type: 'rawlist',
|
|
27
|
+
message: 'Select component to build',
|
|
28
|
+
pageSize: 20,
|
|
29
|
+
choices: components
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'sourceMap',
|
|
33
|
+
message: 'Generate source map ?',
|
|
34
|
+
default: defaultPegaConfig.sourceMap,
|
|
35
|
+
when: () => false && !process.env.SOURCE_MAP
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'devBuild',
|
|
39
|
+
message: 'Generate development build ?',
|
|
40
|
+
default: defaultPegaConfig.devBuild
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export const zipComponent = async componentKey => {
|
|
46
|
+
const srcDirectory = await getComponentDirectoryPath(componentKey);
|
|
47
|
+
const buildDirectory = await path.join(path.resolve(), 'dist/components', componentKey);
|
|
48
|
+
const configJson = `${srcDirectory}/config.json`;
|
|
49
|
+
|
|
50
|
+
const zip = new AdmZip();
|
|
51
|
+
|
|
52
|
+
zip.addLocalFolder(srcDirectory, 'src/');
|
|
53
|
+
zip.addLocalFile(configJson);
|
|
54
|
+
zip.addLocalFolder(buildDirectory);
|
|
55
|
+
const zipContent = zip.toBuffer().toString('base64');
|
|
56
|
+
|
|
57
|
+
const configContent = Buffer.from(fs.readFileSync(`${srcDirectory}/config.json`)).toString();
|
|
58
|
+
fs.rmdir('dist', { recursive: true }, err => {
|
|
59
|
+
if (err) {
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return { zipContent, configContent };
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export const publishComponentToServer = async data => {
|
|
67
|
+
const { configContent, zipContent, componentKey, rulesetName, rulesetVersion } = data;
|
|
68
|
+
|
|
69
|
+
const apiBody = {
|
|
70
|
+
configContent,
|
|
71
|
+
zipContent,
|
|
72
|
+
componentKey: JSON.parse(configContent).componentKey,
|
|
73
|
+
publishFor: 'constellation',
|
|
74
|
+
rulesetName,
|
|
75
|
+
rulesetVersion,
|
|
76
|
+
category: ''
|
|
77
|
+
};
|
|
78
|
+
const defaultPegaConfig = await getPegaServerConfig();
|
|
79
|
+
const url = constructCompleteUrl(
|
|
80
|
+
defaultPegaConfig.server,
|
|
81
|
+
PUBLISH_COMPONENT_SERVICE_REST_ENDPOINT
|
|
82
|
+
);
|
|
83
|
+
try {
|
|
84
|
+
const OauthData = fs.readFileSync(TOKEN_PATH, 'utf8');
|
|
85
|
+
if (OauthData) {
|
|
86
|
+
const {
|
|
87
|
+
access_token: accessToken,
|
|
88
|
+
token_type: tokenType,
|
|
89
|
+
refresh_token: refreshToken
|
|
90
|
+
} = JSON.parse(OauthData);
|
|
91
|
+
let status = 500;
|
|
92
|
+
fetch(url, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
agent: new https.Agent({ rejectUnauthorized: false }),
|
|
95
|
+
headers: {
|
|
96
|
+
Authorization: `${tokenType} ${accessToken}`
|
|
97
|
+
},
|
|
98
|
+
body: JSON.stringify(apiBody)
|
|
99
|
+
})
|
|
100
|
+
.then(response => {
|
|
101
|
+
status = response.status;
|
|
102
|
+
return response.text();
|
|
103
|
+
})
|
|
104
|
+
.then(resp => {
|
|
105
|
+
const respData = JSON.parse(resp);
|
|
106
|
+
if (status === 401) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
'Error occured in authentication. Please regenerate using authenticate'
|
|
109
|
+
);
|
|
110
|
+
// console.log(accessTokenUri, refreshToken);
|
|
111
|
+
/* TODO - Handle refresh_token */
|
|
112
|
+
} else if (status == 200) {
|
|
113
|
+
console.log(chalk.bold.green(`Success : ${respData.message}`));
|
|
114
|
+
} else {
|
|
115
|
+
throw new Error(`${respData.message}`);
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
.catch(e => Promise.reject(`${chalk.bold.red(e)}`));
|
|
119
|
+
} else {
|
|
120
|
+
throw new Error(`Error occured in authentication. Please regenerate using authenticate`);
|
|
121
|
+
}
|
|
122
|
+
} catch (err) {
|
|
123
|
+
throw new Error(`Error occured in authentication. Please regenerate using authenticate`);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import inquirer from 'inquirer';
|
|
2
|
+
import Listr from 'listr';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
|
|
5
|
+
import validate from '../validator/index.js';
|
|
6
|
+
|
|
7
|
+
import bundleComponent from '../bundle/index.js';
|
|
8
|
+
import lintComponent from '../linter/index.js';
|
|
9
|
+
import { getPublishComponentQuestions, publishComponentToServer, zipComponent } from './helper.js';
|
|
10
|
+
import { getComponentDirectoryPath } from '../../util.js';
|
|
11
|
+
|
|
12
|
+
export default async options => {
|
|
13
|
+
const questions = await getPublishComponentQuestions();
|
|
14
|
+
const answers = await inquirer.prompt(questions);
|
|
15
|
+
const { componentKey, sourceMap, devBuild } = answers;
|
|
16
|
+
|
|
17
|
+
let content = {
|
|
18
|
+
...answers
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const tasks = new Listr(
|
|
22
|
+
[
|
|
23
|
+
{
|
|
24
|
+
title: 'Validate config schema',
|
|
25
|
+
task: async () => {
|
|
26
|
+
await validate(componentKey);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: 'Lint component',
|
|
31
|
+
task: async () => {
|
|
32
|
+
const targetDirectory = await getComponentDirectoryPath(componentKey);
|
|
33
|
+
// console.log(`in buildComponent Lint component task: componentKey: ${componentKey} targetDirectory: ${targetDirectory}`);
|
|
34
|
+
await lintComponent(targetDirectory);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
title: 'Bundle Component',
|
|
39
|
+
task: async () => await bundleComponent(componentKey, sourceMap, devBuild),
|
|
40
|
+
skip: () => (options.skipBundle ? 'Skipped bundling component' : undefined)
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
{
|
|
44
|
+
exitOnError: true
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
await tasks.run().catch(err => {
|
|
49
|
+
console.log(chalk.bold.red(err.toString()));
|
|
50
|
+
});
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import webpack from 'webpack';
|
|
4
|
+
import FileSizeReporter from 'react-dev-utils/FileSizeReporter.js';
|
|
5
|
+
import printBuildError from 'react-dev-utils/printBuildError.js';
|
|
6
|
+
|
|
7
|
+
import configFactory from './webpack.config.js';
|
|
8
|
+
import paths from './paths.js';
|
|
9
|
+
|
|
10
|
+
// Do this as the first thing so that any code reading it knows the right env.
|
|
11
|
+
let Env = 'production';
|
|
12
|
+
if (process.argv.includes('development')) {
|
|
13
|
+
Env = 'development';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (process.argv.includes('source-map')) {
|
|
17
|
+
process.env.SOURCE_MAP = true;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Do this as the first thing so that any code reading it knows the right env.
|
|
21
|
+
process.env.BABEL_ENV = Env;
|
|
22
|
+
process.env.NODE_ENV = Env;
|
|
23
|
+
|
|
24
|
+
// Makes the script crash on unhandled rejections instead of silently
|
|
25
|
+
// ignoring them. In the future, promise rejections that are not handled will
|
|
26
|
+
// terminate the Node.js process with a non-zero exit code.
|
|
27
|
+
process.on('unhandledRejection', err => {
|
|
28
|
+
console.log(err);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const measureFileSizesBeforeBuild = FileSizeReporter.measureFileSizesBeforeBuild;
|
|
33
|
+
const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;
|
|
34
|
+
|
|
35
|
+
// These sizes are pretty large. We'll warn for bundles exceeding them.
|
|
36
|
+
const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
|
|
37
|
+
const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
|
|
38
|
+
|
|
39
|
+
let compilationErrors = null;
|
|
40
|
+
|
|
41
|
+
// Create the build and print the deployment instructions.
|
|
42
|
+
function build(config, previousFileSizes) {
|
|
43
|
+
console.log(`Creating a ${Env} build...`);
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
const compiler = webpack(config);
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
compiler.run((err, stats) => {
|
|
50
|
+
|
|
51
|
+
if (err != null && typeof (err) == "object") {
|
|
52
|
+
if (err.error != undefined) {
|
|
53
|
+
//store and print elsewhere
|
|
54
|
+
compilationErrors = err.error;
|
|
55
|
+
//console.log("err:" + err);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (stats != null & typeof(stats) == "object") {
|
|
59
|
+
if (stats.errors != undefined) {
|
|
60
|
+
console.log("stats:" + stats);
|
|
61
|
+
}
|
|
62
|
+
else if (stats.compilation != undefined && stats.compilation.errors != undefined) {
|
|
63
|
+
|
|
64
|
+
//store and print elsewhere
|
|
65
|
+
compilationErrors = stats.compilation.errors;
|
|
66
|
+
|
|
67
|
+
console.log("stats:" + stats);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
let messages;
|
|
74
|
+
if (err) {
|
|
75
|
+
if (!err.message) {
|
|
76
|
+
return reject(err);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
let errMessage = err.message;
|
|
80
|
+
|
|
81
|
+
// Add additional information for postcss errors
|
|
82
|
+
if (Object.prototype.hasOwnProperty.call(err, 'postcssNode')) {
|
|
83
|
+
errMessage += `\nCompileError: Begins at CSS selector ${err.postcssNode.selector}`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
messages = {
|
|
87
|
+
errors: [errMessage],
|
|
88
|
+
warnings: []
|
|
89
|
+
};
|
|
90
|
+
} else {
|
|
91
|
+
messages = stats.toJson({ all: false, warnings: true, errors: true });
|
|
92
|
+
}
|
|
93
|
+
if (messages.errors.length) {
|
|
94
|
+
// Only keep the first error. Others are often indicative
|
|
95
|
+
// of the same problem, but confuse the reader with noise.
|
|
96
|
+
if (messages.errors.length > 1) {
|
|
97
|
+
messages.errors.length = 1;
|
|
98
|
+
}
|
|
99
|
+
return reject(new Error(messages.errors));
|
|
100
|
+
}
|
|
101
|
+
if (
|
|
102
|
+
process.env.CI &&
|
|
103
|
+
(typeof process.env.CI !== 'string' || process.env.CI.toLowerCase() !== 'false') &&
|
|
104
|
+
messages.warnings.length
|
|
105
|
+
) {
|
|
106
|
+
console.log(
|
|
107
|
+
chalk.yellow(
|
|
108
|
+
'\nTreating warnings as errors because process.env.CI = true.\n' +
|
|
109
|
+
'Most CI servers set it automatically.\n'
|
|
110
|
+
)
|
|
111
|
+
);
|
|
112
|
+
return reject(new Error(messages.warnings.join('\n\n')));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const resolveArgs = {
|
|
116
|
+
stats,
|
|
117
|
+
previousFileSizes,
|
|
118
|
+
warnings: messages.warnings
|
|
119
|
+
};
|
|
120
|
+
return resolve(resolveArgs);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default ({
|
|
126
|
+
inputFile,
|
|
127
|
+
outputFile,
|
|
128
|
+
componentKey,
|
|
129
|
+
externals,
|
|
130
|
+
globals,
|
|
131
|
+
sourceMap,
|
|
132
|
+
devBuild
|
|
133
|
+
}) => {
|
|
134
|
+
// Generate configuration
|
|
135
|
+
const config = configFactory(Env, {
|
|
136
|
+
inputFile,
|
|
137
|
+
outputFile,
|
|
138
|
+
componentKey,
|
|
139
|
+
externals,
|
|
140
|
+
globals,
|
|
141
|
+
sourceMap,
|
|
142
|
+
devBuild
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
if (devBuild) {
|
|
146
|
+
Env = 'development';
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return new Promise((resolve, reject) => {
|
|
150
|
+
measureFileSizesBeforeBuild(paths.appBuild)
|
|
151
|
+
.then(previousFileSizes => {
|
|
152
|
+
// Remove all content but keep the directory so that
|
|
153
|
+
// if you're in it, you don't end up in Trash
|
|
154
|
+
fs.emptyDirSync(paths.appBuild);
|
|
155
|
+
// Start the webpack build
|
|
156
|
+
return build(config, previousFileSizes);
|
|
157
|
+
})
|
|
158
|
+
.then(
|
|
159
|
+
({ stats, previousFileSizes, warnings }) => {
|
|
160
|
+
if (warnings.length) {
|
|
161
|
+
//console.log(chalk.yellow('Compiled with warnings.\n'), warnings[0].message);
|
|
162
|
+
console.log(chalk.yellow('Compiled with warnings.\n'));
|
|
163
|
+
for (let warning in warnings) {
|
|
164
|
+
console.log(chalk.yellow("Warning.."), warnings[warning].message);
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
console.log(chalk.green('Compiled successfully.\n'));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
console.log('File sizes after gzip:\n');
|
|
171
|
+
printFileSizesAfterBuild(
|
|
172
|
+
stats,
|
|
173
|
+
previousFileSizes,
|
|
174
|
+
paths.appBuild,
|
|
175
|
+
WARN_AFTER_BUNDLE_GZIP_SIZE,
|
|
176
|
+
WARN_AFTER_CHUNK_GZIP_SIZE
|
|
177
|
+
);
|
|
178
|
+
resolve('done emitting');
|
|
179
|
+
},
|
|
180
|
+
err => {
|
|
181
|
+
reject();
|
|
182
|
+
const tscCompileOnError = process.env.TSC_COMPILE_ON_ERROR === 'true';
|
|
183
|
+
if (tscCompileOnError) {
|
|
184
|
+
console.log(
|
|
185
|
+
chalk.yellow(
|
|
186
|
+
'Compiled with the following type errors (you may want to check these before deploying your app):\n'
|
|
187
|
+
)
|
|
188
|
+
);
|
|
189
|
+
printBuildError(err);
|
|
190
|
+
}
|
|
191
|
+
else if (compilationErrors != null) {
|
|
192
|
+
if (compilationErrors.length == undefined) {
|
|
193
|
+
console.log(chalk.red("Error..."), compilationErrors.message);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
for (let error in compilationErrors) {
|
|
197
|
+
console.log(chalk.red("Error..."), compilationErrors[error].message);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
process.exit(1);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
console.log(chalk.red('Failed to compile.\n'));
|
|
205
|
+
printBuildError(JSON.stringify(err));
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
.catch(err => {
|
|
211
|
+
reject();
|
|
212
|
+
if (err && err.message) {
|
|
213
|
+
console.log(err.message);
|
|
214
|
+
}
|
|
215
|
+
process.exit(1);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
};
|