@dxtmisha/scripts 0.11.8 → 1.0.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.
Files changed (335) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/ai-resources/componentMaterials.md +19 -0
  3. package/ai-resources/componentPrompt.md +381 -0
  4. package/ai-resources/componentWiki.md +13 -0
  5. package/bin/arguments.ts +168 -0
  6. package/bin/build-packages.ts +12 -2
  7. package/bin/build-publish-packages.ts +12 -2
  8. package/bin/design-component.ts +7 -1
  9. package/bin/design-constructor.ts +22 -3
  10. package/bin/design-figma.ts +26 -4
  11. package/bin/design-flags.ts +14 -2
  12. package/bin/design-library.ts +7 -1
  13. package/bin/design-package.ts +29 -5
  14. package/bin/design-prompt.ts +22 -3
  15. package/bin/design-screenshot.ts +12 -2
  16. package/bin/design-types-save.ts +32 -5
  17. package/bin/design-types.ts +32 -6
  18. package/bin/design-ui.ts +21 -3
  19. package/bin/design-wiki-storm.ts +11 -3
  20. package/dist/AiZAi-x3CInynJ.js +232 -0
  21. package/dist/PropertiesConfig-ChizwW5y.js +250 -0
  22. package/{src/config.ts → dist/config.d.ts} +179 -158
  23. package/dist/config.js +20 -0
  24. package/dist/figmaApiTypes-CArSsNW8.js +6 -0
  25. package/dist/library-ai.d.ts +482 -0
  26. package/dist/library-ai.js +2 -0
  27. package/dist/library-figma.d.ts +462 -0
  28. package/dist/library-figma.js +75 -0
  29. package/dist/library-ui.d.ts +586 -0
  30. package/dist/library-ui.js +3760 -0
  31. package/dist/library.d.ts +4677 -0
  32. package/dist/library.js +1436 -0
  33. package/dist/propertyTypes-DflziKuR.js +236 -0
  34. package/package.json +69 -20
  35. package/bin/ai-doc.ts +0 -7
  36. package/bin/build-functional.ts +0 -5
  37. package/bin/design-component-wiki.ts +0 -11
  38. package/src/classes/Ai/AiAbstract.ts +0 -242
  39. package/src/classes/Ai/AiClaude.ts +0 -26
  40. package/src/classes/Ai/AiClaudeAgent.ts +0 -16
  41. package/src/classes/Ai/AiClaudeAgentLite.ts +0 -86
  42. package/src/classes/Ai/AiClaudeCli.ts +0 -24
  43. package/src/classes/Ai/AiClaudeCliLite.ts +0 -108
  44. package/src/classes/Ai/AiClaudeLite.ts +0 -112
  45. package/src/classes/Ai/AiDoc.ts +0 -81
  46. package/src/classes/Ai/AiDocItem.ts +0 -27
  47. package/src/classes/Ai/AiDocItemAbstract.ts +0 -209
  48. package/src/classes/Ai/AiDocItemClasses.ts +0 -27
  49. package/src/classes/Ai/AiDocItemComposables.ts +0 -20
  50. package/src/classes/Ai/AiDocType.ts +0 -45
  51. package/src/classes/Ai/AiGoogle.ts +0 -26
  52. package/src/classes/Ai/AiGoogleCli.ts +0 -24
  53. package/src/classes/Ai/AiGoogleCliLite.ts +0 -108
  54. package/src/classes/Ai/AiGoogleLite.ts +0 -78
  55. package/src/classes/Ai/AiOpenAi.ts +0 -26
  56. package/src/classes/Ai/AiOpenAiLite.ts +0 -107
  57. package/src/classes/Ai/AiZAi.ts +0 -17
  58. package/src/classes/Ai/AiZAiLite.ts +0 -77
  59. package/src/classes/Ai/ApiTmp.ts +0 -43
  60. package/src/classes/BrowserItem.ts +0 -408
  61. package/src/classes/Build/BuildFunctional.ts +0 -54
  62. package/src/classes/Build/BuildPackages.ts +0 -137
  63. package/src/classes/Build/BuildPublishPackages.ts +0 -105
  64. package/src/classes/BuildItem.ts +0 -187
  65. package/src/classes/Component/ComponentCreator.ts +0 -45
  66. package/src/classes/Component/ComponentItem.ts +0 -161
  67. package/src/classes/Component/ComponentWiki.ts +0 -258
  68. package/src/classes/Component/ComponentWikiFile.ts +0 -138
  69. package/src/classes/Design/DesignCommand.ts +0 -243
  70. package/src/classes/Design/DesignComponent.ts +0 -824
  71. package/src/classes/Design/DesignConstructor.ts +0 -222
  72. package/src/classes/Design/DesignConstructors.ts +0 -101
  73. package/src/classes/Design/DesignFigma.ts +0 -61
  74. package/src/classes/Design/DesignFlags.ts +0 -215
  75. package/src/classes/Design/DesignReplace.ts +0 -672
  76. package/src/classes/Design/DesignScreenshot.ts +0 -140
  77. package/src/classes/Design/DesignStructure.ts +0 -201
  78. package/src/classes/Design/DesignStructureClasses.ts +0 -105
  79. package/src/classes/Design/DesignStructureItemAbstract.ts +0 -52
  80. package/src/classes/Design/DesignStructureRead.ts +0 -349
  81. package/src/classes/Design/DesignStructureStyles.ts +0 -45
  82. package/src/classes/Design/DesignTypes.ts +0 -94
  83. package/src/classes/Design/DesignTypesAi.ts +0 -135
  84. package/src/classes/Design/DesignTypesDescription.ts +0 -121
  85. package/src/classes/Design/DesignTypesMake.ts +0 -460
  86. package/src/classes/Design/DesignTypesMcp.ts +0 -90
  87. package/src/classes/Design/DesignTypesPrompts.ts +0 -332
  88. package/src/classes/Design/DesignTypescript.ts +0 -244
  89. package/src/classes/Design/DesignUi.ts +0 -143
  90. package/src/classes/Design/DesignWiki.ts +0 -52
  91. package/src/classes/Design/DesignWikiStorm.ts +0 -95
  92. package/src/classes/Design/DesignWikiStormItem.ts +0 -316
  93. package/src/classes/FigmaApi.ts +0 -190
  94. package/src/classes/Git/GitRead.ts +0 -261
  95. package/src/classes/Library/LibraryAiMcpItem.ts +0 -67
  96. package/src/classes/Library/LibraryAiPrompt.ts +0 -268
  97. package/src/classes/Library/LibraryAiPromptItem.ts +0 -331
  98. package/src/classes/Library/LibraryAiWiki.ts +0 -127
  99. package/src/classes/Library/LibraryAiWikiItem.ts +0 -79
  100. package/src/classes/Library/LibraryExport.ts +0 -167
  101. package/src/classes/Library/LibraryFlags.ts +0 -62
  102. package/src/classes/Library/LibraryItems.ts +0 -138
  103. package/src/classes/Library/LibraryList.ts +0 -189
  104. package/src/classes/Library/LibraryMedia.ts +0 -139
  105. package/src/classes/Library/LibraryPlugin.ts +0 -73
  106. package/src/classes/Library/LibraryTypes.ts +0 -130
  107. package/src/classes/Package/PackageFile.ts +0 -154
  108. package/src/classes/Package/PackageInit.ts +0 -54
  109. package/src/classes/Package/PackageItem.ts +0 -329
  110. package/src/classes/Properties/Properties.ts +0 -175
  111. package/src/classes/Properties/PropertiesCache.ts +0 -248
  112. package/src/classes/Properties/PropertiesConfig.ts +0 -213
  113. package/src/classes/Properties/PropertiesConvector.ts +0 -52
  114. package/src/classes/Properties/PropertiesFile.ts +0 -522
  115. package/src/classes/Properties/PropertiesImport.ts +0 -182
  116. package/src/classes/Properties/PropertiesItems.ts +0 -605
  117. package/src/classes/Properties/PropertiesKeys.ts +0 -121
  118. package/src/classes/Properties/PropertiesMain.ts +0 -138
  119. package/src/classes/Properties/PropertiesPalette.ts +0 -149
  120. package/src/classes/Properties/PropertiesPath.ts +0 -193
  121. package/src/classes/Properties/PropertiesScss.ts +0 -261
  122. package/src/classes/Properties/PropertiesSeparator.ts +0 -118
  123. package/src/classes/Properties/PropertiesSettings.ts +0 -104
  124. package/src/classes/Properties/PropertiesStandard.ts +0 -180
  125. package/src/classes/Properties/PropertiesTool.ts +0 -80
  126. package/src/classes/Properties/PropertiesTypes.ts +0 -147
  127. package/src/classes/Properties/PropertiesValues.ts +0 -75
  128. package/src/classes/Properties/PropertiesWrap.ts +0 -187
  129. package/src/classes/Properties/convector/convectorColor.ts +0 -27
  130. package/src/classes/Properties/convector/convectorFontFamilies.ts +0 -18
  131. package/src/classes/Properties/convector/convectorShadow.ts +0 -61
  132. package/src/classes/Properties/convector/convectorTypography.ts +0 -19
  133. package/src/classes/Properties/to/PropertiesToAbstract.ts +0 -51
  134. package/src/classes/Properties/to/PropertiesToAnimate.ts +0 -59
  135. package/src/classes/Properties/to/PropertiesToClass.ts +0 -49
  136. package/src/classes/Properties/to/PropertiesToClone.ts +0 -114
  137. package/src/classes/Properties/to/PropertiesToComponent.ts +0 -52
  138. package/src/classes/Properties/to/PropertiesToDrag.ts +0 -231
  139. package/src/classes/Properties/to/PropertiesToDuplicate.ts +0 -165
  140. package/src/classes/Properties/to/PropertiesToFull.ts +0 -36
  141. package/src/classes/Properties/to/PropertiesToLink.ts +0 -259
  142. package/src/classes/Properties/to/PropertiesToMedia.ts +0 -187
  143. package/src/classes/Properties/to/PropertiesToMulti.ts +0 -101
  144. package/src/classes/Properties/to/PropertiesToNone.ts +0 -46
  145. package/src/classes/Properties/to/PropertiesToPalette.ts +0 -241
  146. package/src/classes/Properties/to/PropertiesToProperty.ts +0 -31
  147. package/src/classes/Properties/to/PropertiesToRemove.ts +0 -33
  148. package/src/classes/Properties/to/PropertiesToReplace.ts +0 -77
  149. package/src/classes/Properties/to/PropertiesToRoot.ts +0 -40
  150. package/src/classes/Properties/to/PropertiesToSimilar.ts +0 -128
  151. package/src/classes/Properties/to/PropertiesToSort.ts +0 -146
  152. package/src/classes/Properties/to/PropertiesToState.ts +0 -65
  153. package/src/classes/Properties/to/PropertiesToStyle.ts +0 -52
  154. package/src/classes/Properties/to/PropertiesToSub.ts +0 -95
  155. package/src/classes/Properties/to/PropertiesToSubclass.ts +0 -76
  156. package/src/classes/Properties/to/PropertiesToVar.ts +0 -194
  157. package/src/classes/Properties/to/PropertiesToVariable.ts +0 -176
  158. package/src/classes/Styles/Styles.ts +0 -247
  159. package/src/classes/Styles/StylesClasses.ts +0 -86
  160. package/src/classes/Styles/StylesProperties.ts +0 -197
  161. package/src/classes/Styles/StylesRoot.ts +0 -103
  162. package/src/classes/Styles/StylesTool.ts +0 -112
  163. package/src/classes/Styles/to/StylesToAbstract.ts +0 -93
  164. package/src/classes/Styles/to/StylesToAnimate.ts +0 -19
  165. package/src/classes/Styles/to/StylesToClass.ts +0 -25
  166. package/src/classes/Styles/to/StylesToClassFull.ts +0 -19
  167. package/src/classes/Styles/to/StylesToContainer.ts +0 -24
  168. package/src/classes/Styles/to/StylesToMedia.ts +0 -19
  169. package/src/classes/Styles/to/StylesToProperty.ts +0 -123
  170. package/src/classes/Styles/to/StylesToRoot.ts +0 -14
  171. package/src/classes/Styles/to/StylesToSelector.ts +0 -71
  172. package/src/classes/Styles/to/StylesToVar.ts +0 -105
  173. package/src/classes/Styles/to/StylesToVirtual.ts +0 -33
  174. package/src/composables/useAi.ts +0 -38
  175. package/src/demo/ai.ts +0 -10
  176. package/src/functions/getComponentPaths.ts +0 -13
  177. package/src/functions/getConfigAi.ts +0 -14
  178. package/src/functions/getConstructorProperties.ts +0 -54
  179. package/src/functions/getDirname.ts +0 -17
  180. package/src/functions/getNameDirByPaths.ts +0 -16
  181. package/src/functions/getPackageJson.ts +0 -19
  182. package/src/functions/hasNativeDirname.ts +0 -8
  183. package/src/functions/run.ts +0 -47
  184. package/src/functions/toPathStandardSep.ts +0 -14
  185. package/src/library-ai.ts +0 -10
  186. package/src/library.ts +0 -73
  187. package/src/media/ai/ai-doc-types.ts +0 -21
  188. package/src/media/properties/css.ts +0 -634
  189. package/src/media/properties/cssSelector.ts +0 -74
  190. package/src/media/properties/cssVirtual.ts +0 -12
  191. package/src/media/properties/listSort.ts +0 -113
  192. package/src/media/properties/style.ts +0 -81
  193. package/src/media/templates/component/DesignComponent.mdx +0 -30
  194. package/src/media/templates/component/DesignComponent.stories.ts +0 -34
  195. package/src/media/templates/component/DesignComponent.vue +0 -54
  196. package/src/media/templates/component/DesignComponentAiWiki.vue +0 -25
  197. package/src/media/templates/component/index.ts +0 -13
  198. package/src/media/templates/component/props.ts +0 -27
  199. package/src/media/templates/component/styleToken.scss +0 -17
  200. package/src/media/templates/component/wiki.ts +0 -13
  201. package/src/media/templates/component/wikiData.ts +0 -28
  202. package/src/media/templates/componentDoc/ComponentDoc.vue +0 -26
  203. package/src/media/templates/componentDoc/index.ts +0 -12
  204. package/src/media/templates/componentDoc/materials/README.md +0 -8
  205. package/src/media/templates/componentDoc/materials/prompt.md +0 -38
  206. package/src/media/templates/componentDoc/subcomponents/_.gitignore.txt +0 -0
  207. package/src/media/templates/componentDoc/types.ts +0 -15
  208. package/src/media/templates/componentDoc/wiki/ComponentDoc.mdx +0 -13
  209. package/src/media/templates/componentDoc/wiki/ComponentDoc.stories.ts +0 -24
  210. package/src/media/templates/componentDoc/wiki/prompt.md +0 -41
  211. package/src/media/templates/constructors/Constructors.ts +0 -33
  212. package/src/media/templates/constructors/ConstructorsDesign.tsx +0 -129
  213. package/src/media/templates/constructors/basicTypes.ts +0 -0
  214. package/src/media/templates/constructors/index.ts +0 -5
  215. package/src/media/templates/constructors/props.ts +0 -28
  216. package/src/media/templates/constructors/style.scss +0 -5
  217. package/src/media/templates/constructors/types.ts +0 -47
  218. package/src/media/templates/packages/figma/README.md +0 -1
  219. package/src/media/templates/packages/figma/_.gitignore.txt +0 -29
  220. package/src/media/templates/packages/figma/ai.sample.config.ts +0 -2
  221. package/src/media/templates/packages/figma/design.config.json +0 -3
  222. package/src/media/templates/packages/figma/index.html +0 -12
  223. package/src/media/templates/packages/figma/manifest.json +0 -25
  224. package/src/media/templates/packages/figma/package.json +0 -37
  225. package/src/media/templates/packages/figma/src/App.vue +0 -9
  226. package/src/media/templates/packages/figma/src/classes/_.gitignore.txt +0 -1
  227. package/src/media/templates/packages/figma/src/code.ts +0 -16
  228. package/src/media/templates/packages/figma/src/components/_.gitignore.txt +0 -1
  229. package/src/media/templates/packages/figma/src/composables/_.gitignore.txt +0 -1
  230. package/src/media/templates/packages/figma/src/config.ts +0 -0
  231. package/src/media/templates/packages/figma/src/functions/_.gitignore.txt +0 -1
  232. package/src/media/templates/packages/figma/src/library.ts +0 -0
  233. package/src/media/templates/packages/figma/src/main.ts +0 -4
  234. package/src/media/templates/packages/figma/src/media/_.gitignore.txt +0 -1
  235. package/src/media/templates/packages/figma/src/storybook/_.gitignore.txt +0 -1
  236. package/src/media/templates/packages/figma/src/types/_.gitignore.txt +0 -1
  237. package/src/media/templates/packages/figma/src/vite-env.d.ts +0 -1
  238. package/src/media/templates/packages/figma/tsconfig.app.json +0 -12
  239. package/src/media/templates/packages/figma/tsconfig.json +0 -7
  240. package/src/media/templates/packages/figma/tsconfig.node.json +0 -8
  241. package/src/media/templates/packages/figma/vite.config.ts +0 -7
  242. package/src/media/templates/packages/library/README.md +0 -1
  243. package/src/media/templates/packages/library/_.gitignore.txt +0 -27
  244. package/src/media/templates/packages/library/ai-description.md +0 -15
  245. package/src/media/templates/packages/library/design.config.json +0 -3
  246. package/src/media/templates/packages/library/index.html +0 -12
  247. package/src/media/templates/packages/library/materials/README.md +0 -8
  248. package/src/media/templates/packages/library/materials/prompt.md +0 -45
  249. package/src/media/templates/packages/library/package.json +0 -46
  250. package/src/media/templates/packages/library/src/App.vue +0 -8
  251. package/src/media/templates/packages/library/src/classes/_.gitignore.txt +0 -1
  252. package/src/media/templates/packages/library/src/components/_.gitignore.txt +0 -1
  253. package/src/media/templates/packages/library/src/composables/_.gitignore.txt +0 -1
  254. package/src/media/templates/packages/library/src/functions/_.gitignore.txt +0 -1
  255. package/src/media/templates/packages/library/src/library.ts +0 -0
  256. package/src/media/templates/packages/library/src/main.ts +0 -6
  257. package/src/media/templates/packages/library/src/style.scss +0 -0
  258. package/src/media/templates/packages/library/src/types/_.gitignore.txt +0 -1
  259. package/src/media/templates/packages/library/src/vite-env.d.ts +0 -1
  260. package/src/media/templates/packages/library/tsconfig.app.json +0 -11
  261. package/src/media/templates/packages/library/tsconfig.json +0 -7
  262. package/src/media/templates/packages/library/tsconfig.node.json +0 -7
  263. package/src/media/templates/packages/library/vite.config.ts +0 -14
  264. package/src/media/templates/packages/nitro/README.md +0 -1
  265. package/src/media/templates/packages/nitro/_.gitignore.txt +0 -28
  266. package/src/media/templates/packages/nitro/index.html +0 -2
  267. package/src/media/templates/packages/nitro/package.json +0 -25
  268. package/src/media/templates/packages/nitro/server/plugins/ui-plugin.ts +0 -7
  269. package/src/media/templates/packages/nitro/server/routes/api/hello.ts +0 -13
  270. package/src/media/templates/packages/nitro/src/App.vue +0 -10
  271. package/src/media/templates/packages/nitro/src/assets/_.gitignore.txt +0 -0
  272. package/src/media/templates/packages/nitro/src/components/_.gitignore.txt +0 -0
  273. package/src/media/templates/packages/nitro/src/composables/_.gitignore.txt +0 -0
  274. package/src/media/templates/packages/nitro/src/entry-client.ts +0 -13
  275. package/src/media/templates/packages/nitro/src/entry-server.ts +0 -29
  276. package/src/media/templates/packages/nitro/src/main.ts +0 -14
  277. package/src/media/templates/packages/nitro/src/pages/HomePage.vue +0 -8
  278. package/src/media/templates/packages/nitro/src/router.ts +0 -11
  279. package/src/media/templates/packages/nitro/src/style.scss +0 -0
  280. package/src/media/templates/packages/nitro/src/templates/main.html +0 -21
  281. package/src/media/templates/packages/nitro/src/vite-env.d.ts +0 -11
  282. package/src/media/templates/packages/nitro/tsconfig.app.json +0 -14
  283. package/src/media/templates/packages/nitro/tsconfig.json +0 -7
  284. package/src/media/templates/packages/nitro/tsconfig.node.json +0 -12
  285. package/src/media/templates/packages/nitro/vite.config.ts +0 -17
  286. package/src/media/templates/packages/project/README.md +0 -1
  287. package/src/media/templates/packages/project/_.gitignore.txt +0 -28
  288. package/src/media/templates/packages/project/design.config.json +0 -3
  289. package/src/media/templates/packages/project/index.html +0 -12
  290. package/src/media/templates/packages/project/materials/README.md +0 -8
  291. package/src/media/templates/packages/project/materials/prompt.md +0 -41
  292. package/src/media/templates/packages/project/package.json +0 -13
  293. package/src/media/templates/packages/project/public/_.gitignore.txt +0 -0
  294. package/src/media/templates/packages/project/src/App.vue +0 -12
  295. package/src/media/templates/packages/project/src/assets/_.gitignore.txt +0 -0
  296. package/src/media/templates/packages/project/src/components/_.gitignore.txt +0 -0
  297. package/src/media/templates/packages/project/src/composables/_.gitignore.txt +0 -0
  298. package/src/media/templates/packages/project/src/main.ts +0 -6
  299. package/src/media/templates/packages/project/src/style.scss +0 -0
  300. package/src/media/templates/packages/project/src/vite-env.d.ts +0 -1
  301. package/src/media/templates/packages/project/tsconfig.app.json +0 -11
  302. package/src/media/templates/packages/project/tsconfig.json +0 -7
  303. package/src/media/templates/packages/project/tsconfig.node.json +0 -7
  304. package/src/media/templates/packages/project/vite.config.ts +0 -7
  305. package/src/media/templates/prompts/aiCodeGlobalPrompt.en.md +0 -22
  306. package/src/media/templates/prompts/aiCodeGlobalPrompt.ru.md +0 -21
  307. package/src/media/templates/prompts/aiCodeVuePrompt.en.md +0 -17
  308. package/src/media/templates/prompts/aiCodeVuePrompt.ru.md +0 -17
  309. package/src/media/templates/prompts/aiDocClassPrompt.en.txt +0 -63
  310. package/src/media/templates/prompts/aiDocClassPrompt.ru.txt +0 -63
  311. package/src/media/templates/prompts/aiDocComposablePrompt.en.txt +0 -67
  312. package/src/media/templates/prompts/aiDocComposablePrompt.ru.txt +0 -67
  313. package/src/media/templates/prompts/aiDocFunctionPrompt.en.txt +0 -57
  314. package/src/media/templates/prompts/aiDocFunctionPrompt.ru.txt +0 -57
  315. package/src/media/templates/prompts/componentPrompt.en.txt +0 -182
  316. package/src/media/templates/prompts/componentPrompt.ru.txt +0 -182
  317. package/src/media/templates/prompts/demoClassEn.mdx +0 -111
  318. package/src/media/templates/prompts/demoClassRu.mdx +0 -111
  319. package/src/media/templates/prompts/demoComponentEn.mdx +0 -282
  320. package/src/media/templates/prompts/demoComponentRu.mdx +0 -282
  321. package/src/media/templates/prompts/demoComposableEn.mdx +0 -103
  322. package/src/media/templates/prompts/demoComposableRu.mdx +0 -103
  323. package/src/media/templates/prompts/demoDocEn.mdx +0 -30
  324. package/src/media/templates/prompts/demoDocRu.mdx +0 -30
  325. package/src/media/templates/viteComponentTemplateConfig.ts +0 -14
  326. package/src/types/aiTypes.ts +0 -19
  327. package/src/types/configTypes.ts +0 -69
  328. package/src/types/designTypes.ts +0 -167
  329. package/src/types/figmaApiTypes.ts +0 -337
  330. package/src/types/gitTypes.ts +0 -59
  331. package/src/types/libraryTypes.ts +0 -49
  332. package/src/types/propertyTypes.ts +0 -586
  333. package/src/types/screenshotTypes.ts +0 -55
  334. package/src/types/webTypes.ts +0 -134
  335. package/src/vite-env.d.ts +0 -1
@@ -1,332 +0,0 @@
1
- import { createHash } from 'node:crypto'
2
- import { forEach, isFilled } from '@dxtmisha/functional-basic'
3
- import { PropertiesFile } from '../Properties/PropertiesFile'
4
- import { DesignTypesAi } from './DesignTypesAi'
5
-
6
- import type {
7
- DesignTypesItem,
8
- DesignTypesList,
9
- DesignTypesPromptCacheItem,
10
- DesignTypesPromptCacheList,
11
- DesignTypesPromptData,
12
- DesignTypesPromptResult
13
- } from '../../types/designTypes'
14
-
15
- import { UI_DIR_AI_TYPES_LIST, UI_DIR_RESOURCES, UI_MODULES } from '../../config'
16
-
17
- /**
18
- * Class for reading prompt files, managing individual prompt metadata files, and generating AI project rules and prompt triggers description.
19
- *
20
- * Класс для чтения файлов промптов, управления отдельными файлами метаданных промптов и генерации описания правил проекта ИИ и триггеров промптов.
21
- */
22
- export class DesignTypesPrompts {
23
- /** Cached list of prompt files / Кэшированный список файлов с промптами */
24
- protected listPrompts?: DesignTypesList
25
-
26
- /** Cached prompt AI metadata list / Кэшированный список метаданных промптов ИИ */
27
- protected cacheList?: DesignTypesPromptCacheList
28
-
29
- /**
30
- * Constructor for DesignTypesPrompts.
31
- *
32
- * Конструктор для DesignTypesPrompts.
33
- * @param promptsDir input directory path containing prompt files / входной путь к директории, содержащей файлы промптов
34
- * @param ai instance of DesignTypesAi for AI interactions / экземпляр DesignTypesAi для ИИ взаимодействия
35
- */
36
- constructor(
37
- protected readonly promptsDir: string = 'ai-resources',
38
- protected readonly ai: DesignTypesAi
39
- ) { }
40
-
41
- /**
42
- * Reads and returns the prompt cache list from individual JSON files in the resources directory.
43
- *
44
- * Читает и возвращает список кэша промптов из отдельных JSON файлов в директории ресурсов.
45
- * @returns prompt cache list / список кэша промптов
46
- */
47
- getCacheList(): DesignTypesPromptCacheList {
48
- if (this.cacheList === undefined) {
49
- const cacheDir = this.getCacheDir()
50
- const files = PropertiesFile.readDirRecursive(cacheDir)
51
- const list: DesignTypesPromptCacheList = []
52
-
53
- for (const file of files) {
54
- if (file.endsWith('.json')) {
55
- const item = PropertiesFile.readFile<DesignTypesPromptCacheItem>([cacheDir, file])
56
-
57
- if (
58
- item
59
- && isFilled(item.path)
60
- && isFilled(item.name)
61
- && isFilled(item.description)
62
- ) {
63
- list.push(item)
64
- }
65
- }
66
- }
67
-
68
- this.cacheList = list
69
- }
70
-
71
- return this.cacheList
72
- }
73
-
74
- /**
75
- * Gets a list of prompt files.
76
- *
77
- * Получает список файлов с промптами.
78
- * @returns list of prompt files / список файлов с промптами
79
- */
80
- getListPrompts(): DesignTypesList {
81
- if (this.listPrompts === undefined) {
82
- const files = PropertiesFile.readDirRecursive(this.promptsDir)
83
-
84
- this.listPrompts = forEach(
85
- files,
86
- (file) => {
87
- if (file.endsWith('.json')) {
88
- return undefined
89
- }
90
-
91
- const path = `${this.promptsDir}/${file}`
92
- const content = PropertiesFile.readFileOnly(path)
93
-
94
- if (content) {
95
- return {
96
- path,
97
- content,
98
- md5: this.getMd5(content)
99
- }
100
- }
101
- }
102
- ) as DesignTypesList
103
- }
104
-
105
- return this.listPrompts
106
- }
107
-
108
- /**
109
- * Initializes prompt rules by executing cache processing and returning formatted prompt rule strings.
110
- *
111
- * Инициализирует правила промптов, выполняя обработку кэша и возвращая список отформатированных строк правил промптов.
112
- * @returns array of formatted prompt rule strings / массив отформатированных строк правил промптов
113
- */
114
- async init(): Promise<string[]> {
115
- await this.make()
116
-
117
- const list = this.getListPrompts()
118
- const cache = this.getCacheList()
119
- const prompts: string[] = []
120
-
121
- for (const item of list) {
122
- const cachedItem = cache.find(itemCache => itemCache.path === item.path)
123
-
124
- if (cachedItem && isFilled(cachedItem.description)) {
125
- prompts.push(this.getPromptLine(item.path, cachedItem.description))
126
- }
127
- }
128
-
129
- return prompts
130
- }
131
-
132
- /**
133
- * Processes prompt files using AI and updates individual JSON cache files if changes are detected.
134
- *
135
- * Обрабатывает файлы промптов с помощью ИИ и обновляет отдельные JSON файлы кэша при обнаружении изменений.
136
- * @returns current instance / текущий экземпляр
137
- */
138
- async make(): Promise<this> {
139
- const list = this.getListPrompts()
140
-
141
- for (const item of list) {
142
- await this.toAiPromptItem(item)
143
- }
144
-
145
- return this
146
- }
147
-
148
- /**
149
- * Generates project rules and prompt triggers description using AI.
150
- *
151
- * Генерирует описание правил проекта и триггеров промптов с помощью ИИ.
152
- * @returns prompt rules description / описание правил промптов
153
- */
154
- async toAiPrompts(): Promise<string> {
155
- const prompts = await this.init()
156
-
157
- if (prompts.length > 0) {
158
- return '## Mandatory Rules\n'
159
- + 'You MUST evaluate whether your task relates to any of the following topics (even if not working directly with this package). If related material is present, you are strictly obligated to read and study the corresponding file before proceeding:\n'
160
- + `${prompts.join('\n')}`
161
- }
162
-
163
- return ''
164
- }
165
-
166
- /**
167
- * Gets the cache directory path for individual prompt JSON files.
168
- *
169
- * Получает путь к директории кэша для отдельных JSON файлов промптов.
170
- * @returns cache directory path / путь к директории кэша
171
- */
172
- protected getCacheDir(): string {
173
- return PropertiesFile.joinPath([UI_DIR_AI_TYPES_LIST, UI_DIR_RESOURCES])
174
- }
175
-
176
- /**
177
- * Gets the cache JSON file path for a specific prompt file path.
178
- *
179
- * Получает путь к JSON файлу кэша для конкретного пути к файлу промпта.
180
- * @param path relative file path of the prompt / относительный путь к файлу промпта
181
- * @returns cache JSON file path / путь к JSON файлу кэша
182
- */
183
- protected getCachePath(path: string): string {
184
- const relativePath = path
185
- .replace(new RegExp(`^${this.promptsDir}/`), '')
186
- .replace(/\.[^/.]+$/, '.json')
187
-
188
- return PropertiesFile.joinPath([
189
- this.getCacheDir(),
190
- relativePath
191
- ])
192
- }
193
-
194
- /**
195
- * Generates MD5 hash for the given content.
196
- *
197
- * Генерирует MD5 хэш для переданного содержимого.
198
- * @param content file or text content / содержимое файла или текста
199
- * @returns MD5 hash string / MD5 хэш строка
200
- */
201
- protected getMd5(content: string): string {
202
- return createHash('md5').update(content.trim()).digest('hex')
203
- }
204
-
205
- /**
206
- * Formats a prompt rule entry line for a file and description.
207
- *
208
- * Форматирует строку элемента правила промпта для файла и описания.
209
- * @param path relative file path / относительный путь к файлу
210
- * @param description rule description / описание правила
211
- * @returns formatted prompt rule line / отформатированная строка правила промпта
212
- */
213
- protected getPromptLine(
214
- path: string,
215
- description: string
216
- ): string {
217
- return `- '${UI_MODULES}/${this.ai.getProjectName()}/${path}': ${description}`
218
- }
219
-
220
- /**
221
- * Saves an individual prompt cache item to its JSON cache file.
222
- *
223
- * Сохраняет отдельный элемент кэша промпта в его JSON файл кэша.
224
- * @param item prompt cache item to save / элемент кэша промпта для сохранения
225
- */
226
- protected saveCacheItem(item: DesignTypesPromptCacheItem): void {
227
- PropertiesFile.writeByPath(
228
- this.getCachePath(item.path),
229
- item
230
- )
231
- }
232
-
233
- /**
234
- * Saves the prompt cache list to individual JSON cache files.
235
- *
236
- * Сохраняет список кэша промптов в отдельные JSON файлы кэша.
237
- * @param cache cache list to save / список кэша для сохранения
238
- */
239
- protected saveCacheList(cache: DesignTypesPromptCacheList): void {
240
- this.cacheList = cache
241
-
242
- for (const item of cache) {
243
- this.saveCacheItem(item)
244
- }
245
- }
246
-
247
- /**
248
- * Generates document metadata (title and description) for studying a prompt file using AI.
249
- *
250
- * Генерирует метаданные документа (название и описание) для изучения файла промпта с помощью ИИ.
251
- * @param content prompt file content / содержимое файла промпта
252
- * @returns object with document title and description or undefined / объект с названием и описанием документа или undefined
253
- */
254
- protected async toAiPromptData(content: string): Promise<DesignTypesPromptData | undefined> {
255
- return this.ai.toAiJson<DesignTypesPromptData>(
256
- content,
257
- 'Goal: Generate a document metadata object in valid JSON format for an AI coding assistant.\n\n'
258
- + 'CRITICAL RESTRICTIONS:\n'
259
- + '- The output MUST be a valid JSON object with keys: "name" and "description".\n'
260
- + '- Field "name": Short and concise document title (maximum 4-5 words).\n'
261
- + '- Field "description": Clear description for an AI agent explaining what exact standards, rules, or tools this file contains and what commercial or technical task it solves (maximum 3 sentences).\n'
262
- + '- Do NOT include markdown code block wrappers (```json). Return ONLY the raw JSON string.\n\n'
263
- + 'EXAMPLES OF GOOD OUTPUT:\n'
264
- + '{\n'
265
- + ' "name": "Coding Standards",\n'
266
- + ' "description": "Строгие архитектурные конвенции и стандарты написания кода для продукта"\n'
267
- + '}\n\n'
268
- + 'OUTPUT REQUIREMENTS:\n'
269
- + 'Return ONLY the JSON object. No explanations, no markdown formatting, no conversational text.'
270
- )
271
- }
272
-
273
- /**
274
- * Processes a single prompt file item using cache or AI into a formatted rule entry string and updates individual cache file if changed.
275
- *
276
- * Обрабатывает один элемент файла промпта с использованием кэша или ИИ в отформатированную строку правила и обновляет отдельный файл кэша при изменениях.
277
- * @param item prompt file item / элемент файла промпта
278
- * @returns object with formatted rule string and changed flag / объект с отформатированной строкой правила и флагом изменений
279
- */
280
- protected async toAiPromptItem(
281
- item: DesignTypesItem
282
- ): Promise<DesignTypesPromptResult> {
283
- const md5 = item.md5 ?? this.getMd5(item.content)
284
- const cache = this.getCacheList()
285
- const cacheIndex = cache.findIndex(itemCache => itemCache.path === item.path)
286
- const cachedItem = cacheIndex >= 0 ? cache[cacheIndex] : undefined
287
-
288
- if (
289
- cachedItem
290
- && cachedItem.md5 === md5
291
- && isFilled(cachedItem.name)
292
- && isFilled(cachedItem.description)
293
- ) {
294
- return {
295
- prompt: this.getPromptLine(item.path, cachedItem.description),
296
- isChanged: false
297
- }
298
- }
299
-
300
- console.log(`-- processing prompt metadata for ${item.path}...`)
301
-
302
- const data = await this.toAiPromptData(item.content)
303
-
304
- if (
305
- data
306
- && isFilled(data.name)
307
- && isFilled(data.description)
308
- ) {
309
- const newItem: DesignTypesPromptCacheItem = {
310
- path: item.path,
311
- md5,
312
- name: data.name,
313
- description: data.description
314
- }
315
-
316
- if (cacheIndex >= 0) {
317
- cache[cacheIndex] = newItem
318
- } else {
319
- cache.push(newItem)
320
- }
321
-
322
- this.saveCacheItem(newItem)
323
-
324
- return {
325
- prompt: this.getPromptLine(item.path, data.description),
326
- isChanged: true
327
- }
328
- }
329
-
330
- return { isChanged: false }
331
- }
332
- }
@@ -1,244 +0,0 @@
1
- import { forEach } from '@dxtmisha/functional-basic'
2
- import ts from 'typescript'
3
-
4
- import type {
5
- DesignTypescriptItem,
6
- DesignTypescriptList,
7
- DesignTypescriptProp,
8
- DesignTypescriptProps
9
- } from '../../types/designTypes'
10
-
11
- /**
12
- * Utility for interacting with the TypeScript Compiler API to analyze and extract type metadata from source files.
13
- * It parses interfaces and type aliases to retrieve property details, including types, literal unions, and documentation comments.
14
- *
15
- * Утилита для взаимодействия с TypeScript Compiler API для анализа и извлечения метаданных типов из исходных файлов.
16
- * Анализирует интерфейсы и псевдонимы типов для получения сведений о свойствах, включая типы, литеральные объединения и комментарии к документации.
17
- */
18
- export class DesignTypescript {
19
- protected readonly program: ts.Program
20
- protected readonly checker: ts.TypeChecker
21
- protected readonly sourceFile?: ts.SourceFile
22
- protected types?: DesignTypescriptList
23
-
24
- /**
25
- * Constructor for DesignTypescript.
26
- *
27
- * Конструктор для DesignTypescript.
28
- * @param path path to the TypeScript source file to analyze / путь к исходному файлу TypeScript для анализа
29
- * @param options compiler options for the TypeScript program / опции компилятора для программы TypeScript
30
- */
31
- constructor(
32
- path: string = '',
33
- options: ts.CompilerOptions = {}
34
- ) {
35
- this.program = ts.createProgram([path], options)
36
- this.checker = this.program.getTypeChecker()
37
- this.sourceFile = this.program.getSourceFiles().find(source => source.fileName.endsWith(path))
38
- }
39
-
40
- /**
41
- * Returns the TypeScript types from the source file
42
- *
43
- * Возвращает типы TypeScript из исходного файла
44
- */
45
- getTypes(): DesignTypescriptList {
46
- if (!this.types && this.sourceFile) {
47
- const data: DesignTypescriptList = []
48
-
49
- ts.forEachChild(
50
- this.sourceFile,
51
- (node) => {
52
- if (
53
- ts.isTypeAliasDeclaration(node)
54
- || ts.isInterfaceDeclaration(node)
55
- ) {
56
- const type = this.checker.getTypeAtLocation(node.name)
57
- const props: DesignTypescriptProps = []
58
-
59
- this.checker
60
- .getPropertiesOfType(type)
61
- .forEach((prop) => {
62
- props.push(this.getPropInformation(node, prop))
63
- })
64
-
65
- data.push({
66
- name: node.name.text,
67
- props
68
- })
69
- }
70
- })
71
-
72
- this.types = data
73
- return data
74
- }
75
-
76
- return []
77
- }
78
-
79
- /**
80
- * Returns the TypeScript type by name
81
- *
82
- * Возвращает тип TypeScript по имени
83
- * @param name Name of the type/ имя типа
84
- */
85
- getType(name: string): DesignTypescriptItem | undefined {
86
- return this.getTypes().find(type => type.name === name)
87
- }
88
-
89
- /**
90
- * Returns the type of the property
91
- *
92
- * Возвращает тип свойства
93
- * @param type TypeScript type/ тип TypeScript
94
- * @param prop Symbol of the property/ символ свойства
95
- */
96
- protected getPropType(
97
- type: ts.Type,
98
- prop?: ts.Symbol
99
- ): string {
100
- const option = this.getPropOption(type)
101
-
102
- if (
103
- type.isUnion()
104
- && option
105
- && option.length > 0
106
- ) {
107
- if (
108
- type.types.every(
109
- type => type.isNumberLiteral()
110
- )
111
- ) {
112
- return 'number'
113
- }
114
-
115
- return 'string'
116
- }
117
-
118
- let text = this.checker.typeToString(type)
119
-
120
- if (
121
- prop
122
- && (
123
- text === 'any'
124
- || text === '{}'
125
- || text === 'unknown'
126
- )
127
- ) {
128
- const decl = prop.getDeclarations()?.find(d =>
129
- ts.isPropertySignature(d) || ts.isPropertyDeclaration(d)
130
- )
131
-
132
- if (decl?.type) {
133
- text = decl.type.getText().trim() || text
134
- }
135
- }
136
-
137
- return text.replace(/'/g, '\\\'')
138
- }
139
-
140
- /**
141
- * Returns the option of the property
142
- *
143
- * Возвращает опцию свойства
144
- * @param type TypeScript type/ тип TypeScript
145
- */
146
- protected getPropOption(type: ts.Type): DesignTypescriptProp['option'] {
147
- if (type.isUnion()) {
148
- const option = forEach(
149
- type.types,
150
- (item) => {
151
- if (
152
- item.isStringLiteral()
153
- || item.isNumberLiteral()
154
- ) {
155
- return String(item.value)
156
- }
157
- }
158
- ) as string[]
159
-
160
- if (option.length > 0) {
161
- return option
162
- }
163
- }
164
-
165
- return undefined
166
- }
167
-
168
- /**
169
- * Extracts literal options from a property TypeNode union
170
- *
171
- * Извлекает литеральные опции из узла типа свойства (union)
172
- * @param type Property type AST node/ узел AST типа свойства
173
- * @returns Array of literal values or undefined/ Массив литеральных значений или undefined
174
- */
175
- protected getPropOptionByNode(type: ts.TypeNode): DesignTypescriptProp['option'] {
176
- if (ts.isUnionTypeNode(type)) {
177
- const list: string[] = []
178
-
179
- for (const item of type.types) {
180
- if (
181
- ts.isLiteralTypeNode(item)
182
- && ts.isStringLiteral(item.literal)
183
- ) {
184
- list.push(item.literal.text)
185
- }
186
- }
187
-
188
- return list
189
- }
190
-
191
- return undefined
192
- }
193
-
194
- /**
195
- * Extracts literal options from property declarations by reading their type nodes
196
- *
197
- * Извлекает литеральные опции из деклараций свойства, анализируя их узлы типа
198
- * @param declarations Symbol declarations/ декларации символа
199
- * @returns Array of literal values or empty array/ Массив литеральных значений или пустой массив
200
- */
201
- protected getPropOptionByDeclarations(declarations?: ts.Declaration[]): DesignTypescriptProp['option'] {
202
- if (declarations) {
203
- for (const declaration of declarations) {
204
- if (
205
- (
206
- ts.isPropertySignature(declaration)
207
- || ts.isPropertyDeclaration(declaration)
208
- )
209
- && declaration.type
210
- ) {
211
- const types = this.getPropOptionByNode(declaration.type)
212
- if (types && types.length > 0) {
213
- return types
214
- }
215
- }
216
- }
217
- }
218
-
219
- return []
220
- }
221
-
222
- /**
223
- * Returns information about the property
224
- *
225
- * Возвращает информацию о свойстве
226
- * @param node Type alias or interface declaration/ объявление псевдонима типа или интерфейса
227
- * @param prop Symbol of the property/ символ свойства
228
- */
229
- protected getPropInformation(
230
- node: ts.TypeAliasDeclaration | ts.InterfaceDeclaration,
231
- prop: ts.Symbol
232
- ): DesignTypescriptProp {
233
- const type = this.checker.getTypeOfSymbolAtLocation(prop, node.name)
234
- const descriptionRaw = ts.displayPartsToString(prop.getDocumentationComment(this.checker)).trim()
235
- const description = descriptionRaw.length > 0 ? descriptionRaw : undefined
236
-
237
- return {
238
- name: prop.name,
239
- type: this.getPropType(type, prop),
240
- option: this.getPropOption(type) ?? this.getPropOptionByDeclarations(prop.getDeclarations()),
241
- description
242
- }
243
- }
244
- }