@pega/custom-dx-components 0.0.1 → 0.23.1

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.
Files changed (223) hide show
  1. package/.vscode/extensions.json +1 -1
  2. package/README.md +6 -189
  3. package/package.json +34 -32
  4. package/src/auth.js +608 -0
  5. package/src/cli.js +42 -0
  6. package/src/constants.js +122 -8
  7. package/src/tasks/authenticate/helper.js +91 -8
  8. package/src/tasks/authenticate/index.js +169 -49
  9. package/src/tasks/build/helper.js +122 -0
  10. package/src/tasks/build/index.js +54 -0
  11. package/src/tasks/build-all/helper.js +70 -0
  12. package/src/tasks/build-all/index.js +79 -0
  13. package/src/tasks/{publish/bundle → bundle}/builder/index.js +49 -5
  14. package/src/tasks/{publish/bundle → bundle}/builder/webpack.config.js +5 -3
  15. package/src/tasks/{publish/bundle → bundle}/index.js +2 -2
  16. package/src/tasks/create/index.js +87 -64
  17. package/src/tasks/create/templates/Constellation/Field/Boolean/Boolean.js.mustache +38 -0
  18. package/src/tasks/create/templates/Constellation/Field/Boolean/boolean-format.js.mustache +26 -0
  19. package/src/tasks/create/templates/Constellation/Field/Boolean/config.json.mustache +145 -0
  20. package/src/tasks/create/templates/Constellation/Field/Boolean/demo.stories.jsx.mustache +61 -0
  21. package/src/tasks/create/templates/Constellation/Field/Boolean/event-utils.js.mustache +18 -0
  22. package/src/tasks/create/templates/Constellation/Field/Boolean/index.jsx.mustache +170 -0
  23. package/src/tasks/create/templates/Constellation/Field/Boolean/mock.stories.js.mustache +21 -0
  24. package/src/tasks/create/templates/Constellation/Field/Boolean/styles.js.mustache +7 -0
  25. package/src/tasks/create/templates/Constellation/Field/Date/DateFormatter.js.mustache +61 -0
  26. package/src/tasks/create/templates/Constellation/Field/Date/FormattedText.jsx.mustache +41 -0
  27. package/src/tasks/create/templates/Constellation/Field/Date/config.json.mustache +195 -0
  28. package/src/tasks/create/templates/Constellation/Field/Date/date.js.mustache +439 -0
  29. package/src/tasks/create/templates/Constellation/Field/Date/demo.stories.jsx.mustache +73 -0
  30. package/src/tasks/create/templates/Constellation/Field/Date/index.jsx.mustache +256 -0
  31. package/src/tasks/create/templates/Constellation/Field/Date/mock.stories.js.mustache +23 -0
  32. package/src/tasks/create/templates/Constellation/Field/Date/styles.js.mustache +7 -0
  33. package/src/tasks/create/templates/Constellation/Field/Date/suggestions-handler.js +10 -0
  34. package/src/tasks/create/templates/Constellation/Field/DateTime/config.json.mustache +256 -0
  35. package/src/tasks/create/templates/Constellation/Field/DateTime/date-time.js.mustache +92 -0
  36. package/src/tasks/create/templates/Constellation/Field/DateTime/date-utils.js.mustache +287 -0
  37. package/src/tasks/create/templates/Constellation/Field/DateTime/date.js.mustache +328 -0
  38. package/src/tasks/create/templates/Constellation/Field/DateTime/demo.stories.jsx.mustache +73 -0
  39. package/src/tasks/create/templates/Constellation/Field/DateTime/index.jsx.mustache +254 -0
  40. package/src/tasks/create/templates/Constellation/Field/DateTime/mock.stories.js.mustache +23 -0
  41. package/src/tasks/create/templates/Constellation/Field/DateTime/styles.js.mustache +7 -0
  42. package/src/tasks/create/templates/Constellation/Field/DateTime/suggestions-handler.js +10 -0
  43. package/src/tasks/create/templates/Constellation/Field/Decimal/config.json.mustache +278 -0
  44. package/src/tasks/create/templates/Constellation/Field/Decimal/demo.stories.jsx.mustache +49 -0
  45. package/src/tasks/create/templates/Constellation/Field/Decimal/event-utils.js.mustache +18 -0
  46. package/src/tasks/create/templates/Constellation/Field/Decimal/index.jsx.mustache +273 -0
  47. package/src/tasks/create/templates/Constellation/Field/Decimal/mock.stories.js.mustache +21 -0
  48. package/src/tasks/create/templates/Constellation/Field/Decimal/styles.js.mustache +7 -0
  49. package/src/tasks/create/templates/Constellation/Field/Decimal/suggestions-handler.js +10 -0
  50. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/config.json.mustache +291 -0
  51. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/demo.stories.jsx.mustache +53 -0
  52. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/event-utils.js.mustache +18 -0
  53. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/index.jsx.mustache +299 -0
  54. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/mock.stories.js.mustache +23 -0
  55. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/styles.js.mustache +7 -0
  56. package/src/tasks/create/templates/Constellation/Field/Decimal-Currency/suggestions-handler.js +10 -0
  57. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/config.json.mustache +93 -0
  58. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/demo.stories.jsx.mustache +49 -0
  59. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/event-utils.js.mustache +18 -0
  60. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/index.jsx.mustache +281 -0
  61. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/mock.stories.js.mustache +21 -0
  62. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/styles.js.mustache +7 -0
  63. package/src/tasks/create/templates/Constellation/Field/Decimal-Percentage/suggestions-handler.js +10 -0
  64. package/src/tasks/create/templates/Constellation/Field/Integer/config.json.mustache +347 -0
  65. package/src/tasks/create/templates/Constellation/Field/Integer/demo.stories.jsx.mustache +49 -0
  66. package/src/tasks/create/templates/Constellation/Field/Integer/event-utils.js.mustache +18 -0
  67. package/src/tasks/create/templates/Constellation/Field/Integer/index.jsx.mustache +336 -0
  68. package/src/tasks/create/templates/Constellation/Field/Integer/mock.stories.js.mustache +21 -0
  69. package/src/tasks/create/templates/Constellation/Field/Integer/styles.js.mustache +7 -0
  70. package/src/tasks/create/templates/Constellation/Field/Integer/suggestions-handler.js +10 -0
  71. package/src/tasks/create/templates/Constellation/Field/Picklist/config.json.mustache +114 -0
  72. package/src/tasks/create/templates/Constellation/Field/Picklist/demo.stories.jsx.mustache +78 -0
  73. package/src/tasks/create/templates/Constellation/Field/Picklist/event-utils.js.mustache +18 -0
  74. package/src/tasks/create/templates/Constellation/Field/Picklist/index.jsx.mustache +351 -0
  75. package/src/tasks/create/templates/Constellation/Field/Picklist/mock.stories.js.mustache +67 -0
  76. package/src/tasks/create/templates/Constellation/Field/Picklist/styles.js.mustache +7 -0
  77. package/src/tasks/create/templates/Constellation/Field/Picklist/suggestions-handler.js +10 -0
  78. package/src/tasks/create/{template → templates/Constellation/Field/Text}/config.json.mustache +14 -5
  79. package/src/tasks/create/templates/Constellation/Field/Text/demo.stories.jsx.mustache +51 -0
  80. package/src/tasks/create/{template → templates/Constellation/Field/Text}/index.jsx.mustache +5 -0
  81. package/src/tasks/create/templates/Constellation/Field/Text/mock.stories.js.mustache +13 -0
  82. package/src/tasks/create/templates/Constellation/Field/Text/styles.js.mustache +7 -0
  83. package/src/tasks/create/templates/Constellation/Field/Text-Email/config.json.mustache +111 -0
  84. package/src/tasks/create/templates/Constellation/Field/Text-Email/demo.stories.jsx.mustache +48 -0
  85. package/src/tasks/create/templates/Constellation/Field/Text-Email/event-utils.js.mustache +18 -0
  86. package/src/tasks/create/templates/Constellation/Field/Text-Email/index.jsx.mustache +231 -0
  87. package/src/tasks/create/templates/Constellation/Field/Text-Email/mock.stories.js.mustache +22 -0
  88. package/src/tasks/create/templates/Constellation/Field/Text-Email/styles.js.mustache +7 -0
  89. package/src/tasks/create/templates/Constellation/Field/Text-Email/suggestions-handler.js +10 -0
  90. package/src/tasks/create/templates/Constellation/Field/Text-Input/StatusWork.jsx +26 -0
  91. package/src/tasks/create/templates/Constellation/Field/Text-Input/config.json.mustache +111 -0
  92. package/src/tasks/create/templates/Constellation/Field/Text-Input/demo.stories.jsx.mustache +48 -0
  93. package/src/tasks/create/templates/Constellation/Field/Text-Input/event-utils.js.mustache +18 -0
  94. package/src/tasks/create/templates/Constellation/Field/Text-Input/index.jsx.mustache +239 -0
  95. package/src/tasks/create/templates/Constellation/Field/Text-Input/mock.stories.js.mustache +21 -0
  96. package/src/tasks/create/templates/Constellation/Field/Text-Input/styles.js.mustache +7 -0
  97. package/src/tasks/create/templates/Constellation/Field/Text-Input/suggestions-handler.js +10 -0
  98. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/config.json.mustache +111 -0
  99. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/demo.stories.jsx.mustache +48 -0
  100. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/event-utils.js.mustache +18 -0
  101. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/index.jsx.mustache +231 -0
  102. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/mock.stories.js.mustache +20 -0
  103. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/styles.js.mustache +7 -0
  104. package/src/tasks/create/templates/Constellation/Field/Text-Paragraph/suggestions-handler.js +10 -0
  105. package/src/tasks/create/templates/Constellation/Field/Text-Phone/config.json.mustache +123 -0
  106. package/src/tasks/create/templates/Constellation/Field/Text-Phone/demo.stories.jsx.mustache +46 -0
  107. package/src/tasks/create/templates/Constellation/Field/Text-Phone/event-utils.js.mustache +18 -0
  108. package/src/tasks/create/templates/Constellation/Field/Text-Phone/index.jsx.mustache +267 -0
  109. package/src/tasks/create/templates/Constellation/Field/Text-Phone/mock.stories.js.mustache +37 -0
  110. package/src/tasks/create/templates/Constellation/Field/Text-Phone/styles.js.mustache +7 -0
  111. package/src/tasks/create/templates/Constellation/Field/Text-Phone/suggestions-handler.js +10 -0
  112. package/src/tasks/create/templates/Constellation/Field/Text-URL/config.json.mustache +237 -0
  113. package/src/tasks/create/templates/Constellation/Field/Text-URL/demo.stories.jsx.mustache +46 -0
  114. package/src/tasks/create/templates/Constellation/Field/Text-URL/event-utils.js.mustache +18 -0
  115. package/src/tasks/create/templates/Constellation/Field/Text-URL/index.jsx.mustache +232 -0
  116. package/src/tasks/create/templates/Constellation/Field/Text-URL/mock.stories.js.mustache +22 -0
  117. package/src/tasks/create/templates/Constellation/Field/Text-URL/styles.js.mustache +7 -0
  118. package/src/tasks/create/templates/Constellation/Field/Text-URL/suggestions-handler.js +10 -0
  119. package/src/tasks/create/templates/Constellation/Field/Text-URL/text-url.jsx.mustache +173 -0
  120. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/config.json.mustache +185 -0
  121. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/demo.stories.jsx.mustache +57 -0
  122. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/index.jsx.mustache +213 -0
  123. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/mock.stories.js.mustache +20 -0
  124. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/styles.js.mustache +7 -0
  125. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/suggestions-handler.js +10 -0
  126. package/src/tasks/create/templates/Constellation/Field/TimeOfDay/time-of-day.js.mustache +287 -0
  127. package/src/tasks/create/templates/Constellation/Template/DETAILS/OneColumnDetails.svg +22 -0
  128. package/src/tasks/create/templates/Constellation/Template/DETAILS/StatusWork.jsx.mustache +26 -0
  129. package/src/tasks/create/templates/Constellation/Template/DETAILS/config.json.mustache +35 -0
  130. package/src/tasks/create/templates/Constellation/Template/DETAILS/demo.stories.jsx.mustache +132 -0
  131. package/src/tasks/create/templates/Constellation/Template/DETAILS/index.jsx.mustache +86 -0
  132. package/src/tasks/create/templates/Constellation/Template/DETAILS/mock.stories.js.mustache +189 -0
  133. package/src/tasks/create/templates/Constellation/Template/DETAILS/styles.js.mustache +7 -0
  134. package/src/tasks/create/templates/Constellation/Template/DETAILS/utils.js.mustache +152 -0
  135. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/StatusWork.jsx.mustache +26 -0
  136. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/TwoColumnDetails.svg +28 -0
  137. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/config.json.mustache +42 -0
  138. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/demo.stories.jsx.mustache +136 -0
  139. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.jsx.mustache +86 -0
  140. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/mock.stories.js.mustache +230 -0
  141. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/styles.js.mustache +7 -0
  142. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/utils.js.mustache +155 -0
  143. package/src/tasks/create/templates/Constellation/Template/FORM/DefaultForm.svg +29 -0
  144. package/src/tasks/create/templates/Constellation/Template/FORM/config.json.mustache +45 -0
  145. package/src/tasks/create/templates/Constellation/Template/FORM/demo.stories.jsx.mustache +169 -0
  146. package/src/tasks/create/templates/Constellation/Template/FORM/index.jsx.mustache +45 -0
  147. package/src/tasks/create/templates/Constellation/Template/FORM/mock.stories.js.mustache +137 -0
  148. package/src/tasks/create/templates/Constellation/Template/FORM/styles.js.mustache +7 -0
  149. package/src/tasks/create/templates/Constellation/Template/FORM-region/TwoColumn.svg +38 -0
  150. package/src/tasks/create/templates/Constellation/Template/FORM-region/config.json.mustache +27 -0
  151. package/src/tasks/create/templates/Constellation/Template/FORM-region/demo.stories.jsx.mustache +178 -0
  152. package/src/tasks/create/templates/Constellation/Template/FORM-region/index.jsx.mustache +48 -0
  153. package/src/tasks/create/templates/Constellation/Template/FORM-region/mock.stories.js.mustache +143 -0
  154. package/src/tasks/create/templates/Constellation/Template/FORM-region/styles.js.mustache +7 -0
  155. package/src/tasks/create/templates/Constellation/Template/PAGE/GetNextWork.jsx.mustache +35 -0
  156. package/src/tasks/create/templates/Constellation/Template/PAGE/OneColumnPage.svg +36 -0
  157. package/src/tasks/create/templates/Constellation/Template/PAGE/config.json.mustache +32 -0
  158. package/src/tasks/create/templates/Constellation/Template/PAGE/demo.stories.jsx.mustache +102 -0
  159. package/src/tasks/create/templates/Constellation/Template/PAGE/index.jsx.mustache +70 -0
  160. package/src/tasks/create/templates/Constellation/Template/PAGE/localizations.json.mustache +4 -0
  161. package/src/tasks/create/templates/Constellation/Template/PAGE/mock.stories.js.mustache +94 -0
  162. package/src/tasks/create/templates/Constellation/Template/PAGE/styles.js.mustache +7 -0
  163. package/src/tasks/create/templates/Constellation/Template/PAGE/utils.js.mustache +229 -0
  164. package/src/tasks/create/templates/Constellation/Widget/CASE/OneColumnPage.svg +36 -0
  165. package/src/tasks/create/templates/Constellation/Widget/CASE/config.json.mustache +23 -0
  166. package/src/tasks/create/templates/Constellation/Widget/CASE/demo.stories.jsx.mustache +78 -0
  167. package/src/tasks/create/templates/Constellation/Widget/CASE/index.jsx.mustache +76 -0
  168. package/src/tasks/create/templates/Constellation/Widget/CASE/mock.stories.js.mustache +390 -0
  169. package/src/tasks/create/{template → templates/Constellation/Widget/CASE}/styles.js.mustache +1 -1
  170. package/src/tasks/create/templates/Constellation/Widget/PAGE/OneColumnPage.svg +36 -0
  171. package/src/tasks/create/templates/Constellation/Widget/PAGE/config.json.mustache +59 -0
  172. package/src/tasks/create/templates/Constellation/Widget/PAGE/demo.stories.jsx.mustache +30 -0
  173. package/src/tasks/create/templates/Constellation/Widget/PAGE/index.jsx.mustache +48 -0
  174. package/src/tasks/create/templates/Constellation/Widget/PAGE/mock.stories.js.mustache +23 -0
  175. package/src/tasks/create/templates/Constellation/Widget/PAGE/styles.js.mustache +7 -0
  176. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Avatar.jsx.mustache +75 -0
  177. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/OneColumnPage.svg +36 -0
  178. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/Operator.jsx.mustache +240 -0
  179. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/config.json.mustache +66 -0
  180. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/demo.stories.jsx.mustache +68 -0
  181. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/index.jsx.mustache +110 -0
  182. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/mock.stories.js.mustache +51 -0
  183. package/src/tasks/create/templates/Constellation/Widget/PAGE-CASE/styles.js.mustache +7 -0
  184. package/src/tasks/create-all/index.js +398 -0
  185. package/src/tasks/delete/helper.js +6 -4
  186. package/src/tasks/delete/index.js +4 -0
  187. package/src/tasks/delete-all/helper.js +153 -0
  188. package/src/tasks/delete-all/index.js +49 -0
  189. package/src/tasks/generate-ai/aiPrompt.txt.mustache +121 -0
  190. package/src/tasks/generate-ai/helper.js +184 -0
  191. package/src/tasks/generate-ai/index.js +33 -0
  192. package/src/tasks/index.js +7 -0
  193. package/src/tasks/init/index.js +9 -3
  194. package/src/tasks/init/template/.eslintignore +8 -0
  195. package/src/tasks/init/template/.eslintrc.json +186 -5
  196. package/src/tasks/init/template/.vscode/extensions.json +1 -1
  197. package/src/tasks/init/template/README.md +80 -61
  198. package/src/tasks/init/template/keys/DX-ComponentDev.zip +0 -0
  199. package/src/tasks/init/template/keys/dxcb.crt +32 -0
  200. package/src/tasks/init/template/keys/dxcb.key +51 -0
  201. package/src/tasks/init/template/package.json.mustache +44 -21
  202. package/src/tasks/init/template/tasks.config.json +19 -5
  203. package/src/tasks/init/template/templateNPMRC.txt +8 -0
  204. package/src/tasks/linter/index.js +46 -0
  205. package/src/tasks/list/helper.js +19 -6
  206. package/src/tasks/list/index.js +4 -0
  207. package/src/tasks/publish/helper.js +13 -4
  208. package/src/tasks/publish/index.js +14 -1
  209. package/src/tasks/publish-all/helper.js +154 -0
  210. package/src/tasks/publish-all/index.js +95 -0
  211. package/src/tasks/rename/index.js +314 -0
  212. package/src/tasks/validator/index.js +291 -18
  213. package/src/util.js +247 -6
  214. package/src/tasks/create/template/demo.stories.jsx.mustache +0 -44
  215. package/src/tasks/init/template/src/components/MBTAList/MBTAList.stories.tsx +0 -10
  216. package/src/tasks/init/template/src/components/MBTAList/MBTAList.tsx +0 -122
  217. package/src/tasks/init/template/src/components/MBTAList/icons/accessible.icon.tsx +0 -14
  218. package/src/tasks/init/template/src/components/MBTAList/icons/bus.icon.tsx +0 -13
  219. package/src/tasks/init/template/src/components/MBTAList/icons/mbta.icon.tsx +0 -10
  220. package/src/tasks/init/template/src/components/MBTAList/icons/subway.icon.tsx +0 -14
  221. package/src/tasks/init/template/src/components/MBTAList/index.ts +0 -2
  222. /package/src/tasks/{publish/bundle → bundle}/builder/modules.js +0 -0
  223. /package/src/tasks/{publish/bundle → bundle}/builder/paths.js +0 -0
@@ -0,0 +1,121 @@
1
+ Your task is to generate a custom DX component based on the Pega Constellation architecture. A custom DX component is a React functional component that uses hooks. Create the first iteration of this component using the code template below, delimited by the second set of triple backticks.
2
+
3
+ Replace MyOrg, MyLib and MyComponent with the text specified in InputProperties called organization, library and name respectively that is provided in the in the json properties array delimited by the fourth set of triple backticks. Be aware that MyComponent should be derived from the last part of the componentKey text that is delimited by a '_'. Based on the example component definition delimited by the third set of three backticks, replace the component props and PropTypes with the properties defined in the properties json array delimited by the fourth set of backticks.
4
+
5
+ DesignSystemComponents is an array of jsx React components. Replace the DesignSystemComponents import with the comma delimited list of imported components from '@pega/cosmos-react-core' with the text specified in DesignSystemComponents, delimited by the first set of triple backticks. Also add in the jsx components in the render function.
6
+
7
+ {{COMPONENT_ADDITIONAL}}
8
+
9
+ DesignSystemComponents:
10
+ ```{{COMPONENT_DSC}}```
11
+
12
+ Template:
13
+ ```
14
+ import PropTypes from 'prop-types';
15
+ import { DesignSystemComponents } from '@pega/cosmos-react-core';
16
+ import StyledMyOrgMyLibMyComponentWrapper from './styles';
17
+
18
+ export default function MyOrgMyLibMyComponent(props) {
19
+ const { getPConnect, visibility, disabled, required, aNumber, aString, aBoolean } = props;
20
+
21
+ const pConn = getPConnect();
22
+
23
+ return (
24
+ <StyledMyOrgMyLibMyPageWidgetWrapper>
25
+ <DesignSystemComponent
26
+ input1 = {aNumber}
27
+ input2 = {aString}
28
+ input3 = {aBoolean}
29
+ />
30
+ </StyledMyOrgMyLibMyPageWidgetWrapper>
31
+ );
32
+ }
33
+
34
+ MyOrgMyLibMyComponent.defaultProps = {
35
+ aString: '',
36
+ aNumber: 0,
37
+ aBoolean: false,
38
+ visibility: true,
39
+ disabled: false,
40
+ required: false
41
+ }
42
+ MyOrgMyLibMyComponent.propTypes = {
43
+ aString: PropTypes.string,
44
+ aNumber: PropTypes.number,
45
+ aBoolean: PropTypes.bool,
46
+ visibility: PropTypes.string.bool,
47
+ disabled: PropTypes.string.bool,
48
+ required: PropTypes.string.bool,
49
+ getPConnect: PropTypes.func.isRequired
50
+ }
51
+ ```
52
+ ExampleComponentDefinition:
53
+ ```
54
+ {
55
+ "name": "MyOrg_MyLib_MyComponent",
56
+ "label": "My Component",
57
+ "description": "My Component",
58
+ "organization": "MyOrg",
59
+ "version": "01.01.01",
60
+ "library": "MyLib",
61
+ "allowedApplications": [],
62
+ "componentKey": "MyOrg_MyLib_MyComponent",
63
+ "type": "",
64
+ "subtype": "",
65
+ "properties": [
66
+ {
67
+ "name": "aString",
68
+ "label": "aString value",
69
+ "format": "TEXT"
70
+ },
71
+ {
72
+ "name": "aBoolean",
73
+ "label": "aBoolean value",
74
+ "format": "BOOLEAN"
75
+ },
76
+ {
77
+ "name": "aNumber",
78
+ "label": "aNumber value",
79
+ "format": "NUMBER",
80
+ "defaultValue": "0"
81
+ },
82
+ {
83
+ "name": "visibility",
84
+ "label": "Visible",
85
+ "format": "VISIBILITY"
86
+ },
87
+ {
88
+ "name": "disabled",
89
+ "label": "Disabled",
90
+ "format": "DISABLED",
91
+ "visibility": "(!$this.readOnly = true)"
92
+ },
93
+ {
94
+ "name": "required",
95
+ "label": "Required",
96
+ "format": "REQUIRED",
97
+ "visibility": "(!$this.readOnly = true)"
98
+ },
99
+ {
100
+ "label": "Advanced",
101
+ "format": "GROUP",
102
+ "collapsible": true,
103
+ "properties": [
104
+ {
105
+ "name": "testId",
106
+ "label": "Test ID",
107
+ "format": "TEXT",
108
+ "ignorePattern": "[^-_\\p{N}\\p{L}]",
109
+ "includeAnnotations": false
110
+ }
111
+ ]
112
+ }
113
+ ],
114
+ "defaultConfig": {
115
+ }
116
+ }
117
+ ```
118
+ InputProperties:
119
+ ```
120
+ {{COMPONENT_CONFIG}}
121
+ ```
@@ -0,0 +1,184 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import ora from 'ora';
4
+ import path from 'path';
5
+ import { URL, fileURLToPath } from 'url';
6
+ import { join } from 'path';
7
+ import fs from 'fs';
8
+
9
+ import { AI_PROMPT_FILENAME } from '../../constants.js';
10
+
11
+ import _ from 'lodash';
12
+
13
+
14
+ import {
15
+ getComponents,
16
+ getPegaConfig,
17
+ getAIPromptData,
18
+ getDirectoryFiles,
19
+ getAIComponent,
20
+ getComponentDirectoryPath,
21
+ compileMustacheTemplate,
22
+ getComponentConfigJson
23
+ } from '../../util.js';
24
+ import { str } from 'ajv';
25
+
26
+
27
+
28
+
29
+
30
+ export const getComponentAndGenerateAI = async (enteredKey) => {
31
+ const localComponents = await getComponents();
32
+
33
+ let answers;
34
+
35
+ if (localComponents.length > 0) {
36
+
37
+ if (enteredKey && enteredKey != "") {
38
+ answers = await inquirer.prompt([
39
+ {
40
+ name: 'designSystemComponents',
41
+ message: 'Enter comma delimited string of Design system components (ie. Input, TextArea, etc.)'
42
+ },
43
+ {
44
+ name: 'additionalPromptInfo',
45
+ message: 'Enter any additional generation information',
46
+ }
47
+
48
+
49
+ ]);
50
+ }
51
+ else {
52
+ answers = await inquirer.prompt([
53
+ {
54
+ name: 'componentKey',
55
+ type: 'rawlist',
56
+ message: 'Select component to generateAI',
57
+ choices: localComponents,
58
+ },
59
+ {
60
+ name: 'designSystemComponents',
61
+ message: 'Enter comma delimited string of Design system components (ie. Input, TextArea, etc.)'
62
+ },
63
+ {
64
+ name: 'additionalPromptInfo',
65
+ message: 'Enter any additional generation information',
66
+ }
67
+
68
+
69
+ ]);
70
+ }
71
+
72
+
73
+ console.log("Generating component...");
74
+
75
+ await generateAIComponent(enteredKey || answers.componentKey, answers.designSystemComponents, answers.additionalPropmtInfo);
76
+
77
+ } else {
78
+ console.log(chalk.bold.redBright(`No custom components in ${sourceOfComponents}`));
79
+ }
80
+ };
81
+
82
+ export const renameFile = (oldFileName, newFileName) => {
83
+ try {
84
+ fs.renameSync(oldFileName, newFileName);
85
+
86
+ } catch(err) {
87
+ console.log(err)
88
+ }
89
+ }
90
+
91
+ export const generateAIComponent = async (componentKey, designSystemComponents, additionalPromptInfo) => {
92
+
93
+ const fileName = "." + path.sep + AI_PROMPT_FILENAME;
94
+
95
+ // get config file
96
+ //
97
+ const targetDirectory = await getComponentDirectoryPath(componentKey);
98
+ const configFile = await getComponentConfigJson(targetDirectory);
99
+
100
+ let strPrompt = compileMustacheTemplate(fileURLToPath(new URL(fileName, import.meta.url)), {
101
+ COMPONENT_CONFIG: configFile,
102
+ COMPONENT_DSC: designSystemComponents,
103
+ COMPONENT_ADDITIONAL: additionalPromptInfo
104
+ });
105
+
106
+ strPrompt = _.unescape(strPrompt);
107
+
108
+ //let strPrompt = await getAIPromptData(fileURLToPath(new URL(fileName, import.meta.url)));
109
+ let aiComponent = await getAIComponent(strPrompt);
110
+
111
+ //console.log(aiData);
112
+ const indexFile = join(targetDirectory, "index.jsx");
113
+
114
+ // remove enclosed ``` and "Answer:"
115
+ aiComponent = aiComponent.substring(aiComponent.indexOf("import"));
116
+ aiComponent = aiComponent.substring(0, aiComponent.lastIndexOf("```"));
117
+
118
+
119
+
120
+ // get directory list
121
+ // check for index-template.jsx.old
122
+ // if not there, copy index.jsx to index-template.jsx.old and then copy aiComponent to index.jsx
123
+ // if there, check if have index-genai-1.jsx.old, if not, then copy index.jsx, to index-genai-1.jsx.old
124
+ // otherwise, find all index-genai-X and find biggest number and add one, and save index.jsx to that and then create index.jsx
125
+
126
+ const dirList = await getDirectoryFiles(targetDirectory);
127
+
128
+ if (dirList.includes("index-template.jsx.old")) {
129
+
130
+ const genList = dirList.map( (el) => {
131
+ if (el.indexOf("index-genai") >= 0) {
132
+ return el;
133
+ }
134
+ else {
135
+ return "";
136
+ }
137
+ });
138
+
139
+ if (genList.length > 0) {
140
+ let lastIndex = 0;
141
+
142
+ genList.forEach((el) => {
143
+ const theName = el.split(".")[0];
144
+ const theIndex = theName.split("-")[2];
145
+
146
+ if (parseInt(theIndex) > lastIndex) {
147
+ lastIndex = parseInt(theIndex);
148
+ }
149
+ });
150
+
151
+ lastIndex++;
152
+
153
+ const oldGenFileName = join(targetDirectory, "index.jsx");
154
+ const newGenFileName = join(targetDirectory, "index-genai-" + lastIndex + ".jsx.old");
155
+
156
+ renameFile(oldGenFileName, newGenFileName);
157
+ }
158
+ else {
159
+ const oldGenFileName = join(targetDirectory, "index.jsx");
160
+ const newGenFileName = join(targetDirectory, "index-genai-1.jsx.old");
161
+
162
+ renameFile(oldGenFileName, newGenFileName);
163
+ }
164
+ }
165
+ else {
166
+ // so only index.jsx, so rename index.jsx to index-template.jsx.old
167
+ // and create a new index.jsx
168
+ const oldFileName = join(targetDirectory, "index.jsx");
169
+ const newFileName = join(targetDirectory, "index-template.jsx.old");
170
+
171
+ renameFile(oldFileName, newFileName);
172
+ }
173
+
174
+ // creae new index.jsx
175
+ fs.writeFileSync(indexFile, aiComponent, err => {
176
+ if (err) {
177
+ Promise.reject(`${chalk.bold.red(err)}`);
178
+ }
179
+ });
180
+
181
+ console.log(`Updated file ${chalk.green('index.jsx')} in directory ${chalk.green(componentKey)} with AI generated code.`);
182
+
183
+
184
+ }
@@ -0,0 +1,33 @@
1
+ import inquirer from 'inquirer';
2
+ import ora from 'ora';
3
+ import chalk from 'chalk';
4
+
5
+ import {
6
+ getComponentAndGenerateAI,
7
+ generateAIComponent
8
+ } from './helper.js';
9
+
10
+ import { showVersion } from '../../util.js';
11
+
12
+
13
+
14
+
15
+ export default async options => {
16
+ showVersion();
17
+
18
+ if (options.params.length > 3 && options.params[3] != "") {
19
+ const sourceOfComponents = options.params[3];
20
+
21
+ //await generateAIComponent(sourceOfComponents);
22
+ await getComponentAndGenerateAI(sourceOfComponents);
23
+ }
24
+ else {
25
+
26
+ await getComponentAndGenerateAI();
27
+ }
28
+
29
+
30
+
31
+
32
+
33
+ };
@@ -1,9 +1,16 @@
1
1
  export { default as createComponent } from './create/index.js';
2
+ export { default as createAllComponents } from './create-all/index.js';
2
3
  export { default as deleteComponent } from './delete/index.js';
4
+ export { default as deleteAllComponents } from './delete-all/index.js';
3
5
  export { default as initProject } from './init/index.js';
4
6
  export { default as publishComponent } from './publish/index.js';
7
+ export { default as publishAllComponents } from './publish-all/index.js';
8
+ export { default as renameComponent } from './rename/index.js';
5
9
  export { default as listComponents } from './list/index.js';
6
10
  export { default as updateComponent } from './update/index.js';
7
11
  export { default as validate } from './validator/index.js';
8
12
  export { default as authenticate } from './authenticate/index.js';
9
13
  export { default as upgrade } from './upgrade/index.js';
14
+ export { default as buildComponent } from './build/index.js';
15
+ export { default as buildAllComponents } from './build-all/index.js';
16
+ export { default as generateWithAI } from './generate-ai/index.js';
@@ -47,6 +47,7 @@ const copyProjectTemplate = async options => {
47
47
  clobber: false
48
48
  });
49
49
  const packageJsonPath = path.join(options.targetDirectory, 'package.json.mustache');
50
+ const templateNPMRCPath = path.join(options.targetDirectory, 'templateNPMRC.txt');
50
51
 
51
52
  let { organization, projectName } = options;
52
53
 
@@ -65,6 +66,10 @@ const copyProjectTemplate = async options => {
65
66
  const output = compileMustacheTemplate(packageJsonPath, options);
66
67
  fs.writeFileSync(packageJsonPath, output);
67
68
  fs.renameSync(packageJsonPath, packageJsonPath.replace('.mustache', ''));
69
+
70
+ // rename template NPMRC to .npmrc, need to do this because npmjs won't publish an .npmrc file
71
+ fs.renameSync(templateNPMRCPath, templateNPMRCPath.replace('templateNPMRC.txt', '.npmrc'));
72
+
68
73
  await createLicense(options);
69
74
  };
70
75
 
@@ -123,7 +128,8 @@ export default async options => {
123
128
  },
124
129
  {
125
130
  title: installDependenciesText,
126
- task: () => execPromise('npm i --production=false', { cwd: options.targetDirectory })
131
+ task: () =>
132
+ execPromise('npm i --force --production=false', { cwd: options.targetDirectory })
127
133
  }
128
134
  ],
129
135
  {
@@ -140,7 +146,7 @@ export default async options => {
140
146
  '\n',
141
147
  `Inside that directory, you can run several commands:`,
142
148
  '\n\n',
143
- `${chalk.blueBright('npm start')}`,
149
+ `${chalk.blueBright('npm run startStorybook')}`,
144
150
  `\n Start Storybook in development mode`,
145
151
  '\n\n',
146
152
  `${chalk.blueBright('npm run create')}`,
@@ -158,7 +164,7 @@ export default async options => {
158
164
  '\n\n',
159
165
  `${chalk.blueBright('cd')} ${chalk.bold(projectName)}`,
160
166
  '\n',
161
- `${chalk.blueBright('npm start')}`,
167
+ `${chalk.blueBright('npm run startStorybook')}`,
162
168
  '\n'
163
169
  );
164
170
  return true;
@@ -0,0 +1,8 @@
1
+ webpack.config.js
2
+ src/helpers/config_access.js
3
+ *.html
4
+ *.css
5
+ *.json
6
+ *.md
7
+ *.svg
8
+ *.zip
@@ -1,10 +1,191 @@
1
1
  {
2
- "extends": ["@pega"],
3
- "parserOptions": { "project": "tsconfig.json" },
4
2
  "root": true,
5
- "ignorePatterns": ["node_modules", "lib", "!.storybook", ".storybook/public"],
3
+ "extends": ["@pega"],
4
+ "parserOptions": {
5
+ "project": "tsconfig.json",
6
+ "ecmaVersion": 13
7
+ },
8
+ "settings": {
9
+ "import/resolver": {
10
+ "typescript": {},
11
+ "node": {
12
+ "extensions": [".js", ".jsx"]
13
+ }
14
+ },
15
+ "react": {
16
+ "version": "detect"
17
+ }
18
+ },
19
+ "ignorePatterns": ["node_modules", "packages/*/lib", "!.storybook", ".storybook/public"],
6
20
  "rules": {
21
+ // Prettier recommends running separately from a linter.
22
+ // https://prettier.io/docs/en/integrating-with-linters.html#notes
7
23
  "prettier/prettier": "off",
8
- "react/react-in-jsx-scope": "off"
9
- }
24
+
25
+ // Disable rules from shared configs we're not ready for yet.
26
+ "sonarjs/cognitive-complexity": "off",
27
+ "sonarjs/no-identical-functions": "off",
28
+ "sonarjs/no-duplicate-string": "off",
29
+ "sonarjs/no-nested-template-literals": "off",
30
+
31
+ //
32
+ // JA - Override some default lint handling here
33
+ "@typescript-eslint/array-type": ["error", { "default": "generic" }],
34
+ // "import/extensions": ["warn", "never"], // Turning off for now (see below)
35
+
36
+ //
37
+ // Initial release: turning these off; phase in to "warn" or "error" over time
38
+ // For "quotes" and "@typescript-eslint/quotes", see override below for .ts/.tsx files
39
+ "import/extensions": ["off", "never"],
40
+ "import/named": "off",
41
+ "import/no-cycle": "off",
42
+ "import/no-duplicates": "off",
43
+ "import/no-extraneous-dependencies": "off",
44
+ "import/no-named-as-default": "off",
45
+ "import/no-named-as-default-member": "off",
46
+ "import/no-self-import": "off",
47
+ "import/no-unresolved": "off",
48
+ "import/no-useless-path-segments": "off",
49
+ "import/order": "off",
50
+
51
+ "no-else-return": "off",
52
+ "no-restricted-syntax": "off",
53
+ "no-underscore-dangle": "off",
54
+
55
+ "jsx-a11y/alt-text": "off",
56
+ "jsx-a11y/anchor-is-valid": "off",
57
+ "jsx-a11y/click-events-have-key-events": "off",
58
+ "jsx-a11y/label-has-associated-control": "off",
59
+ "jsx-a11y/no-static-element-interactions": "off",
60
+
61
+ "react/jsx-fragments": "off",
62
+ "react/jsx-no-bind": "off",
63
+ "react/self-closing-comp": "off",
64
+
65
+ "sonarjs/prefer-immediate-return": "off",
66
+
67
+ "@typescript-eslint/dot-notation": "off", // prefer warn but needs different parserOptions
68
+ "@typescript-eslint/naming-convention": "off", // prefer warn but needs different parserOptions
69
+ "@typescript-eslint/ban-types": "off", // also, see override below
70
+
71
+ //
72
+ // Initial release: set to error
73
+ "@typescript-eslint/no-inferrable-types": "error",
74
+ "eqeqeq": "error",
75
+ "no-alert": "error",
76
+ "no-console": "error",
77
+ "no-fallthrough": "error",
78
+ "no-undef": "error",
79
+ "no-unused-vars": "error",
80
+ "no-var": "error",
81
+ "prefer-const": "error",
82
+ "yoda": "error",
83
+
84
+ "import/no-mutable-exports": "error",
85
+ "sonarjs/max-switch-cases": "error",
86
+ "sonarjs/no-collapsible-if": "error",
87
+ "sonarjs/no-all-duplicated-branches": "error",
88
+ "sonarjs/no-duplicated-branches": "error",
89
+ "sonarjs/no-gratuitous-expressions": "error",
90
+ "sonarjs/no-ignored-return": "error",
91
+ "sonarjs/no-small-switch": "error",
92
+ "sonarjs/prefer-object-literal": "error",
93
+ "sonarjs/prefer-single-boolean-return": "error",
94
+ "@typescript-eslint/no-shadow": "error",
95
+ "react/default-props-match-prop-types": "error",
96
+ "react/no-unescaped-entities": "error",
97
+ "react/no-unused-prop-types": "error",
98
+ "react/static-property-placement": "error",
99
+ "array-callback-return": "error",
100
+ "camelcase": "error",
101
+ "default-case": "error",
102
+ "func-names": "error",
103
+ "no-case-declarations": "error",
104
+ "no-lonely-if": "error",
105
+ "no-nested-ternary": "error",
106
+ "no-plusplus": "error",
107
+ "no-restricted-globals": "error",
108
+ "no-restricted-properties": "error",
109
+ "no-shadow": "error",
110
+ "radix": "error",
111
+ "spaced-comment": "error",
112
+
113
+ "import/newline-after-import": "error",
114
+ "sonarjs/no-nested-switch": "error",
115
+ "@typescript-eslint/no-array-constructor": "error",
116
+ "@typescript-eslint/no-empty-function": "error",
117
+ "@typescript-eslint/no-unused-vars": "error",
118
+ "@typescript-eslint/no-useless-constructor": "error",
119
+ "react/button-has-type": "error",
120
+ "react/jsx-curly-brace-presence": "error",
121
+ "react/jsx-boolean-value": "error",
122
+ "react/no-array-index-key": "error",
123
+ "class-methods-use-this": "error",
124
+ "guard-for-in": "error",
125
+ "no-unneeded-ternary": "error",
126
+ "no-unused-expressions": "error",
127
+ "operator-assignment": "error",
128
+ "prefer-template": "error",
129
+ "vars-on-top": "error",
130
+
131
+ "no-use-before-define": "off", // doc for @typescript-eslint/no-use-before-define says to turn off the base implementation
132
+ "@typescript-eslint/no-use-before-define": "error"
133
+ },
134
+ "overrides": [
135
+ {
136
+ "files": "*.@(ts|tsx)",
137
+ "rules": {
138
+ "@typescript-eslint/method-signature-style": ["error", "property"],
139
+ // "@typescript-eslint/ban-types": [
140
+ // "warn",
141
+ // {
142
+ // "types": {
143
+ // "Omit": "Please use the 'OmitStrict' type from 'src/types/' instead.",
144
+ // "object": false,
145
+ // "Function": false
146
+ // },
147
+ // "extendDefaults": true
148
+ // }
149
+ // ],
150
+
151
+ "quotes": "off",
152
+ "@typescript-eslint/quotes": "off"
153
+ // [
154
+ // "error",
155
+ // "single",
156
+ // {
157
+ // "avoidEscape": true,
158
+ // "allowTemplateLiterals": false
159
+ // }
160
+ // ]
161
+ }
162
+ },
163
+ {
164
+ "files": "*.@(jsx|tsx|mdx)",
165
+ "rules": {
166
+ "react/react-in-jsx-scope": "off",
167
+ // Set up configuration for future sweep
168
+ "react-hooks/exhaustive-deps": [
169
+ "off",
170
+ {
171
+ "additionalHooks": "useAfterInitialEffect"
172
+ }
173
+ ]
174
+ }
175
+ },
176
+ {
177
+ "files": "*.@(js|jsx|ts|tsx|mdx)",
178
+ "rules": {}
179
+ },
180
+ {
181
+ "files": ".storybook/*.js",
182
+ "extends": ["@pega/eslint-config/script"]
183
+ },
184
+ {
185
+ "files": "*/**/mocks/**.@(mocks|styles).@(tsx|ts)",
186
+ "rules": {
187
+ "import/prefer-default-export": ["off"]
188
+ }
189
+ }
190
+ ]
10
191
  }
@@ -4,6 +4,6 @@
4
4
  "esbenp.prettier-vscode",
5
5
  "stylelint.vscode-stylelint",
6
6
  "streetsidesoftware.code-spell-checker",
7
- "jpoissonnier.vscode-styled-components"
7
+ "styled-components.vscode-styled-components"
8
8
  ]
9
9
  }