@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,605 +0,0 @@
1
- // export:none
2
-
3
- import {
4
- forEach,
5
- getColumn,
6
- isNull,
7
- isObjectNotArray,
8
- isSelected,
9
- toCamelCase
10
- } from '@dxtmisha/functional-basic'
11
-
12
- import { PropertiesCache } from './PropertiesCache'
13
-
14
- import {
15
- type PropertyItemsCallback,
16
- type PropertyItemsItem,
17
- type PropertyItemsMedia,
18
- PropertyCategory,
19
- type PropertyItem,
20
- PropertyKey,
21
- type PropertyList,
22
- PropertyType
23
- } from '../../types/propertyTypes'
24
-
25
- import { UI_KEY_CONSTRUCTOR } from '../../config'
26
-
27
- const SUPPORT_NAME = [
28
- PropertyType.design,
29
- PropertyType.component,
30
- PropertyType.classType
31
- ]
32
-
33
- /**
34
- * Coordinator for design property collections.
35
- * This class provides a high-level API for traversing, searching, and extracting metadata from complex design token trees. It manages state related to design focusing (filtering view to a specific design set), converts complex path strings into normalized keys, and facilitates deep recursive iteration for token processing engines.
36
- *
37
- * Координатор коллекций свойств дизайна.
38
- * Этот класс предоставляет высокоуровневый API для обхода, поиска и извлечения метаданных из сложных деревьев токенов дизайна. Он управляет состоянием, связанным с фокусировкой дизайна (фильтрация представления для конкретного набора дизайнов), преобразует сложные строки путей в нормализованные ключи и упрощает глубокую рекурсивную итерацию для движков обработки токенов.
39
- */
40
- export class PropertiesItems {
41
- private focusDesign?: string
42
-
43
- /**
44
- * Constructor
45
- * @param properties array with all property records/ массив со всеми записями свойств
46
- */
47
- constructor(
48
- private readonly properties: PropertyList
49
- ) {
50
- }
51
-
52
- /**
53
- * Checks if the record complies with the design requirements.
54
- *
55
- * Проверяет, соответствует ли запись условиям дизайна.
56
- * @param name names of items/ названия объектов
57
- * @param design design name/ название дизайна
58
- * @private
59
- */
60
- isFocusDesign(name: string, design?: string): boolean {
61
- return Boolean(
62
- design
63
- || isNull(this.focusDesign)
64
- || name === this.focusDesign
65
- || name === UI_KEY_CONSTRUCTOR
66
- )
67
- }
68
-
69
- /**
70
- * Retrieves the current property structure.
71
- * If a focus design is set, returns only the subset corresponding to that design and common constructor data; otherwise, returns the full collection.
72
- *
73
- * Получает текущую структуру свойств.
74
- * Если установлен фокус на дизайн, возвращает только подмножество, соответствующее этому дизайну и общим данным конструктора; в противном случае возвращает полную коллекцию.
75
- */
76
- get(): PropertyList {
77
- if (this.focusDesign) {
78
- const data: PropertyList = {}
79
-
80
- forEach(this.properties, (properties, index) => {
81
- if (
82
- index === UI_KEY_CONSTRUCTOR
83
- || index === this.focusDesign
84
- ) {
85
- data[index] = properties
86
- }
87
- })
88
-
89
- return data
90
- }
91
-
92
- return this.properties
93
- }
94
-
95
- /**
96
- * Returns a list of design names.
97
- *
98
- * Возвращает список названий дизайнов.
99
- */
100
- getDesigns(): string[] {
101
- return Object.keys(this.properties)
102
- }
103
-
104
- /**
105
- * Returns values by index.
106
- *
107
- * Возвращает значения по индексу.
108
- * @param index index for splitting/ индекс для разделения
109
- */
110
- getItem(index: string): PropertyItem | undefined {
111
- const item = this.getInfo(index)?.item
112
-
113
- if (!item) {
114
- console.error('[Items]', `No record: ${index}`)
115
- }
116
-
117
- return item
118
- }
119
-
120
- /**
121
- * Resolves comprehensive metadata for a property element by its dotted index.
122
- * Decodes the index, traverses the tree to find the target node, and synthesizes a detailed info object including parent hierarchy, name normalization, and raw values.
123
- *
124
- * Разрешает полные метаданные элемента свойства по его индексу через точку.
125
- * Декодирует индекс, обходит дерево для поиска целевого узла и синтезирует подробный объект информации, включая иерархию родителей, нормализацию имен и необработанные значения.
126
- * @param index index for splitting / индекс для разделения
127
- */
128
- getInfo(index: string): PropertyItemsItem | undefined {
129
- const keys = this.getKeys(index)
130
- const design = keys.shift() as string
131
- const component = keys.shift() as string
132
- const value = this.properties?.[design]?.value
133
- const parents: PropertyItemsItem['parents'] = [
134
- {
135
- name: design,
136
- item: this.properties?.[design] ?? { value: '' }
137
- }
138
- ]
139
-
140
- if (isObjectNotArray(value)) {
141
- let name: string = component
142
- let item: PropertyItem | undefined = value?.[component]
143
- let parent: PropertyItem | undefined = parents?.[0]?.item
144
-
145
- if (item) {
146
- for (const key of keys) {
147
- parents.push({
148
- name: key,
149
- item
150
- })
151
-
152
- parent = item
153
-
154
- name = key
155
- item = isObjectNotArray(item.value) ? item.value?.[key] : undefined
156
-
157
- if (!item) {
158
- break
159
- }
160
- }
161
- }
162
-
163
- if (item) {
164
- return {
165
- design,
166
- component,
167
- name,
168
- index: this.getIndex(parents),
169
- value: item.value,
170
- item,
171
- parent,
172
- parents
173
- }
174
- }
175
- }
176
-
177
- return undefined
178
- }
179
-
180
- /**
181
- * Divides an index into sections.
182
- *
183
- * Разделяет индекс на разделы.
184
- * @param index index for splitting/ индекс для разделения
185
- */
186
- getKeys(index: string): string[] {
187
- const names = index.replace(/^\{|}$/ig, '')
188
- .split('.')
189
-
190
- return forEach(names, (name) => {
191
- if (name.match(/^&/)) {
192
- return name
193
- }
194
-
195
- return toCamelCase(name)
196
- })
197
- }
198
-
199
- /**
200
- * Returns the name of the property, taking into account the parameter of changing the name.
201
- *
202
- * Возвращает название свойства, учитывая параметр изменения имени.
203
- * @param name name of property/ название свойства
204
- * @param item object of property/ объект свойства
205
- */
206
- getName(name: string, item: PropertyItem): string {
207
- return this.getReName(name, item).replace(/\(.*?$/, '')
208
- }
209
-
210
- /**
211
- * Returns the used name.
212
- *
213
- * Возвращает использованное имя.
214
- * @param name name of property/ название свойства
215
- * @param item object of property/ объект свойства
216
- */
217
- getReName(name: string, item: PropertyItem): string {
218
- return item?.[PropertyKey.name] ?? item?.[PropertyKey.rename] ?? name
219
- }
220
-
221
- /**
222
- * Returns ancestor names.
223
- *
224
- * Возвращает имена предков.
225
- * @param parents array of all ancestor properties along the tree from the top level/
226
- * массив со всеми свойствами предков по дереву от верхнего уровня
227
- * @param variable list of types to exclude, such types are ignored/
228
- * список типов для исключения, такие типы игнорируются
229
- */
230
- getParentsName(
231
- parents: PropertyItemsItem['parents'],
232
- variable?: string[]
233
- ): string[] {
234
- return forEach(parents, ({
235
- name,
236
- item
237
- }) => {
238
- if (
239
- !variable || (
240
- typeof item?.[PropertyKey.variable] === 'string' && (
241
- variable.indexOf(item[PropertyKey.variable]) !== -1
242
- || SUPPORT_NAME.indexOf(item[PropertyKey.variable]) !== -1
243
- )
244
- )
245
- ) {
246
- return toCamelCase(name)
247
- }
248
-
249
- return undefined
250
- }) as string[]
251
- }
252
-
253
- /**
254
- * Returns a list of information about a file list.
255
- *
256
- * Возвращает список информации о списках медиафайлов.
257
- */
258
- getMedia(): PropertyItemsMedia {
259
- const data: PropertyItemsMedia = {}
260
-
261
- this.findCategory(PropertyCategory.media)
262
- .forEach(({
263
- design,
264
- item
265
- }) => {
266
- if (isObjectNotArray(item.value)) {
267
- Object.assign(data, { [design]: item.value })
268
- }
269
- })
270
-
271
- return data
272
- }
273
-
274
- /**
275
- * Replaces labels with design and component names.
276
- *
277
- * Заменяет метки на названия дизайна и компонента.
278
- * @param design design name/ название дизайна
279
- * @param component component name/ название компонента
280
- * @param value values of properties from the value field/ значения свойств из поля value
281
- * @param separator разделитель
282
- */
283
- getLink(
284
- design: string,
285
- component: string,
286
- value: string,
287
- separator = '.'
288
- ): string {
289
- if (value.match(/\?/)) {
290
- return value
291
- .replace(/\?\?(?![ _-])/g, `${design}${separator}${component}${separator}`)
292
- .replace(/\?\?(?=[ _-])/g, `${design}${separator}${component}`)
293
- .replace(/\?/g, `${design}${separator}`)
294
- }
295
-
296
- return this.getLinkByDesign(design, value)
297
- }
298
-
299
- /**
300
- * Get values for links and convert them to accessible code.
301
- *
302
- * Получаем значения для ссылок и преобразуем их в доступный код.
303
- * @param design design name/ название дизайна
304
- * @param component component name/ название компонента
305
- * @param value values of properties from the value field/ значения свойств из поля value
306
- */
307
- getLinkToName(
308
- design: string,
309
- component: string,
310
- value: string
311
- ) {
312
- const link = this.getLink(
313
- design,
314
- component,
315
- value,
316
- '-'
317
- )
318
-
319
- return link.replace(/[a-zA-Z]+/ig, text => toCamelCase(text))
320
- }
321
-
322
- /**
323
- * Get values for links and convert them to accessible code.
324
- *
325
- * Получаем значения для ссылок и преобразуем их в значения для ссылки.
326
- * @param design design name/ название дизайна
327
- * @param component component name/ название компонента
328
- * @param value values of properties from the value field/ значения свойств из поля value
329
- */
330
- getLinkToValue(
331
- design: string,
332
- component: string,
333
- value: string
334
- ) {
335
- const link = this.getLink(
336
- design,
337
- component,
338
- value
339
- )
340
-
341
- return link.replace(/(?<=(?<!#)\{.*?)[a-zA-Z]+(?=.*?})/ig, text => toCamelCase(text))
342
- }
343
-
344
- /**
345
- * Replaces labels with design and component names (for the name).
346
- *
347
- * Заменяет метки на названия дизайна и компонента (для названия).
348
- * @param design design name/ название дизайна
349
- * @param component component name/ название компонента
350
- * @param value values of properties from the value field/ значения свойств из поля value
351
- */
352
- getLinkForName(
353
- design: string,
354
- component: string,
355
- value: string
356
- ) {
357
- return this.getLink(design, component, value, '-')
358
- }
359
-
360
- /**
361
- * Adds the name of the design at the beginning if it is missing.
362
- *
363
- * Добавляет название дизайна в начало, если его нет.
364
- * @param design design name/ название дизайна
365
- * @param value values of properties from the value field/ значения свойств из поля value
366
- */
367
- getLinkByDesign(
368
- design: string,
369
- value: string
370
- ): string {
371
- if (value.match('{')) {
372
- return value?.replace(/(?<=(?<!#)\{)[^.{}]+/g, (name) => {
373
- if (this.getDesigns().indexOf(name) === -1) {
374
- return `${design}.${name}`
375
- }
376
-
377
- return name
378
- })
379
- }
380
-
381
- return value
382
- }
383
-
384
- /**
385
- * Performs a deep recursive traversal of the property tree.
386
- * Executes a callback for every node discovered. If a specific property node is provided, the traversal is restricted to its children; otherwise, the entire tree is visited.
387
- *
388
- * Выполняет глубокий рекурсивный обход дерева свойств.
389
- * Выполняет callback для каждого обнаруженного узла. Если предоставлен конкретный узел свойства, обход ограничивается его дочерними элементами; в противном случае посещается все дерево.
390
- * @param callback the callback function to execute for each element / функция обратного вызова для каждого элемента
391
- * @param property optional start node for traversal / опциональный начальный узел для обхода
392
- */
393
- each<T>(
394
- callback: PropertyItemsCallback<T>,
395
- property?: PropertyItemsItem
396
- ): T[] {
397
- if (property) {
398
- if (isObjectNotArray(property.item.value)) {
399
- return this.read(
400
- callback,
401
- true,
402
- property.design,
403
- property.component,
404
- property.item.value,
405
- property.item,
406
- property.parents
407
- )
408
- }
409
-
410
- return []
411
- }
412
-
413
- return this.read(callback)
414
- }
415
-
416
- /**
417
- * Applies a user function to elements on the current level.
418
- *
419
- * Применяет пользовательскую функцию к элементам на текущем уровне.
420
- * @param callback the callback function is executed for each element/
421
- * выполняется функция обратного вызова (callback) для каждого элемента
422
- * @param property
423
- */
424
- eachMainOnly<T>(
425
- callback: PropertyItemsCallback<T>,
426
- property?: PropertyItemsItem
427
- ): T[] {
428
- if (property) {
429
- if (isObjectNotArray(property.item.value)) {
430
- return this.read(
431
- callback,
432
- false,
433
- property.design,
434
- property.component,
435
- property.item.value,
436
- property.item,
437
- property.parents
438
- )
439
- }
440
-
441
- return []
442
- }
443
-
444
- return this.read(callback, false)
445
- }
446
-
447
- /**
448
- * Search for a record by selected conditions.
449
- *
450
- * Поиск записи по выбранным условиям.
451
- * @param callback function for checking the condition/ функция для проверки условия
452
- */
453
- find(callback: (property: PropertyItemsItem) => boolean): PropertyItemsItem[] {
454
- const data: PropertyItemsItem[] = []
455
-
456
- this.each((property) => {
457
- if (callback(property)) {
458
- data.push(property)
459
- }
460
- })
461
-
462
- return data
463
- }
464
-
465
- /**
466
- * Searching for records with selected categories.
467
- *
468
- * Поиск записей с выделенными категориями.
469
- * @param category names of categories/ названия категорий
470
- */
471
- findCategory(category: string | string[]): PropertyItemsItem[] {
472
- const data: PropertyItemsItem[] = []
473
-
474
- this.each((property) => {
475
- if (isSelected(property.item?.[PropertyKey.category], category)) {
476
- data.push(property)
477
- }
478
- })
479
-
480
- return data
481
- }
482
-
483
- /**
484
- * Searching for records with selected categories.
485
- *
486
- * Поиск записей с выделенными категориями.
487
- * @param variable names of categories/ названия категорий
488
- */
489
- findVariable(variable: string | string[]): PropertyItemsItem[] {
490
- const data: PropertyItemsItem[] = []
491
-
492
- this.each((property) => {
493
- if (isSelected(property.item?.[PropertyKey.variable], variable)) {
494
- data.push(property)
495
- }
496
- })
497
-
498
- return data
499
- }
500
-
501
- /**
502
- * Changes the focused design.
503
- *
504
- * Изменяет фокусированный дизайн.
505
- * @param design
506
- */
507
- setFocusDesign(design: string): this {
508
- this.focusDesign = design
509
- return this
510
- }
511
-
512
- /**
513
- * Saves intermediate data.
514
- *
515
- * Сохраняет промежуточные данные.
516
- * @param name file name/ название файла
517
- */
518
- write(name: string): void {
519
- PropertiesCache.write(`${this.getDesigns().join('-')}-${name}`, this.properties)
520
- }
521
-
522
- /**
523
- * Returns complete information about the property.
524
- *
525
- * Возвращает полную информацию о свойстве.
526
- * @param parents an object with information about properties/ объект с информацией о свойствах
527
- */
528
- private getIndex(parents: PropertyItemsItem['parents']): string {
529
- return `${getColumn(parents, 'name').join('.')}`
530
- }
531
-
532
- /**
533
- * Recursively applies a custom function to each element of the property.
534
- *
535
- * Рекурсивно применяет пользовательскую функцию к каждому элементу свойства.
536
- * @param callback the callback function is executed for each element/
537
- * выполняется функция обратного вызова (callback) для каждого элемента
538
- * @param subItem scan child elements of the current element/ сканировать дочерние элементы текущего элемента
539
- * @param design design name/ название дизайна
540
- * @param component component name/ название компонента
541
- * @param properties object for traversal/ объект для обхода
542
- * @param parent ancestor element/ элемент-предок
543
- * @param parents list of ancestor names/ список названий предков
544
- */
545
- private read<T>(
546
- callback: PropertyItemsCallback<T>,
547
- subItem = true,
548
- design?: string,
549
- component?: string,
550
- properties = this.properties,
551
- parent?: PropertyItem,
552
- parents: PropertyItemsItem['parents'] = []
553
- ): T[] {
554
- const data: T[] = []
555
- let previous: PropertyItem
556
-
557
- forEach(properties, (item, name) => {
558
- if (this.isFocusDesign(name, design)) {
559
- const newDesign = design ?? name
560
- const newComponent = design && (component ?? name)
561
- const newParents = [...parents, {
562
- name,
563
- item
564
- }]
565
-
566
- const value = callback({
567
- design: newDesign,
568
- component: newComponent,
569
- name,
570
- index: this.getIndex(newParents),
571
- value: item.value,
572
- item,
573
- previous,
574
- parent,
575
- parents
576
- })
577
-
578
- if (value !== undefined) {
579
- data.push(value)
580
- }
581
-
582
- if (
583
- subItem
584
- && isObjectNotArray(item.value)
585
- ) {
586
- data.push(
587
- ...this.read(
588
- callback,
589
- subItem,
590
- newDesign,
591
- newComponent,
592
- item.value,
593
- item,
594
- newParents
595
- )
596
- )
597
- }
598
-
599
- previous = item
600
- }
601
- })
602
-
603
- return data
604
- }
605
- }