@pega/custom-dx-components 0.0.1 → 0.23.2

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 (234) 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 +125 -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 +146 -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 +196 -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 +257 -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 +279 -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 +292 -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 +94 -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 +348 -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 +115 -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 +15 -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 +112 -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 +112 -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 +112 -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 +124 -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 +238 -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 +186 -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 +36 -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 +43 -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 +46 -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 +28 -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 +33 -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 +24 -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 +60 -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/{init/template/src/components/Organization_Library_VideoPlayer/styles.js → create/templates/Constellation/Widget/PAGE/styles.js.mustache} +3 -1
  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 +67 -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/{init/template/src/components/Organization_Library_MediaURL/MediaURL.styles.ts → create/templates/Constellation/Widget/PAGE-CASE/styles.js.mustache} +3 -1
  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 +23 -0
  190. package/src/tasks/generate-ai/aiPromptDavinci.txt.mustache +14 -0
  191. package/src/tasks/generate-ai/helper.js +357 -0
  192. package/src/tasks/generate-ai/index.js +34 -0
  193. package/src/tasks/index.js +7 -0
  194. package/src/tasks/init/index.js +9 -3
  195. package/src/tasks/init/template/.eslintignore +8 -0
  196. package/src/tasks/init/template/.eslintrc.json +186 -5
  197. package/src/tasks/init/template/.vscode/extensions.json +1 -1
  198. package/src/tasks/init/template/README.md +80 -61
  199. package/src/tasks/init/template/keys/DX-ComponentDev.zip +0 -0
  200. package/src/tasks/init/template/keys/dxcb.crt +32 -0
  201. package/src/tasks/init/template/keys/dxcb.key +51 -0
  202. package/src/tasks/init/template/package.json.mustache +44 -21
  203. package/src/tasks/init/template/src/components/_components.md +1 -0
  204. package/src/tasks/init/template/tasks.config.json +19 -5
  205. package/src/tasks/init/template/templateNPMRC.txt +8 -0
  206. package/src/tasks/linter/index.js +46 -0
  207. package/src/tasks/list/helper.js +19 -6
  208. package/src/tasks/list/index.js +4 -0
  209. package/src/tasks/publish/helper.js +13 -4
  210. package/src/tasks/publish/index.js +14 -1
  211. package/src/tasks/publish-all/helper.js +154 -0
  212. package/src/tasks/publish-all/index.js +95 -0
  213. package/src/tasks/rename/index.js +314 -0
  214. package/src/tasks/validator/index.js +291 -18
  215. package/src/util.js +372 -6
  216. package/src/tasks/create/template/demo.stories.jsx.mustache +0 -44
  217. package/src/tasks/init/template/src/components/MBTAList/MBTAList.stories.tsx +0 -10
  218. package/src/tasks/init/template/src/components/MBTAList/MBTAList.tsx +0 -122
  219. package/src/tasks/init/template/src/components/MBTAList/icons/accessible.icon.tsx +0 -14
  220. package/src/tasks/init/template/src/components/MBTAList/icons/bus.icon.tsx +0 -13
  221. package/src/tasks/init/template/src/components/MBTAList/icons/mbta.icon.tsx +0 -10
  222. package/src/tasks/init/template/src/components/MBTAList/icons/subway.icon.tsx +0 -14
  223. package/src/tasks/init/template/src/components/MBTAList/index.ts +0 -2
  224. package/src/tasks/init/template/src/components/Organization_Library_MediaURL/MediaURL.stories.tsx +0 -19
  225. package/src/tasks/init/template/src/components/Organization_Library_MediaURL/MediaURL.types.ts +0 -10
  226. package/src/tasks/init/template/src/components/Organization_Library_MediaURL/MediaURLDisplay.tsx +0 -25
  227. package/src/tasks/init/template/src/components/Organization_Library_MediaURL/MediaURLInput.tsx +0 -24
  228. package/src/tasks/init/template/src/components/Organization_Library_MediaURL/config.json +0 -13
  229. package/src/tasks/init/template/src/components/Organization_Library_MediaURL/index.ts +0 -2
  230. package/src/tasks/init/template/src/components/Organization_Library_VideoPlayer/config.json +0 -44
  231. package/src/tasks/init/template/src/components/Organization_Library_VideoPlayer/demo.stories.jsx +0 -40
  232. package/src/tasks/init/template/src/components/Organization_Library_VideoPlayer/index.jsx +0 -42
  233. /package/src/tasks/{publish/bundle → bundle}/builder/modules.js +0 -0
  234. /package/src/tasks/{publish/bundle → bundle}/builder/paths.js +0 -0
@@ -0,0 +1,357 @@
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 {
10
+ AI_PROMPT_FILENAME,
11
+ AI_DAVINCI_PROMPT_FILENAME
12
+ } from '../../constants.js';
13
+
14
+ import _ from 'lodash';
15
+
16
+
17
+ import {
18
+ getComponents,
19
+ getComponentsOfType,
20
+ getPegaConfig,
21
+ getAIPromptData,
22
+ getDirectoryFiles,
23
+ getAIComponent,
24
+ getInfinityAIComponent,
25
+ getComponentDirectoryPath,
26
+ compileMustacheTemplate,
27
+ getComponentConfigJson,
28
+ getComponentConfigType
29
+ } from '../../util.js';
30
+ import { str } from 'ajv';
31
+
32
+
33
+ export const getSelectAComponent = async() => {
34
+ //let localComponents = await getComponents();
35
+ const localComponents = await getComponentsOfType("Widget,Template");
36
+
37
+ let answers;
38
+
39
+ if (localComponents.length > 0) {
40
+ answers = await inquirer.prompt([
41
+ {
42
+ name: 'componentKey',
43
+ type: 'rawlist',
44
+ message: 'Select component to generateAI',
45
+ choices: localComponents
46
+ }]);
47
+ }
48
+
49
+ return answers;
50
+ }
51
+
52
+ export const determineAndGenerateAI = async (enteredKey) => {
53
+
54
+ if (!enteredKey) {
55
+ let answer = await getSelectAComponent();
56
+ if (answer) {
57
+ enteredKey = answer.componentKey;
58
+ }
59
+ else {
60
+ console.log(chalk.bold.redBright(`No custom components to generate AI. Please create a Widget or Template component first.`));
61
+ process.exit(1);
62
+ }
63
+
64
+ }
65
+
66
+ const targetDirectory = await getComponentDirectoryPath(enteredKey);
67
+ const configType = await getComponentConfigType(targetDirectory);
68
+
69
+ switch (configType.toLowerCase()) {
70
+ case "widget":
71
+ case "template":
72
+ await getWidgetTemplateAndGenerateAI(enteredKey);
73
+ break;
74
+ case "field":
75
+ await getFieldAndGenerateAI(enteredKey);
76
+ break;
77
+ }
78
+
79
+
80
+ }
81
+
82
+ export const getWidgetTemplateAndGenerateAI = async (enteredKey) => {
83
+ const localComponents = await getComponents();
84
+
85
+ let answers;
86
+
87
+ if (localComponents.length > 0) {
88
+
89
+ answers = await inquirer.prompt([
90
+
91
+ {
92
+ name: 'additionalPromptInfo',
93
+ message: 'Enter what you would like this component to do? ',
94
+ }
95
+
96
+
97
+ ]);
98
+
99
+ console.log("Generating component...");
100
+
101
+ await generateInfinityAIComponent(enteredKey, answers.additionalPromptInfo);
102
+
103
+ } else {
104
+ console.log(chalk.bold.redBright(`No custom components in ${sourceOfComponents}`));
105
+ }
106
+ };
107
+
108
+
109
+ export const getFieldAndGenerateAI = async (enteredKey) => {
110
+ const localComponents = await getComponents();
111
+
112
+ let answers;
113
+
114
+ if (localComponents.length > 0) {
115
+
116
+ answers = await inquirer.prompt([
117
+ {
118
+ name: 'designSystemComponents',
119
+ message: 'Enter comma delimited string of Design system components (ie. Input, TextArea, etc.)'
120
+ },
121
+ {
122
+ name: 'additionalPromptInfo',
123
+ message: 'Enter any additional generation information',
124
+ }
125
+
126
+ ]);
127
+
128
+
129
+ console.log("Generating component...");
130
+
131
+ await generateAIComponent(enteredKey || answers.componentKey, answers.designSystemComponents, answers.additionalPropmtInfo);
132
+
133
+ } else {
134
+ console.log(chalk.bold.redBright(`No custom components in ${sourceOfComponents}`));
135
+ }
136
+ };
137
+
138
+ export const renameFile = (oldFileName, newFileName) => {
139
+ try {
140
+ fs.renameSync(oldFileName, newFileName);
141
+
142
+ } catch(err) {
143
+ console.log(err)
144
+ }
145
+ }
146
+
147
+ export const generateAIComponent = async (componentKey, designSystemComponents, additionalPromptInfo) => {
148
+
149
+ const fileName = "." + path.sep + AI_PROMPT_FILENAME;
150
+
151
+ // get config file
152
+ //
153
+ const targetDirectory = await getComponentDirectoryPath(componentKey);
154
+ let configFileData = await getComponentConfigJson(targetDirectory);
155
+
156
+ // let data = JSON.parse(configFileData);
157
+ // data.properties = [];
158
+ // configFileData = JSON.stringify(data);
159
+
160
+
161
+ let strPrompt = compileMustacheTemplate(fileURLToPath(new URL(fileName, import.meta.url)), {
162
+ COMPONENT_CONFIG: configFileData,
163
+ COMPONENT_DSC: designSystemComponents,
164
+ COMPONENT_ADDITIONAL: additionalPromptInfo
165
+ });
166
+
167
+ strPrompt = strPrompt.replaceAll("$", "//$");
168
+
169
+ strPrompt = _.unescape(strPrompt);
170
+
171
+
172
+ //let strPrompt = await getAIPromptData(fileURLToPath(new URL(fileName, import.meta.url)));
173
+ //let aiComponent = await getAIComponent(strPrompt);
174
+ let aiComponent = await getInfinityAIComponent(strPrompt);
175
+
176
+ if (aiComponent) {
177
+ //console.log(aiData);
178
+ const indexFile = join(targetDirectory, "index.jsx");
179
+
180
+ // remove enclosed ``` and "Answer:"
181
+ aiComponent = aiComponent.substring(aiComponent.indexOf("import"));
182
+ aiComponent = aiComponent.substring(0, aiComponent.lastIndexOf("```"));
183
+
184
+
185
+
186
+ // get directory list
187
+ // check for index-template.jsx.old
188
+ // if not there, copy index.jsx to index-template.jsx.old and then copy aiComponent to index.jsx
189
+ // if there, check if have index-genai-1.jsx.old, if not, then copy index.jsx, to index-genai-1.jsx.old
190
+ // otherwise, find all index-genai-X and find biggest number and add one, and save index.jsx to that and then create index.jsx
191
+
192
+ const dirList = await getDirectoryFiles(targetDirectory);
193
+
194
+ if (dirList.includes("index-template.jsx.old")) {
195
+
196
+ const genList = dirList.map( (el) => {
197
+ if (el.indexOf("index-genai") >= 0) {
198
+ return el;
199
+ }
200
+ else {
201
+ return "";
202
+ }
203
+ });
204
+
205
+ if (genList.length > 0) {
206
+ let lastIndex = 0;
207
+
208
+ genList.forEach((el) => {
209
+ const theName = el.split(".")[0];
210
+ const theIndex = theName.split("-")[2];
211
+
212
+ if (parseInt(theIndex) > lastIndex) {
213
+ lastIndex = parseInt(theIndex);
214
+ }
215
+ });
216
+
217
+ lastIndex++;
218
+
219
+ const oldGenFileName = join(targetDirectory, "index.jsx");
220
+ const newGenFileName = join(targetDirectory, "index-genai-" + lastIndex + ".jsx.old");
221
+
222
+ renameFile(oldGenFileName, newGenFileName);
223
+ }
224
+ else {
225
+ const oldGenFileName = join(targetDirectory, "index.jsx");
226
+ const newGenFileName = join(targetDirectory, "index-genai-1.jsx.old");
227
+
228
+ renameFile(oldGenFileName, newGenFileName);
229
+ }
230
+ }
231
+ else {
232
+ // so only index.jsx, so rename index.jsx to index-template.jsx.old
233
+ // and create a new index.jsx
234
+ const oldFileName = join(targetDirectory, "index.jsx");
235
+ const newFileName = join(targetDirectory, "index-template.jsx.old");
236
+
237
+ renameFile(oldFileName, newFileName);
238
+ }
239
+
240
+ // creae new index.jsx
241
+ fs.writeFileSync(indexFile, aiComponent, err => {
242
+ if (err) {
243
+ Promise.reject(`${chalk.bold.red(err)}`);
244
+ }
245
+ });
246
+
247
+ console.log(`Updated file ${chalk.green('index.jsx')} in directory ${chalk.green(componentKey)} with AI generated code.`);
248
+ }
249
+
250
+
251
+
252
+
253
+ }
254
+
255
+ export const generateInfinityAIComponent = async (componentKey, additionalPromptInfo) => {
256
+
257
+ const fileName = "." + path.sep + AI_DAVINCI_PROMPT_FILENAME;
258
+
259
+ // get config file
260
+ //
261
+ const targetDirectory = await getComponentDirectoryPath(componentKey);
262
+ let configFileData = await getComponentConfigJson(targetDirectory);
263
+
264
+ // need to escape $
265
+ configFileData = configFileData.replaceAll("$", "\\$");
266
+
267
+ let strPrompt = compileMustacheTemplate(fileURLToPath(new URL(fileName, import.meta.url)), {
268
+ COMPONENT_CONFIG: configFileData,
269
+ COMPONENT_ADDITIONAL: additionalPromptInfo
270
+ });
271
+
272
+ strPrompt = _.unescape(strPrompt);
273
+
274
+ //let strPrompt = await getAIPromptData(fileURLToPath(new URL(fileName, import.meta.url)));
275
+ let aiComponent = await getInfinityAIComponent(strPrompt);
276
+
277
+ //console.log(aiData);
278
+
279
+ if (aiComponent) {
280
+ const indexFile = join(targetDirectory, "index-genai.jsx.tmp");
281
+
282
+ // remove enclosed ``` and "Answer:"
283
+ if (aiComponent.indexOf("```") >= 0) {
284
+ aiComponent = aiComponent.substring(aiComponent.indexOf("```"));
285
+ aiComponent = aiComponent.substring(0, aiComponent.lastIndexOf("```"));
286
+ }
287
+ else if (aiComponent.indexOf("'") == 0) {
288
+ aiComponent = aiComponent.substring(aiComponent.indexOf("'"));
289
+ aiComponent = aiComponent.substring(0, aiComponent.lastIndexOf("'"));
290
+ }
291
+
292
+
293
+
294
+
295
+ // get directory list
296
+ // check for index-template.jsx.old
297
+ // if not there, copy index.jsx to index-template.jsx.old and then copy aiComponent to index.jsx
298
+ // if there, check if have index-genai-1.jsx.old, if not, then copy index.jsx, to index-genai-1.jsx.old
299
+ // otherwise, find all index-genai-X and find biggest number and add one, and save index.jsx to that and then create index.jsx
300
+
301
+ const dirList = await getDirectoryFiles(targetDirectory);
302
+
303
+
304
+
305
+ const genList = dirList.map( (el) => {
306
+ if (el.indexOf("index-genai") >= 0) {
307
+ return el;
308
+ }
309
+ else {
310
+ return "";
311
+ }
312
+ });
313
+
314
+ if (genList.length > 0) {
315
+ let lastIndex = -1;
316
+
317
+ genList.forEach((el) => {
318
+ const theName = el.split(".")[0];
319
+
320
+ if (theName.indexOf("index-genai") >=0) {
321
+ if (lastIndex === -1) {
322
+ lastIndex = 0;
323
+ }
324
+ const theIndex = theName.split("-")[2];
325
+
326
+ if (parseInt(theIndex) > lastIndex) {
327
+ lastIndex = parseInt(theIndex);
328
+ }
329
+ }
330
+
331
+ });
332
+
333
+ lastIndex++;
334
+
335
+ if (lastIndex > 0) {
336
+ const oldGenFileName = join(targetDirectory, "index-genai.jsx.tmp");
337
+ const newGenFileName = join(targetDirectory, "index-genai-" + lastIndex + ".jsx.tmp");
338
+
339
+ renameFile(oldGenFileName, newGenFileName);
340
+ }
341
+
342
+ }
343
+
344
+
345
+ // creae new index.jsx
346
+ fs.writeFileSync(indexFile, aiComponent, err => {
347
+ if (err) {
348
+ Promise.reject(`${chalk.bold.red(err)}`);
349
+ }
350
+ });
351
+
352
+ console.log(`Updated file ${chalk.green('index-genai.jsx.tmp')} in directory ${chalk.green(componentKey)} with AI generated code.`);
353
+ }
354
+
355
+
356
+
357
+ }
@@ -0,0 +1,34 @@
1
+ import inquirer from 'inquirer';
2
+ import ora from 'ora';
3
+ import chalk from 'chalk';
4
+
5
+ import {
6
+ determineAndGenerateAI
7
+ } from './helper.js';
8
+
9
+ import { showVersion } from '../../util.js';
10
+
11
+
12
+
13
+
14
+ export default async options => {
15
+ showVersion();
16
+
17
+ if (options.params.length > 3 && options.params[3] != "") {
18
+ const sourceOfComponents = options.params[3];
19
+
20
+ //await generateAIComponent(sourceOfComponents);
21
+ //await getComponentAndGenerateAI(sourceOfComponents);
22
+ await determineAndGenerateAI(sourceOfComponents);
23
+ }
24
+ else {
25
+
26
+ //await getComponentAndGenerateAI();
27
+ await determineAndGenerateAI();
28
+ }
29
+
30
+
31
+
32
+
33
+
34
+ };
@@ -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
  }