@dxtmisha/scripts 0.11.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/CHANGELOG.md +77 -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 +34 -3
  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 +27 -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-BiLAcdFy.js +232 -0
  21. package/dist/PropertiesConfig-BKZz_FWW.js +262 -0
  22. package/{src/config.ts → dist/config.d.ts} +185 -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 +4910 -0
  32. package/dist/library.js +1568 -0
  33. package/dist/propertyTypes-C64u6rT3.js +236 -0
  34. package/package.json +76 -27
  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,672 +0,0 @@
1
- // export:none
2
-
3
- import { forEach, getColumn, toCamelCase, toCamelCaseFirst } from '@dxtmisha/functional-basic'
4
-
5
- import { DesignStructure } from './DesignStructure'
6
-
7
- import type {
8
- DesignStructureClassesItem,
9
- DesignStructureItem,
10
- DesignStructureItemSub,
11
- DesignStructureList
12
- } from '../../types/designTypes'
13
-
14
- import { UI_KEY_CUSTOM } from '../../config'
15
- import { PropertiesConfig } from '../Properties/PropertiesConfig'
16
-
17
- /**
18
- * Engine for systematic text replacement within file templates based on component structure.
19
- * It manages the transformation of labels (marks) into actual code segments, including property types, default values, and CSS class mappings.
20
- *
21
- * Движок для систематической замены текста в шаблонах файлов на основе структуры компонента.
22
- * Управляет преобразованием меток (marks) в реальные сегменты кода, включая типы свойств, значения по умолчанию и маппинг CSS-классов.
23
- */
24
- export class DesignReplace {
25
- protected readonly component: string
26
- protected readonly mark: string
27
-
28
- /**
29
- * Constructor for DesignReplace.
30
- *
31
- * Конструктор для DesignReplace.
32
- * @param structure object containing component metadata and design logic / объект, содержащий метаданные компонента и логику дизайна
33
- * @param mark the identifier used in templates for replacement (e.g., 'button') / идентификатор, используемый в шаблонах для замены
34
- * @param sample the raw template content to be processed / необработанное содержимое шаблона для обработки
35
- */
36
- constructor(
37
- protected structure: DesignStructure,
38
- mark: string,
39
- protected sample: string
40
- ) {
41
- this.mark = toCamelCaseFirst(mark)
42
- this.component = this.structure.getComponentNameFirst()
43
- }
44
-
45
- /**
46
- * Returns the modified template.
47
- *
48
- * Возвращает изменённый шаблон.
49
- */
50
- get(): string {
51
- return this.sample
52
- }
53
-
54
- /**
55
- * Returns the path for importing the module.
56
- *
57
- * Возвращает путь для подключения модуля.
58
- */
59
- getRoot(): string {
60
- // const path = __filename.match(/node_modules\/([^/]+)/)
61
-
62
- // if (path) {
63
- // return `${path?.[1]}/`
64
- // }
65
-
66
- return '../../'
67
- }
68
-
69
- /**
70
- * Changes the names in accordance with the component name.
71
- *
72
- * Изменяет названия в соответствии с названием компонента.
73
- * @param name the name of a file/ название файла
74
- */
75
- getNameFile(name: string): string {
76
- return name
77
- .replace(/\[project]/g, PropertiesConfig.getProjectName())
78
- .replace(/\[design]/g, this.structure.getDesign())
79
- .replace(/\[Design]/g, toCamelCaseFirst(this.structure.getDesign()))
80
- .replace(/\[component]/g, this.structure.getComponentName())
81
- .replace(/DesignComponent/g, this.structure.getFileName())
82
- .replace(new RegExp(this.mark, 'g'), this.component)
83
- .replace(new RegExp(`DefineSetupFn${this.component}`, 'g'), 'DefineSetupFnComponent')
84
- }
85
-
86
- /**
87
- * Changing the name of the component.
88
- *
89
- * Изменение названия компонента.
90
- */
91
- replaceName(): this {
92
- this.sample = this.getNameFile(this.sample)
93
- return this
94
- }
95
-
96
- /**
97
- * Change the path to the file.
98
- *
99
- * Изменение пути к файлу.
100
- */
101
- replacePath(): this {
102
- this.sample = this.sample.replace(/..\/..\/..\//g, this.getRoot())
103
- return this
104
- }
105
-
106
- /**
107
- * Replaces values with selected label.
108
- *
109
- * Заменяет значения на выбранную метку.
110
- * @param name label name/ название метки
111
- * @param data data for replacement/ данные для замены
112
- * @param end symbol at the end of the line/ символ в конце строки
113
- */
114
- replaceMark(
115
- name: string,
116
- data: string[],
117
- end = ''
118
- ): this {
119
- let regName = `\\[?\\/\\/[\\]: #\\(]+:${name} `
120
- let space = this.sample.match(new RegExp(`^( *)(${regName})`, 'm'))?.[1]
121
-
122
- if (
123
- typeof space !== 'string'
124
- && this.sample.match(name)
125
- ) {
126
- regName = `<!-- :${name} `
127
- space = this.sample.match(new RegExp(`^( *)(${regName})`, 'm'))?.[1]
128
- }
129
-
130
- if (typeof space === 'string') {
131
- const inString = `\r\n${space}`
132
- const value = data
133
- .join(`${end}${inString}`)
134
- .replace(/\[space]/g, inString)
135
- .replace(/\$/g, '$$$$')
136
-
137
- if (value.trim() !== '') {
138
- this.sample = this.sample
139
- .replace(
140
- new RegExp(`(^ *)(${regName}.*?$)([\\S\\s]+)(^ *${regName})`, 'gm'),
141
- `$1$2${inString}${value}\r\n$4`
142
- )
143
- } else {
144
- this.sample = this.sample
145
- .replace(
146
- new RegExp(`(^ *)(${regName}.*?$)([\\S\\s]+)(^ *${regName})`, 'gm'),
147
- '$1$2\r\n$4'
148
- )
149
- }
150
- }
151
-
152
- return this
153
- }
154
-
155
- /**
156
- * Replaces values with the selected label only once.
157
- *
158
- * Заменяет значения на выбранную метку только 1 раз.
159
- * @param name label name/ название метки
160
- * @param removeReplacement data deletion/ удаление данных
161
- */
162
- replaceOnce(
163
- name = toCamelCase(this.mark),
164
- removeReplacement: boolean | ((data: string) => string) = false
165
- ): this {
166
- const exp1 = new RegExp(`\\/\\/ :${name}\\.once ([^\r\n]+)([\r\n ]*)`, 'g')
167
- const exp2 = new RegExp(`\\/\\* :${name}\\.once \\*\\/([\\S\\s]*?)\\/\\* :${name}\\.once\\.end \\*\\/([\r\n ]*)`, 'g')
168
- const exp3 = new RegExp(`\\/\\* :${name}\\.once (.*?) \\*\\/([\r\n ]*)`, 'g')
169
- const exp4 = new RegExp(`<!-- :${name}\\.once -->([\\S\\s]*?)<!-- :${name}\\.once\\.end -->([\r\n ]*)`, 'g')
170
- const exp5 = new RegExp(`<!-- :${name}\\.once (.*?) -->([\r\n ]*)`, 'g')
171
-
172
- const replacement = (...data: string[]) => {
173
- if (typeof removeReplacement === 'function') {
174
- return `${removeReplacement(data[1] as string)}${data[2]}`
175
- } else if (removeReplacement) {
176
- return ''
177
- }
178
-
179
- return `${data[1]}${data[2]}`
180
- }
181
-
182
- this.sample = this.sample
183
- .replace(exp1, replacement)
184
- .replace(exp2, replacement)
185
- .replace(exp3, replacement)
186
- .replace(exp4, replacement)
187
- .replace(exp5, replacement)
188
-
189
- return this
190
- }
191
-
192
- /**
193
- * Adding types for properties.
194
- *
195
- * Добавление типов для свойств.
196
- * @param constructor additional data for processing/ дополнительные данные для обработки
197
- */
198
- replaceType(constructor?: string): this {
199
- const mark = 'type'
200
- const props = this.structure.get()
201
- const templates: string[] = []
202
-
203
- if (constructor) {
204
- templates.push(...this.getTypeForConstructor(constructor))
205
- }
206
-
207
- forEach(props, ({
208
- name,
209
- valueAll,
210
- style
211
- }) => {
212
- const types = this.getPropTypeByValue(valueAll, style)
213
-
214
- if (
215
- !this.initMarkAddValue(mark, name, types)
216
- && !this.isNoMark(mark, name)
217
- ) {
218
- const typesString = !constructor && !types.match(/string|boolean/) && types.match(/'/)
219
- ? `${types}` // string |
220
- : types
221
-
222
- templates.push(`${name}?: ${typesString}`)
223
- }
224
- })
225
-
226
- return this.replaceMark(mark, templates)
227
- }
228
-
229
- /**
230
- * Adding default values for properties.
231
- *
232
- * Добавление значения по умолчанию для свойств.
233
- */
234
- replaceDefault(): this {
235
- const mark = 'default'
236
- const props = this.structure.get()
237
- const templates: string[] = []
238
-
239
- forEach(props, (item) => {
240
- if (
241
- item.default
242
- && !this.isNoMark(mark, item.name)
243
- ) {
244
- templates.push(`${item.name}: ${this.getDefault(item.default)}`)
245
- }
246
- })
247
-
248
- return this.replaceMark(mark, templates, ',')
249
- }
250
-
251
- /**
252
- * Adding types for properties.
253
- *
254
- * Добавление самих свойств.
255
- */
256
- replaceProps(): this {
257
- const mark = 'prop'
258
- const props = this.structure.get()
259
- const templates: string[] = []
260
- const indexDefault = this.getIndexDefault()
261
-
262
- forEach(props, (item) => {
263
- if (!this.isNoMark('type', item.name)) {
264
- const type = this.getPropByValue(item.name, item.valueAll)
265
-
266
- if (item.default) {
267
- templates.push(
268
- `${item.name}: {`
269
- + `[space] type: ${type},`
270
- + `[space] default: ${indexDefault}?.${item.name}`
271
- + '[space]}'
272
- )
273
- } else {
274
- templates.push(`${item.name}: ${type}`)
275
- }
276
- }
277
- })
278
-
279
- return this.replaceMark(mark, templates, ',')
280
- }
281
-
282
- /**
283
- * Transforms the given value into a list.
284
- *
285
- * Преобразовывает данное значение в список.
286
- */
287
- replacePropsValues(): this {
288
- const mark = 'values'
289
- const props = this.structure.get()
290
- const templates: string[] = []
291
-
292
- forEach(props, (item) => {
293
- if (!this.isNoMark('type', item.name)) {
294
- const values = this.getPropValuesByValue(item.valueAll)
295
-
296
- if (values) {
297
- templates.push(`${item.name}: [${values}]`)
298
- } else if (item.valueAll?.indexOf(UI_KEY_CUSTOM) !== -1) {
299
- templates.push(`${item.name}: []`)
300
- }
301
- }
302
- })
303
-
304
- return this.replaceMark(mark, templates, ',')
305
- }
306
-
307
- /**
308
- * Adding a list of available classes.
309
- *
310
- * Добавление списка доступных классов.
311
- * @param template a function that returns a template/ функция, которая возвращает шаблон
312
- * @param end symbol at the end of the line/ символ в конце строки
313
- */
314
- replaceClasses(
315
- template: (item: DesignStructureClassesItem) => string = (item: DesignStructureClassesItem) => `${item.index}: string`,
316
- end = ''
317
- ): this {
318
- const mark = 'classes'
319
- const classes = this.structure.getClasses()
320
- const templates: string[] = []
321
-
322
- forEach(classes, item => templates.push(template(item)))
323
-
324
- return this.replaceMark(mark, templates, end)
325
- }
326
-
327
- /**
328
- * Transformation for active status classes.
329
- *
330
- * Преобразование для активных классов статуса.
331
- */
332
- replaceClassesValues(): this {
333
- const mark = 'classes-values'
334
- const templates: string[] = [
335
- `'${this.structure?.getPathName()}': true`,
336
- ...this.initClassesValues()
337
- ]
338
-
339
- return this.replaceMark(mark, templates, ',')
340
- }
341
-
342
- /**
343
- * Transformation for active status classes.
344
- *
345
- * Преобразование для активных классов статуса.
346
- */
347
- replaceStylesValues(): this {
348
- const mark = 'styles-values'
349
- const templates: string[] = this.initStylesValues()
350
-
351
- return this.replaceMark(mark, templates, ',')
352
- }
353
-
354
- /**
355
- * Adding a list of available classes for a constructor.
356
- *
357
- * Добавление списка доступных классов для конструктора.
358
- */
359
- replaceConstructorClasses(): this {
360
- return this.replaceClasses(
361
- (item: DesignStructureClassesItem) => {
362
- if (item.full) {
363
- return `${item.index}: '${item.className}'`
364
- }
365
-
366
- return `${item.index}: this.getSubClass('${item.className}')`
367
- },
368
- ','
369
- )
370
- }
371
-
372
- /**
373
- * Checks if the data type is boolean.
374
- *
375
- * Проверяет, является ли тип данных булевым.
376
- * @param value values to check/ значения для проверки
377
- */
378
- protected isBoolean(value: DesignStructureItem['value']): boolean {
379
- return value.indexOf(true) !== -1
380
- }
381
-
382
- /**
383
- * Checks if the data type is string.
384
- *
385
- * Проверяет, является ли тип данных строковым.
386
- * @param value values to check/ значения для проверки
387
- */
388
- protected isString(value: DesignStructureItem['value']): boolean {
389
- return value.length > 0 && value[0] !== true
390
- }
391
-
392
- /**
393
- * Checks whether the current property should be excluded by its label.
394
- *
395
- * Проверяет, следует ли исключить текущее свойство по его метке.
396
- * @param mark label property/ метка свойства
397
- * @param name property name/ название свойства
398
- */
399
- protected isNoMark(
400
- mark: string,
401
- name: string
402
- ): boolean {
403
- return Boolean(this.sample.match(`:${mark}.${name}.none`))
404
- }
405
-
406
- /**
407
- * Returns default values.
408
- *
409
- * Возвращает значения по умолчанию.
410
- * @param value default values/ значения по умолчанию
411
- */
412
- protected getDefault(value: DesignStructureItem['default']): string {
413
- if (typeof value === 'string') {
414
- return `'${value}'`
415
- } else {
416
- return `${value}`
417
- }
418
- }
419
-
420
- /**
421
- * Returns available types for property.
422
- *
423
- * Возвращает доступные типы для свойства.
424
- * @param name property name/ название свойства
425
- * @param value values to check/ значения для проверки
426
- */
427
- protected getPropByValue(
428
- name: string,
429
- value: DesignStructureItem['value']
430
- ): string {
431
- if (!this.isString(value)) {
432
- return 'Boolean'
433
- }
434
-
435
- const type = this.isBoolean(value) ? '[String, Boolean]' : 'String'
436
- const index = this.getIndexProp()
437
-
438
- if (index) {
439
- return `${type} as PropType<${index}['${name}']>`
440
- }
441
-
442
- return type
443
- }
444
-
445
- /**
446
- * Returns a string with the data type.
447
- *
448
- * Возвращает строку с типом данных.
449
- * @param value values to check/ значения для проверки
450
- * @param style is the property style present/ является ли свойство style
451
- */
452
- protected getPropTypeByValue(
453
- value: DesignStructureItem['value'],
454
- style?: boolean
455
- ): string {
456
- const types: string[] = []
457
-
458
- if (this.isBoolean(value)) {
459
- types.push('boolean')
460
- }
461
-
462
- if (style) {
463
- types.push('string')
464
- }
465
-
466
- if (this.isString(value)) {
467
- value.forEach(item => types.push(item === true ? 'true' : `'${item}'`))
468
- }
469
-
470
- if (types.length === 0) {
471
- types.push('boolean')
472
- }
473
-
474
- return types.join(' | ')
475
- }
476
-
477
- /**
478
- * Getting a list of available data for the property.
479
- *
480
- * Получение списка доступных данных у свойства.
481
- * @param value values to check/ значения для проверки
482
- */
483
- protected getPropValuesByValue(
484
- value: DesignStructureItem['value']
485
- ): string | undefined {
486
- if (this.isString(value)) {
487
- const types: string[] = []
488
-
489
- value.forEach((item) => {
490
- if (item !== UI_KEY_CUSTOM) {
491
- types.push(item === true ? 'true' : `'${item}'`)
492
- }
493
- })
494
- return types.join(', ')
495
- }
496
-
497
- return undefined
498
- }
499
-
500
- /**
501
- * Returns the names of parameters.
502
- *
503
- * Возвращает названия параметров переменных.
504
- */
505
- protected getIndexProp(): string | undefined {
506
- return this.sample.match(/type ([a-zA-Z]*Props[a-zA-Z]*) =/)?.[1]
507
- }
508
-
509
- /**
510
- * Returns the names of parameters and their default values.
511
- *
512
- * Возвращает названия параметров и значения по умолчанию.
513
- */
514
- protected getIndexDefault(): string | undefined {
515
- return this.sample.match(/const ([a-zA-Z]*defaults[a-zA-Z]*)[ :]/)?.[1]
516
- }
517
-
518
- /**
519
- * Getting base properties from a constructor.
520
- *
521
- * Получение базовых свойств из конструктора.
522
- * @param constructor data for processing/ данные для обработки
523
- */
524
- protected getTypeForConstructor(constructor: string): string[] {
525
- const props = getColumn(this.structure.get(), 'name')
526
- const templates: string[] = []
527
-
528
- constructor
529
- .match(/(?<=type[^{]+Props[^{]+{[^{}]+)(^[^\n{}/]+$)(?=[^{}]+^})/igm)
530
- ?.forEach((string) => {
531
- const name = string.match(/[a-z0-9]+(?=[?:])/i)?.[0]
532
-
533
- if (name && props.indexOf(name) === -1) {
534
- templates.push(`// [constructor] ${string.trim()}`)
535
- }
536
- })
537
-
538
- return templates
539
- }
540
-
541
- /**
542
- * Adds new data from tokens to existing data.
543
- *
544
- * Добавляет новые данные из токенов к уже существующим.
545
- * @param mark label property/ метка свойства
546
- * @param name property name/ название свойства
547
- * @param value property value/ значение свойства
548
- */
549
- protected initMarkAddValue(
550
- mark: string,
551
- name: string,
552
- value: string
553
- ): boolean {
554
- if (
555
- this.sample.match(`:${mark}.${name}`)
556
- ) {
557
- this.sample = this.sample
558
- .replace(
559
- new RegExp(`(/[*] ?:${mark}[.]${name} ?[*]/)[^\r\n]*`, 'g'),
560
- `$1 | ${value}`
561
- )
562
-
563
- return true
564
- }
565
-
566
- return false
567
- }
568
-
569
- /**
570
- * Getting an array with all classes and conditions of activity status.
571
- *
572
- * Получение массива со всеми классами и условиями статуса активности.
573
- * @param items data list/ список данных
574
- * @param parent ancestor data/ данные о предке
575
- * @param values activity conditions/ условия активности
576
- * @protected
577
- */
578
- protected initClassesValues(
579
- items: DesignStructureList | DesignStructureItemSub[] = this.structure.get(),
580
- parent: string = this.structure?.getPathName() ?? '',
581
- values: string[] = []
582
- ): string[] {
583
- const templates: string[] = []
584
-
585
- forEach(items, (item) => {
586
- const {
587
- name,
588
- value,
589
- state
590
- } = item
591
-
592
- const index = `props.${name}`
593
- const newParent = ('className' in item && item?.className as string) || `${parent}--${name}`
594
- const newValues = [
595
- ...values,
596
- this.isString(value) ? `Boolean(${index})` : index,
597
- ...this.initClassesCategory(item)
598
- ]
599
-
600
- if (this.isBoolean(value)) {
601
- templates.push(
602
- `'${newParent}': ${newValues.join(' && ')}`,
603
- ...this.initClassesValues(state, newParent, newValues)
604
- )
605
- }
606
-
607
- if ('style' in item && item.style) {
608
- templates.push(`'${newParent}--${UI_KEY_CUSTOM}': isFilled(${index}) && !inArray(propsValues.${name}, ${index})`)
609
- }
610
-
611
- if (
612
- this.isString(value)
613
- && !(value.length === 1 && value[0] === UI_KEY_CUSTOM)
614
- ) {
615
- templates.push(`[\`${newParent.match(/-palette$/) ? `${newParent} ` : ''}${newParent}--\${${index}}\`]: inArray(propsValues.${name}, ${index})`)
616
- }
617
- })
618
-
619
- return templates
620
- }
621
-
622
- /**
623
- * Adding an exception for the current property.
624
- *
625
- * Добавление исключения для текущего свойства.
626
- * @param item object for checking/ объект для проверки
627
- */
628
- protected initClassesCategory(item: DesignStructureItem | DesignStructureItemSub): string[] {
629
- const values: string[] = []
630
-
631
- if (
632
- 'category' in item
633
- && item.category
634
- && Boolean(item.default)
635
- ) {
636
- forEach(this.structure.get(), ({
637
- name,
638
- category
639
- }) => {
640
- if (item.name !== name && item.category === category) {
641
- values.push(`!props.${name}`)
642
- }
643
- })
644
- }
645
-
646
- return values
647
- }
648
-
649
- /**
650
- * Getting an array with all component styles.
651
- *
652
- * Получение массива со всеми стилями компонента.
653
- * @param items data list/ список данных
654
- */
655
- protected initStylesValues(
656
- items: DesignStructureList = this.structure.get()
657
- ): string[] {
658
- const templates: string[] = []
659
- const className = this.structure?.getPathName()
660
-
661
- forEach(items, ({
662
- name,
663
- style
664
- }) => {
665
- if (style) {
666
- templates.push(`'--${className}-sys-${name}': props.${name} ?? null`)
667
- }
668
- })
669
-
670
- return templates
671
- }
672
- }