@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.
- package/CHANGELOG.md +57 -0
- package/ai-resources/componentMaterials.md +19 -0
- package/ai-resources/componentPrompt.md +381 -0
- package/ai-resources/componentWiki.md +13 -0
- package/bin/arguments.ts +168 -0
- package/bin/build-packages.ts +12 -2
- package/bin/build-publish-packages.ts +12 -2
- package/bin/design-component.ts +7 -1
- package/bin/design-constructor.ts +22 -3
- package/bin/design-figma.ts +26 -4
- package/bin/design-flags.ts +14 -2
- package/bin/design-library.ts +7 -1
- package/bin/design-package.ts +29 -5
- package/bin/design-prompt.ts +22 -3
- package/bin/design-screenshot.ts +12 -2
- package/bin/design-types-save.ts +32 -5
- package/bin/design-types.ts +32 -6
- package/bin/design-ui.ts +21 -3
- package/bin/design-wiki-storm.ts +11 -3
- package/dist/AiZAi-x3CInynJ.js +232 -0
- package/dist/PropertiesConfig-ChizwW5y.js +250 -0
- package/{src/config.ts → dist/config.d.ts} +179 -158
- package/dist/config.js +20 -0
- package/dist/figmaApiTypes-CArSsNW8.js +6 -0
- package/dist/library-ai.d.ts +482 -0
- package/dist/library-ai.js +2 -0
- package/dist/library-figma.d.ts +462 -0
- package/dist/library-figma.js +75 -0
- package/dist/library-ui.d.ts +586 -0
- package/dist/library-ui.js +3760 -0
- package/dist/library.d.ts +4677 -0
- package/dist/library.js +1436 -0
- package/dist/propertyTypes-DflziKuR.js +236 -0
- package/package.json +69 -20
- package/bin/ai-doc.ts +0 -7
- package/bin/build-functional.ts +0 -5
- package/bin/design-component-wiki.ts +0 -11
- package/src/classes/Ai/AiAbstract.ts +0 -242
- package/src/classes/Ai/AiClaude.ts +0 -26
- package/src/classes/Ai/AiClaudeAgent.ts +0 -16
- package/src/classes/Ai/AiClaudeAgentLite.ts +0 -86
- package/src/classes/Ai/AiClaudeCli.ts +0 -24
- package/src/classes/Ai/AiClaudeCliLite.ts +0 -108
- package/src/classes/Ai/AiClaudeLite.ts +0 -112
- package/src/classes/Ai/AiDoc.ts +0 -81
- package/src/classes/Ai/AiDocItem.ts +0 -27
- package/src/classes/Ai/AiDocItemAbstract.ts +0 -209
- package/src/classes/Ai/AiDocItemClasses.ts +0 -27
- package/src/classes/Ai/AiDocItemComposables.ts +0 -20
- package/src/classes/Ai/AiDocType.ts +0 -45
- package/src/classes/Ai/AiGoogle.ts +0 -26
- package/src/classes/Ai/AiGoogleCli.ts +0 -24
- package/src/classes/Ai/AiGoogleCliLite.ts +0 -108
- package/src/classes/Ai/AiGoogleLite.ts +0 -78
- package/src/classes/Ai/AiOpenAi.ts +0 -26
- package/src/classes/Ai/AiOpenAiLite.ts +0 -107
- package/src/classes/Ai/AiZAi.ts +0 -17
- package/src/classes/Ai/AiZAiLite.ts +0 -77
- package/src/classes/Ai/ApiTmp.ts +0 -43
- package/src/classes/BrowserItem.ts +0 -408
- package/src/classes/Build/BuildFunctional.ts +0 -54
- package/src/classes/Build/BuildPackages.ts +0 -137
- package/src/classes/Build/BuildPublishPackages.ts +0 -105
- package/src/classes/BuildItem.ts +0 -187
- package/src/classes/Component/ComponentCreator.ts +0 -45
- package/src/classes/Component/ComponentItem.ts +0 -161
- package/src/classes/Component/ComponentWiki.ts +0 -258
- package/src/classes/Component/ComponentWikiFile.ts +0 -138
- package/src/classes/Design/DesignCommand.ts +0 -243
- package/src/classes/Design/DesignComponent.ts +0 -824
- package/src/classes/Design/DesignConstructor.ts +0 -222
- package/src/classes/Design/DesignConstructors.ts +0 -101
- package/src/classes/Design/DesignFigma.ts +0 -61
- package/src/classes/Design/DesignFlags.ts +0 -215
- package/src/classes/Design/DesignReplace.ts +0 -672
- package/src/classes/Design/DesignScreenshot.ts +0 -140
- package/src/classes/Design/DesignStructure.ts +0 -201
- package/src/classes/Design/DesignStructureClasses.ts +0 -105
- package/src/classes/Design/DesignStructureItemAbstract.ts +0 -52
- package/src/classes/Design/DesignStructureRead.ts +0 -349
- package/src/classes/Design/DesignStructureStyles.ts +0 -45
- package/src/classes/Design/DesignTypes.ts +0 -94
- package/src/classes/Design/DesignTypesAi.ts +0 -135
- package/src/classes/Design/DesignTypesDescription.ts +0 -121
- package/src/classes/Design/DesignTypesMake.ts +0 -460
- package/src/classes/Design/DesignTypesMcp.ts +0 -90
- package/src/classes/Design/DesignTypesPrompts.ts +0 -332
- package/src/classes/Design/DesignTypescript.ts +0 -244
- package/src/classes/Design/DesignUi.ts +0 -143
- package/src/classes/Design/DesignWiki.ts +0 -52
- package/src/classes/Design/DesignWikiStorm.ts +0 -95
- package/src/classes/Design/DesignWikiStormItem.ts +0 -316
- package/src/classes/FigmaApi.ts +0 -190
- package/src/classes/Git/GitRead.ts +0 -261
- package/src/classes/Library/LibraryAiMcpItem.ts +0 -67
- package/src/classes/Library/LibraryAiPrompt.ts +0 -268
- package/src/classes/Library/LibraryAiPromptItem.ts +0 -331
- package/src/classes/Library/LibraryAiWiki.ts +0 -127
- package/src/classes/Library/LibraryAiWikiItem.ts +0 -79
- package/src/classes/Library/LibraryExport.ts +0 -167
- package/src/classes/Library/LibraryFlags.ts +0 -62
- package/src/classes/Library/LibraryItems.ts +0 -138
- package/src/classes/Library/LibraryList.ts +0 -189
- package/src/classes/Library/LibraryMedia.ts +0 -139
- package/src/classes/Library/LibraryPlugin.ts +0 -73
- package/src/classes/Library/LibraryTypes.ts +0 -130
- package/src/classes/Package/PackageFile.ts +0 -154
- package/src/classes/Package/PackageInit.ts +0 -54
- package/src/classes/Package/PackageItem.ts +0 -329
- package/src/classes/Properties/Properties.ts +0 -175
- package/src/classes/Properties/PropertiesCache.ts +0 -248
- package/src/classes/Properties/PropertiesConfig.ts +0 -213
- package/src/classes/Properties/PropertiesConvector.ts +0 -52
- package/src/classes/Properties/PropertiesFile.ts +0 -522
- package/src/classes/Properties/PropertiesImport.ts +0 -182
- package/src/classes/Properties/PropertiesItems.ts +0 -605
- package/src/classes/Properties/PropertiesKeys.ts +0 -121
- package/src/classes/Properties/PropertiesMain.ts +0 -138
- package/src/classes/Properties/PropertiesPalette.ts +0 -149
- package/src/classes/Properties/PropertiesPath.ts +0 -193
- package/src/classes/Properties/PropertiesScss.ts +0 -261
- package/src/classes/Properties/PropertiesSeparator.ts +0 -118
- package/src/classes/Properties/PropertiesSettings.ts +0 -104
- package/src/classes/Properties/PropertiesStandard.ts +0 -180
- package/src/classes/Properties/PropertiesTool.ts +0 -80
- package/src/classes/Properties/PropertiesTypes.ts +0 -147
- package/src/classes/Properties/PropertiesValues.ts +0 -75
- package/src/classes/Properties/PropertiesWrap.ts +0 -187
- package/src/classes/Properties/convector/convectorColor.ts +0 -27
- package/src/classes/Properties/convector/convectorFontFamilies.ts +0 -18
- package/src/classes/Properties/convector/convectorShadow.ts +0 -61
- package/src/classes/Properties/convector/convectorTypography.ts +0 -19
- package/src/classes/Properties/to/PropertiesToAbstract.ts +0 -51
- package/src/classes/Properties/to/PropertiesToAnimate.ts +0 -59
- package/src/classes/Properties/to/PropertiesToClass.ts +0 -49
- package/src/classes/Properties/to/PropertiesToClone.ts +0 -114
- package/src/classes/Properties/to/PropertiesToComponent.ts +0 -52
- package/src/classes/Properties/to/PropertiesToDrag.ts +0 -231
- package/src/classes/Properties/to/PropertiesToDuplicate.ts +0 -165
- package/src/classes/Properties/to/PropertiesToFull.ts +0 -36
- package/src/classes/Properties/to/PropertiesToLink.ts +0 -259
- package/src/classes/Properties/to/PropertiesToMedia.ts +0 -187
- package/src/classes/Properties/to/PropertiesToMulti.ts +0 -101
- package/src/classes/Properties/to/PropertiesToNone.ts +0 -46
- package/src/classes/Properties/to/PropertiesToPalette.ts +0 -241
- package/src/classes/Properties/to/PropertiesToProperty.ts +0 -31
- package/src/classes/Properties/to/PropertiesToRemove.ts +0 -33
- package/src/classes/Properties/to/PropertiesToReplace.ts +0 -77
- package/src/classes/Properties/to/PropertiesToRoot.ts +0 -40
- package/src/classes/Properties/to/PropertiesToSimilar.ts +0 -128
- package/src/classes/Properties/to/PropertiesToSort.ts +0 -146
- package/src/classes/Properties/to/PropertiesToState.ts +0 -65
- package/src/classes/Properties/to/PropertiesToStyle.ts +0 -52
- package/src/classes/Properties/to/PropertiesToSub.ts +0 -95
- package/src/classes/Properties/to/PropertiesToSubclass.ts +0 -76
- package/src/classes/Properties/to/PropertiesToVar.ts +0 -194
- package/src/classes/Properties/to/PropertiesToVariable.ts +0 -176
- package/src/classes/Styles/Styles.ts +0 -247
- package/src/classes/Styles/StylesClasses.ts +0 -86
- package/src/classes/Styles/StylesProperties.ts +0 -197
- package/src/classes/Styles/StylesRoot.ts +0 -103
- package/src/classes/Styles/StylesTool.ts +0 -112
- package/src/classes/Styles/to/StylesToAbstract.ts +0 -93
- package/src/classes/Styles/to/StylesToAnimate.ts +0 -19
- package/src/classes/Styles/to/StylesToClass.ts +0 -25
- package/src/classes/Styles/to/StylesToClassFull.ts +0 -19
- package/src/classes/Styles/to/StylesToContainer.ts +0 -24
- package/src/classes/Styles/to/StylesToMedia.ts +0 -19
- package/src/classes/Styles/to/StylesToProperty.ts +0 -123
- package/src/classes/Styles/to/StylesToRoot.ts +0 -14
- package/src/classes/Styles/to/StylesToSelector.ts +0 -71
- package/src/classes/Styles/to/StylesToVar.ts +0 -105
- package/src/classes/Styles/to/StylesToVirtual.ts +0 -33
- package/src/composables/useAi.ts +0 -38
- package/src/demo/ai.ts +0 -10
- package/src/functions/getComponentPaths.ts +0 -13
- package/src/functions/getConfigAi.ts +0 -14
- package/src/functions/getConstructorProperties.ts +0 -54
- package/src/functions/getDirname.ts +0 -17
- package/src/functions/getNameDirByPaths.ts +0 -16
- package/src/functions/getPackageJson.ts +0 -19
- package/src/functions/hasNativeDirname.ts +0 -8
- package/src/functions/run.ts +0 -47
- package/src/functions/toPathStandardSep.ts +0 -14
- package/src/library-ai.ts +0 -10
- package/src/library.ts +0 -73
- package/src/media/ai/ai-doc-types.ts +0 -21
- package/src/media/properties/css.ts +0 -634
- package/src/media/properties/cssSelector.ts +0 -74
- package/src/media/properties/cssVirtual.ts +0 -12
- package/src/media/properties/listSort.ts +0 -113
- package/src/media/properties/style.ts +0 -81
- package/src/media/templates/component/DesignComponent.mdx +0 -30
- package/src/media/templates/component/DesignComponent.stories.ts +0 -34
- package/src/media/templates/component/DesignComponent.vue +0 -54
- package/src/media/templates/component/DesignComponentAiWiki.vue +0 -25
- package/src/media/templates/component/index.ts +0 -13
- package/src/media/templates/component/props.ts +0 -27
- package/src/media/templates/component/styleToken.scss +0 -17
- package/src/media/templates/component/wiki.ts +0 -13
- package/src/media/templates/component/wikiData.ts +0 -28
- package/src/media/templates/componentDoc/ComponentDoc.vue +0 -26
- package/src/media/templates/componentDoc/index.ts +0 -12
- package/src/media/templates/componentDoc/materials/README.md +0 -8
- package/src/media/templates/componentDoc/materials/prompt.md +0 -38
- package/src/media/templates/componentDoc/subcomponents/_.gitignore.txt +0 -0
- package/src/media/templates/componentDoc/types.ts +0 -15
- package/src/media/templates/componentDoc/wiki/ComponentDoc.mdx +0 -13
- package/src/media/templates/componentDoc/wiki/ComponentDoc.stories.ts +0 -24
- package/src/media/templates/componentDoc/wiki/prompt.md +0 -41
- package/src/media/templates/constructors/Constructors.ts +0 -33
- package/src/media/templates/constructors/ConstructorsDesign.tsx +0 -129
- package/src/media/templates/constructors/basicTypes.ts +0 -0
- package/src/media/templates/constructors/index.ts +0 -5
- package/src/media/templates/constructors/props.ts +0 -28
- package/src/media/templates/constructors/style.scss +0 -5
- package/src/media/templates/constructors/types.ts +0 -47
- package/src/media/templates/packages/figma/README.md +0 -1
- package/src/media/templates/packages/figma/_.gitignore.txt +0 -29
- package/src/media/templates/packages/figma/ai.sample.config.ts +0 -2
- package/src/media/templates/packages/figma/design.config.json +0 -3
- package/src/media/templates/packages/figma/index.html +0 -12
- package/src/media/templates/packages/figma/manifest.json +0 -25
- package/src/media/templates/packages/figma/package.json +0 -37
- package/src/media/templates/packages/figma/src/App.vue +0 -9
- package/src/media/templates/packages/figma/src/classes/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/code.ts +0 -16
- package/src/media/templates/packages/figma/src/components/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/composables/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/config.ts +0 -0
- package/src/media/templates/packages/figma/src/functions/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/library.ts +0 -0
- package/src/media/templates/packages/figma/src/main.ts +0 -4
- package/src/media/templates/packages/figma/src/media/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/storybook/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/types/_.gitignore.txt +0 -1
- package/src/media/templates/packages/figma/src/vite-env.d.ts +0 -1
- package/src/media/templates/packages/figma/tsconfig.app.json +0 -12
- package/src/media/templates/packages/figma/tsconfig.json +0 -7
- package/src/media/templates/packages/figma/tsconfig.node.json +0 -8
- package/src/media/templates/packages/figma/vite.config.ts +0 -7
- package/src/media/templates/packages/library/README.md +0 -1
- package/src/media/templates/packages/library/_.gitignore.txt +0 -27
- package/src/media/templates/packages/library/ai-description.md +0 -15
- package/src/media/templates/packages/library/design.config.json +0 -3
- package/src/media/templates/packages/library/index.html +0 -12
- package/src/media/templates/packages/library/materials/README.md +0 -8
- package/src/media/templates/packages/library/materials/prompt.md +0 -45
- package/src/media/templates/packages/library/package.json +0 -46
- package/src/media/templates/packages/library/src/App.vue +0 -8
- package/src/media/templates/packages/library/src/classes/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/components/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/composables/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/functions/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/library.ts +0 -0
- package/src/media/templates/packages/library/src/main.ts +0 -6
- package/src/media/templates/packages/library/src/style.scss +0 -0
- package/src/media/templates/packages/library/src/types/_.gitignore.txt +0 -1
- package/src/media/templates/packages/library/src/vite-env.d.ts +0 -1
- package/src/media/templates/packages/library/tsconfig.app.json +0 -11
- package/src/media/templates/packages/library/tsconfig.json +0 -7
- package/src/media/templates/packages/library/tsconfig.node.json +0 -7
- package/src/media/templates/packages/library/vite.config.ts +0 -14
- package/src/media/templates/packages/nitro/README.md +0 -1
- package/src/media/templates/packages/nitro/_.gitignore.txt +0 -28
- package/src/media/templates/packages/nitro/index.html +0 -2
- package/src/media/templates/packages/nitro/package.json +0 -25
- package/src/media/templates/packages/nitro/server/plugins/ui-plugin.ts +0 -7
- package/src/media/templates/packages/nitro/server/routes/api/hello.ts +0 -13
- package/src/media/templates/packages/nitro/src/App.vue +0 -10
- package/src/media/templates/packages/nitro/src/assets/_.gitignore.txt +0 -0
- package/src/media/templates/packages/nitro/src/components/_.gitignore.txt +0 -0
- package/src/media/templates/packages/nitro/src/composables/_.gitignore.txt +0 -0
- package/src/media/templates/packages/nitro/src/entry-client.ts +0 -13
- package/src/media/templates/packages/nitro/src/entry-server.ts +0 -29
- package/src/media/templates/packages/nitro/src/main.ts +0 -14
- package/src/media/templates/packages/nitro/src/pages/HomePage.vue +0 -8
- package/src/media/templates/packages/nitro/src/router.ts +0 -11
- package/src/media/templates/packages/nitro/src/style.scss +0 -0
- package/src/media/templates/packages/nitro/src/templates/main.html +0 -21
- package/src/media/templates/packages/nitro/src/vite-env.d.ts +0 -11
- package/src/media/templates/packages/nitro/tsconfig.app.json +0 -14
- package/src/media/templates/packages/nitro/tsconfig.json +0 -7
- package/src/media/templates/packages/nitro/tsconfig.node.json +0 -12
- package/src/media/templates/packages/nitro/vite.config.ts +0 -17
- package/src/media/templates/packages/project/README.md +0 -1
- package/src/media/templates/packages/project/_.gitignore.txt +0 -28
- package/src/media/templates/packages/project/design.config.json +0 -3
- package/src/media/templates/packages/project/index.html +0 -12
- package/src/media/templates/packages/project/materials/README.md +0 -8
- package/src/media/templates/packages/project/materials/prompt.md +0 -41
- package/src/media/templates/packages/project/package.json +0 -13
- package/src/media/templates/packages/project/public/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/App.vue +0 -12
- package/src/media/templates/packages/project/src/assets/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/components/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/composables/_.gitignore.txt +0 -0
- package/src/media/templates/packages/project/src/main.ts +0 -6
- package/src/media/templates/packages/project/src/style.scss +0 -0
- package/src/media/templates/packages/project/src/vite-env.d.ts +0 -1
- package/src/media/templates/packages/project/tsconfig.app.json +0 -11
- package/src/media/templates/packages/project/tsconfig.json +0 -7
- package/src/media/templates/packages/project/tsconfig.node.json +0 -7
- package/src/media/templates/packages/project/vite.config.ts +0 -7
- package/src/media/templates/prompts/aiCodeGlobalPrompt.en.md +0 -22
- package/src/media/templates/prompts/aiCodeGlobalPrompt.ru.md +0 -21
- package/src/media/templates/prompts/aiCodeVuePrompt.en.md +0 -17
- package/src/media/templates/prompts/aiCodeVuePrompt.ru.md +0 -17
- package/src/media/templates/prompts/aiDocClassPrompt.en.txt +0 -63
- package/src/media/templates/prompts/aiDocClassPrompt.ru.txt +0 -63
- package/src/media/templates/prompts/aiDocComposablePrompt.en.txt +0 -67
- package/src/media/templates/prompts/aiDocComposablePrompt.ru.txt +0 -67
- package/src/media/templates/prompts/aiDocFunctionPrompt.en.txt +0 -57
- package/src/media/templates/prompts/aiDocFunctionPrompt.ru.txt +0 -57
- package/src/media/templates/prompts/componentPrompt.en.txt +0 -182
- package/src/media/templates/prompts/componentPrompt.ru.txt +0 -182
- package/src/media/templates/prompts/demoClassEn.mdx +0 -111
- package/src/media/templates/prompts/demoClassRu.mdx +0 -111
- package/src/media/templates/prompts/demoComponentEn.mdx +0 -282
- package/src/media/templates/prompts/demoComponentRu.mdx +0 -282
- package/src/media/templates/prompts/demoComposableEn.mdx +0 -103
- package/src/media/templates/prompts/demoComposableRu.mdx +0 -103
- package/src/media/templates/prompts/demoDocEn.mdx +0 -30
- package/src/media/templates/prompts/demoDocRu.mdx +0 -30
- package/src/media/templates/viteComponentTemplateConfig.ts +0 -14
- package/src/types/aiTypes.ts +0 -19
- package/src/types/configTypes.ts +0 -69
- package/src/types/designTypes.ts +0 -167
- package/src/types/figmaApiTypes.ts +0 -337
- package/src/types/gitTypes.ts +0 -59
- package/src/types/libraryTypes.ts +0 -49
- package/src/types/propertyTypes.ts +0 -586
- package/src/types/screenshotTypes.ts +0 -55
- package/src/types/webTypes.ts +0 -134
- 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
|
-
}
|