@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.
- package/CHANGELOG.md +77 -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 +34 -3
- 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 +27 -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-BiLAcdFy.js +232 -0
- package/dist/PropertiesConfig-BKZz_FWW.js +262 -0
- package/{src/config.ts → dist/config.d.ts} +185 -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 +4910 -0
- package/dist/library.js +1568 -0
- package/dist/propertyTypes-C64u6rT3.js +236 -0
- package/package.json +76 -27
- 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,258 +0,0 @@
|
|
|
1
|
-
// export:none
|
|
2
|
-
|
|
3
|
-
import { getNameDirByPaths } from '../../functions/getNameDirByPaths'
|
|
4
|
-
import { useAi } from '../../composables/useAi'
|
|
5
|
-
|
|
6
|
-
import { dirname } from 'node:path'
|
|
7
|
-
import { fileURLToPath } from 'node:url'
|
|
8
|
-
import { hasNativeDirname } from '../../functions/hasNativeDirname'
|
|
9
|
-
|
|
10
|
-
import { PropertiesConfig } from '../Properties/PropertiesConfig'
|
|
11
|
-
import { BuildItem } from '../BuildItem'
|
|
12
|
-
import { ComponentWikiFile } from './ComponentWikiFile'
|
|
13
|
-
|
|
14
|
-
import type { AiAbstract } from '../Ai/AiAbstract'
|
|
15
|
-
|
|
16
|
-
import {
|
|
17
|
-
UI_DIR_TEMPORARY,
|
|
18
|
-
UI_DIR_WIKI,
|
|
19
|
-
UI_DIRS_COMPONENTS
|
|
20
|
-
} from '../../config'
|
|
21
|
-
|
|
22
|
-
const dirnamePath = hasNativeDirname()
|
|
23
|
-
? __dirname
|
|
24
|
-
: dirname(fileURLToPath(import.meta.url))
|
|
25
|
-
|
|
26
|
-
/** Sample templates directory / Директория с шаблонами */
|
|
27
|
-
const DIR_SAMPLE = [dirnamePath, '..', '..', 'media', 'templates', 'prompts']
|
|
28
|
-
/** Sample AI prompt template path / Путь к шаблону AI-промпта */
|
|
29
|
-
const FILE_PROMPT_SAMPLE = [...DIR_SAMPLE, 'componentPrompt.en.txt']
|
|
30
|
-
/** Sample demo component MDX path / Путь к MDX демо-компоненту */
|
|
31
|
-
const FILE_DEMO_SAMPLE = [...DIR_SAMPLE, 'demoComponentEn.mdx']
|
|
32
|
-
/** Marker indicating no changes needed / Метка, указывающая на отсутствие изменений */
|
|
33
|
-
const MARK_FULL = '--FULL--'
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Generates wiki artifacts (code snapshot, stories, mdx) for a component.
|
|
37
|
-
* Uses a temporary build + AI prompt to (re)create documentation.
|
|
38
|
-
*
|
|
39
|
-
* Генерирует wiki-артефакты (снимок кода, stories, mdx) для компонента.
|
|
40
|
-
* Использует временный билд + AI промпт для (пере)создания документации.
|
|
41
|
-
*/
|
|
42
|
-
export class ComponentWiki {
|
|
43
|
-
protected readonly build: BuildItem
|
|
44
|
-
|
|
45
|
-
/** Code file (original or AI regenerated) / Файл кода (оригинал или пересозданный ИИ) */
|
|
46
|
-
protected readonly codeFile: ComponentWikiFile
|
|
47
|
-
/** Types file (original or AI regenerated) / Файл типов (оригинал или пересозданный ИИ) */
|
|
48
|
-
protected readonly typesFile: ComponentWikiFile
|
|
49
|
-
/** Stories file (Storybook) / Файл сторис (Storybook) */
|
|
50
|
-
protected readonly storiesFile: ComponentWikiFile
|
|
51
|
-
/** MDX documentation file / Файл MDX документации */
|
|
52
|
-
protected readonly mdFile: ComponentWikiFile
|
|
53
|
-
|
|
54
|
-
/** AI instance / Экземпляр ИИ */
|
|
55
|
-
protected readonly ai?: AiAbstract
|
|
56
|
-
|
|
57
|
-
/** Description from AI / Описание от ИИ */
|
|
58
|
-
protected description?: string
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Constructor
|
|
62
|
-
* @param path component relative path inside components dirs/ относительный путь компонента внутри директорий компонентов
|
|
63
|
-
* @param prompt additional custom prompt text to append/ дополнительный кастомный текст промпта для добавления
|
|
64
|
-
*/
|
|
65
|
-
constructor(
|
|
66
|
-
protected readonly path: string,
|
|
67
|
-
protected readonly prompt: string = ''
|
|
68
|
-
) {
|
|
69
|
-
this.build = new BuildItem(
|
|
70
|
-
`${this.getRootComponent().join('/')}/index.ts`
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
this.codeFile = new ComponentWikiFile([
|
|
74
|
-
...this.getRootComponent(),
|
|
75
|
-
`${this.getName()}.vue`
|
|
76
|
-
], false, false)
|
|
77
|
-
|
|
78
|
-
this.typesFile = new ComponentWikiFile([
|
|
79
|
-
...this.getRootComponent(),
|
|
80
|
-
'types.ts'
|
|
81
|
-
], false, false)
|
|
82
|
-
|
|
83
|
-
this.storiesFile = new ComponentWikiFile([
|
|
84
|
-
...this.getPathWiki(),
|
|
85
|
-
`${this.getName()}.stories.ts`
|
|
86
|
-
], false, false)
|
|
87
|
-
|
|
88
|
-
this.mdFile = new ComponentWikiFile([
|
|
89
|
-
...this.getPathWiki(),
|
|
90
|
-
`${this.getName()}.mdx`
|
|
91
|
-
], true, false)
|
|
92
|
-
|
|
93
|
-
this.ai = useAi()
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Orchestrates build + file extraction + AI generation.
|
|
98
|
-
*
|
|
99
|
-
* Оркестрирует билд + извлечение файлов + генерацию через ИИ.
|
|
100
|
-
*/
|
|
101
|
-
make(): void {
|
|
102
|
-
console.log('Component wiki:', this.path, '...')
|
|
103
|
-
|
|
104
|
-
if (this.ai) {
|
|
105
|
-
this.build
|
|
106
|
-
.make()
|
|
107
|
-
.then((status) => {
|
|
108
|
-
if (status) {
|
|
109
|
-
this.makeAi()
|
|
110
|
-
this.aiGenerate()
|
|
111
|
-
.then(() => {
|
|
112
|
-
console.log('...', 'End')
|
|
113
|
-
this.build.removeDir()
|
|
114
|
-
})
|
|
115
|
-
} else {
|
|
116
|
-
console.log('Error!', this.path)
|
|
117
|
-
}
|
|
118
|
-
})
|
|
119
|
-
} else {
|
|
120
|
-
console.error('AI is not configured.')
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Returns root path segments for the component.
|
|
126
|
-
*
|
|
127
|
-
* Возвращает сегменты корневого пути компонента.
|
|
128
|
-
* @protected
|
|
129
|
-
*/
|
|
130
|
-
protected getRootComponent(): string[] {
|
|
131
|
-
return [
|
|
132
|
-
...UI_DIRS_COMPONENTS,
|
|
133
|
-
...this.path.split('/')
|
|
134
|
-
]
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Returns wiki directory path segments.
|
|
139
|
-
*
|
|
140
|
-
* Возвращает сегменты пути wiki директории.
|
|
141
|
-
* @protected
|
|
142
|
-
*/
|
|
143
|
-
protected getPathWiki(): string[] {
|
|
144
|
-
return [
|
|
145
|
-
...this.getRootComponent(),
|
|
146
|
-
UI_DIR_WIKI
|
|
147
|
-
]
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Returns temporary directory path segments.
|
|
152
|
-
*
|
|
153
|
-
* Возвращает сегменты пути временной директории.
|
|
154
|
-
* @protected
|
|
155
|
-
*/
|
|
156
|
-
protected getPathTemporary(): string[] {
|
|
157
|
-
return [
|
|
158
|
-
...this.getPathWiki(),
|
|
159
|
-
UI_DIR_TEMPORARY
|
|
160
|
-
]
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Derives component folder name.
|
|
165
|
-
*
|
|
166
|
-
* Получает имя директории компонента.
|
|
167
|
-
* @protected
|
|
168
|
-
*/
|
|
169
|
-
protected getName(): string {
|
|
170
|
-
return String(getNameDirByPaths(this.getRootComponent()))
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Reads the demo file content.
|
|
175
|
-
*
|
|
176
|
-
* Читает содержимое демо-файла.
|
|
177
|
-
* @protected
|
|
178
|
-
*/
|
|
179
|
-
protected readDemo(): string {
|
|
180
|
-
return new ComponentWikiFile(FILE_DEMO_SAMPLE).read()
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Reads the prompt template.
|
|
185
|
-
*
|
|
186
|
-
* Читает шаблон промпта.
|
|
187
|
-
* @protected
|
|
188
|
-
*/
|
|
189
|
-
protected readPrompt(): string {
|
|
190
|
-
return new ComponentWikiFile(FILE_PROMPT_SAMPLE)
|
|
191
|
-
.read()
|
|
192
|
-
.replace(/\[wikiLanguage]/g, PropertiesConfig.getWikiLanguage())
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Prepares context for AI.
|
|
197
|
-
*
|
|
198
|
-
* Подготавливает контекст для ИИ.
|
|
199
|
-
* @protected
|
|
200
|
-
*/
|
|
201
|
-
protected makeAi(): void {
|
|
202
|
-
if (this.ai) {
|
|
203
|
-
this.ai.addContent(`Code: ${this.build.getCode()}`)
|
|
204
|
-
this.ai.addContent(`Original code: ${this.codeFile.read()}`)
|
|
205
|
-
this.ai.addContent(`Original types.ts: ${this.typesFile.read()}`)
|
|
206
|
-
this.ai.addContent(`Demo (only for template analysis, all data is fake): ${this.readDemo()}`)
|
|
207
|
-
this.ai.addContent(`Original *.stories.ts: ${this.storiesFile.read()}`)
|
|
208
|
-
this.ai.addContent(`Original MDX: ${this.mdFile.read()}`)
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Invokes AI generation and splits result into types / stories / mdx.
|
|
214
|
-
*
|
|
215
|
-
* Вызывает генерацию через ИИ и делит результат на types / stories / mdx.
|
|
216
|
-
* @protected
|
|
217
|
-
*/
|
|
218
|
-
protected async aiGenerate(): Promise<void> {
|
|
219
|
-
if (this.ai) {
|
|
220
|
-
const generate = await this.ai.generate(
|
|
221
|
-
this.readPrompt()
|
|
222
|
-
)
|
|
223
|
-
|
|
224
|
-
if (generate) {
|
|
225
|
-
const read = generate.split('#########')
|
|
226
|
-
|
|
227
|
-
if (read?.[0]) {
|
|
228
|
-
this.description = read[0].trim()
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
if (
|
|
232
|
-
read?.[1]
|
|
233
|
-
&& !read[1].match(MARK_FULL)
|
|
234
|
-
) {
|
|
235
|
-
this.codeFile.write(read[1])
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
if (
|
|
239
|
-
read?.[2]
|
|
240
|
-
&& !read[2].match(MARK_FULL)
|
|
241
|
-
) {
|
|
242
|
-
this.typesFile.write(read[2])
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
if (
|
|
246
|
-
read?.[3]
|
|
247
|
-
&& !read[3].match(MARK_FULL)
|
|
248
|
-
) {
|
|
249
|
-
this.storiesFile.write(read[3])
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
if (read?.[4]) {
|
|
253
|
-
this.mdFile.write(read[4])
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
// export:none
|
|
2
|
-
|
|
3
|
-
import { Datetime, isFilled } from '@dxtmisha/functional-basic'
|
|
4
|
-
|
|
5
|
-
import { PropertiesFile } from '../Properties/PropertiesFile'
|
|
6
|
-
|
|
7
|
-
/** Regex to match date in content / Регекс для поиска даты в содержимом */
|
|
8
|
-
const DATE_UPDATED_MATCH = /\*\*Date: (.*?)\.\*\*/i
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Utility class for reading and writing a single wiki component file.
|
|
12
|
-
*
|
|
13
|
-
* Утилитный класс для чтения и записи одного файла wiki компонента.
|
|
14
|
-
*/
|
|
15
|
-
export class ComponentWikiFile {
|
|
16
|
-
/**
|
|
17
|
-
* Constructor.
|
|
18
|
-
*
|
|
19
|
-
* Конструктор.
|
|
20
|
-
* @param paths target file path segments / сегменты пути целевого файла
|
|
21
|
-
* @param isDate whether to extract date from content / извлекать ли дату из содержимого
|
|
22
|
-
* @param isOld whether to keep old version of file / сохранять ли старую версию файла
|
|
23
|
-
*/
|
|
24
|
-
constructor(
|
|
25
|
-
protected readonly paths: string[],
|
|
26
|
-
protected readonly isDate: boolean = false,
|
|
27
|
-
protected readonly isOld: boolean = true
|
|
28
|
-
) {
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Returns absolute path to file.
|
|
33
|
-
*
|
|
34
|
-
* Возвращает абсолютный путь к файлу.
|
|
35
|
-
*/
|
|
36
|
-
getPath(): string {
|
|
37
|
-
return PropertiesFile.joinPath(this.paths)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Returns date from file content.
|
|
42
|
-
*
|
|
43
|
-
* Возвращает дату из содержимого файла.
|
|
44
|
-
*/
|
|
45
|
-
getDate(): Datetime {
|
|
46
|
-
const content = this.read()
|
|
47
|
-
return this.extractDateFromContent(content)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Reads file content as string.
|
|
52
|
-
*
|
|
53
|
-
* Читает содержимое файла как строку.
|
|
54
|
-
*/
|
|
55
|
-
read(): string {
|
|
56
|
-
return PropertiesFile.readFile<string>(this.paths) ?? ''
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Writes content to file.
|
|
61
|
-
*
|
|
62
|
-
* Записывает содержимое в файл.
|
|
63
|
-
* @param content content to write / содержимое для записи
|
|
64
|
-
*/
|
|
65
|
-
write(content: string): void {
|
|
66
|
-
if (isFilled(content)) {
|
|
67
|
-
const contentOld = this.read()
|
|
68
|
-
let contentEdit = content.trim()
|
|
69
|
-
|
|
70
|
-
if (contentEdit.startsWith('```')) {
|
|
71
|
-
contentEdit = contentEdit
|
|
72
|
-
.replace(/^```(ts|md)/, '')
|
|
73
|
-
.replace(/```$/, '')
|
|
74
|
-
.trim()
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (contentEdit !== contentOld.trim()) {
|
|
78
|
-
if (
|
|
79
|
-
this.isOld
|
|
80
|
-
&& isFilled(contentOld.trim())
|
|
81
|
-
) {
|
|
82
|
-
PropertiesFile.writeByPath(
|
|
83
|
-
`${PropertiesFile.joinPath(this.paths)}__old.txt`,
|
|
84
|
-
contentOld
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
PropertiesFile.writeByPath(
|
|
89
|
-
this.paths,
|
|
90
|
-
this.addDate(contentEdit + '\r\n')
|
|
91
|
-
)
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Extracts date from content string.
|
|
98
|
-
*
|
|
99
|
-
* Извлекает дату из строки содержимого.
|
|
100
|
-
* @param content content string / строка содержимого
|
|
101
|
-
* @protected
|
|
102
|
-
*/
|
|
103
|
-
protected extractDateFromContent(content: string): Datetime {
|
|
104
|
-
const match = content.match(DATE_UPDATED_MATCH)
|
|
105
|
-
let date = '1970-01-01'
|
|
106
|
-
|
|
107
|
-
if (
|
|
108
|
-
match
|
|
109
|
-
&& match?.[1]
|
|
110
|
-
) {
|
|
111
|
-
date = match[1]
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return new Datetime(date, 'full')
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Adds current date to content if isDate is true.
|
|
119
|
-
*
|
|
120
|
-
* Добавляет текущую дату в содержимое, если isDate равно true.
|
|
121
|
-
* @param content content string / строка содержимого
|
|
122
|
-
* @protected
|
|
123
|
-
*/
|
|
124
|
-
protected addDate(content: string): string {
|
|
125
|
-
if (this.isDate) {
|
|
126
|
-
const date = new Datetime(new Date(), 'full').standard()
|
|
127
|
-
const dateString = `\n\r**Date: ${date}.**\r\n`
|
|
128
|
-
|
|
129
|
-
if (DATE_UPDATED_MATCH.test(content)) {
|
|
130
|
-
return `${content.replace(DATE_UPDATED_MATCH, '').trim()}\r\n${dateString}`
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return `${content}${dateString}`
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return content
|
|
137
|
-
}
|
|
138
|
-
}
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
// export:none
|
|
2
|
-
|
|
3
|
-
import { dirname } from 'node:path'
|
|
4
|
-
import { fileURLToPath } from 'node:url'
|
|
5
|
-
import { toArray, toCamelCase, toCamelCaseFirst, toKebabCase } from '@dxtmisha/functional-basic'
|
|
6
|
-
import { hasNativeDirname } from '../../functions/hasNativeDirname'
|
|
7
|
-
import { getPackageJson } from '../../functions/getPackageJson'
|
|
8
|
-
|
|
9
|
-
import { PropertiesConfig } from '../Properties/PropertiesConfig'
|
|
10
|
-
import { PropertiesFile } from '../Properties/PropertiesFile'
|
|
11
|
-
import { DesignStructure } from './DesignStructure'
|
|
12
|
-
import { DesignReplace } from './DesignReplace'
|
|
13
|
-
|
|
14
|
-
import { UI_FILE_PACKAGE } from '../../config'
|
|
15
|
-
|
|
16
|
-
const dirnamePath = hasNativeDirname()
|
|
17
|
-
? __dirname
|
|
18
|
-
: dirname(fileURLToPath(import.meta.url))
|
|
19
|
-
|
|
20
|
-
const DIR_SAMPLE = [dirnamePath, '..', '..', 'media', 'templates']
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Base abstract class for generating script files and design system components.
|
|
24
|
-
* Provides unified logic for template reading, data transformation, and file writing.
|
|
25
|
-
*
|
|
26
|
-
* Базовый абстрактный класс для генерации файлов скриптов и компонентов дизайн-системы.
|
|
27
|
-
* Обеспечивает единую логику чтения шаблонов, трансформации данных и записи файлов.
|
|
28
|
-
*/
|
|
29
|
-
export abstract class DesignCommand {
|
|
30
|
-
protected abstract DIR_SAMPLE: string
|
|
31
|
-
protected abstract dir: string[]
|
|
32
|
-
|
|
33
|
-
protected structure?: DesignStructure
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Constructor for DesignCommand.
|
|
37
|
-
*
|
|
38
|
-
* Конструктор для DesignCommand.
|
|
39
|
-
* @param command component name or command identifier / название компонента или идентификатор команды
|
|
40
|
-
* @param options additional key-value parameters / дополнительные параметры ключ-значение
|
|
41
|
-
*/
|
|
42
|
-
protected constructor(
|
|
43
|
-
protected readonly command: string,
|
|
44
|
-
protected readonly options: Record<string, string> = {}
|
|
45
|
-
) {
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Main entry point for executing the command.
|
|
50
|
-
* Validates input and triggers the primary initialization logic.
|
|
51
|
-
*
|
|
52
|
-
* Основная точка входа для выполнения команды.
|
|
53
|
-
* Проверяет входные данные и запускает основную логику инициализации.
|
|
54
|
-
*/
|
|
55
|
-
make(): void {
|
|
56
|
-
if (this.command) {
|
|
57
|
-
console.info(`-- ${PropertiesConfig.getDesignName()}.${this.command}:`)
|
|
58
|
-
|
|
59
|
-
this.initMain()
|
|
60
|
-
|
|
61
|
-
console.info('-- end')
|
|
62
|
-
} else {
|
|
63
|
-
console.info('-- not name')
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Initializes the creation of all files for the current team.
|
|
69
|
-
*
|
|
70
|
-
* Инициализирует создание всех файлов для текущей команды.
|
|
71
|
-
*/
|
|
72
|
-
protected abstract initMain(): void
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Checks the presence of a file.
|
|
76
|
-
*
|
|
77
|
-
* Проверяет наличие файла.
|
|
78
|
-
* @param name file name/ название файла
|
|
79
|
-
*/
|
|
80
|
-
protected isFile(name: string | string[]): boolean {
|
|
81
|
-
return PropertiesFile.is([...this.dir, ...toArray(name)])
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Returns the names for the team.
|
|
86
|
-
*
|
|
87
|
-
* Возвращает названия для команды.
|
|
88
|
-
*/
|
|
89
|
-
protected getCommand(): string {
|
|
90
|
-
return this.command
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
protected getName(): string {
|
|
94
|
-
return toCamelCaseFirst(this.getCommand())
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
protected getNameMin(): string {
|
|
98
|
-
return toCamelCase(this.getCommand())
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
protected getCode(): string {
|
|
102
|
-
return toKebabCase(this.getCommand())
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
protected getFullName(): string {
|
|
106
|
-
return toCamelCaseFirst(`${PropertiesConfig.getDesignName()}-${this.getCommand()}`)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
protected getProjectName(): string {
|
|
110
|
-
return toCamelCaseFirst(PropertiesConfig.getProjectName())
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Returns a structure object.
|
|
115
|
-
*
|
|
116
|
-
* Возвращает объект структуры.
|
|
117
|
-
*/
|
|
118
|
-
protected getStructure(): DesignStructure {
|
|
119
|
-
if (!this.structure) {
|
|
120
|
-
this.structure = new DesignStructure(this.getCommand())
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return this.structure
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Returns an object for template transformation.
|
|
128
|
-
*
|
|
129
|
-
* Возвращает объект для преобразования шаблона.
|
|
130
|
-
* @param sample property template/ шаблон свойства
|
|
131
|
-
*/
|
|
132
|
-
protected getReplace(sample?: string): DesignReplace {
|
|
133
|
-
return new DesignReplace(
|
|
134
|
-
this.getStructure(),
|
|
135
|
-
this.DIR_SAMPLE,
|
|
136
|
-
sample ?? ''
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Reading.
|
|
142
|
-
*
|
|
143
|
-
* Читает файл.
|
|
144
|
-
* @param name file name/ название файла
|
|
145
|
-
*/
|
|
146
|
-
protected read(name: string | string[]): string | undefined {
|
|
147
|
-
return PropertiesFile.readFile<string>([...this.dir, ...toArray(name)])
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* This code reads a template.
|
|
152
|
-
*
|
|
153
|
-
* Читает шаблона.
|
|
154
|
-
* @param name file name/ название файла
|
|
155
|
-
*/
|
|
156
|
-
protected readSample(name: string): string | undefined {
|
|
157
|
-
return PropertiesFile.readFile<string>([...DIR_SAMPLE, this.DIR_SAMPLE, name])
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Reads the file itself or its template if it is not found.
|
|
162
|
-
*
|
|
163
|
-
* Читает сам файл или его шаблон, если его нет.
|
|
164
|
-
* @param name file name/ название файла
|
|
165
|
-
* @param callback the function is executed if there is no such file/ функция выполняется, если такого файла нет
|
|
166
|
-
*/
|
|
167
|
-
protected readDefinable(name: string, callback?: (sample: DesignReplace) => void): DesignReplace {
|
|
168
|
-
const fileName = this.getReplace().getNameFile(name)
|
|
169
|
-
|
|
170
|
-
if (this.isFile(fileName)) {
|
|
171
|
-
return this.getReplace(this.read(fileName))
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const replace = this.getReplace(this.readSample(name))
|
|
175
|
-
|
|
176
|
-
if (callback) {
|
|
177
|
-
callback(replace)
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
replace
|
|
181
|
-
.replaceOnce()
|
|
182
|
-
.replaceName()
|
|
183
|
-
|
|
184
|
-
return replace
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Creating or rewriting a file.
|
|
189
|
-
*
|
|
190
|
-
* Создание или перезапись файла.
|
|
191
|
-
* @param name file name/ название файла
|
|
192
|
-
* @param value values for storage/ значения для хранения
|
|
193
|
-
*/
|
|
194
|
-
protected write(name: string, value: string): void {
|
|
195
|
-
this.console(name)
|
|
196
|
-
|
|
197
|
-
PropertiesFile.write(
|
|
198
|
-
this.dir,
|
|
199
|
-
name,
|
|
200
|
-
value,
|
|
201
|
-
''
|
|
202
|
-
)
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
protected updatePackage(
|
|
206
|
-
namePath: string,
|
|
207
|
-
value: any
|
|
208
|
-
): this {
|
|
209
|
-
const packageFile = getPackageJson()
|
|
210
|
-
let focus: Record<string, any> | any | undefined = packageFile
|
|
211
|
-
|
|
212
|
-
if (packageFile && focus) {
|
|
213
|
-
const names = namePath.split('|')
|
|
214
|
-
const key = names.pop()
|
|
215
|
-
|
|
216
|
-
for (const name of names) {
|
|
217
|
-
if (!(name in focus)) {
|
|
218
|
-
focus[name] = {}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
focus = focus[name]
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
if (key) {
|
|
225
|
-
focus[key] = value
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
PropertiesFile.writeByPath(UI_FILE_PACKAGE, packageFile)
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
return this
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* Outputting data to the console.
|
|
236
|
-
*
|
|
237
|
-
* Вывод данных в консоль.
|
|
238
|
-
* @param name file name/ название файла
|
|
239
|
-
*/
|
|
240
|
-
protected console(name: string): void {
|
|
241
|
-
console.info(`-- ${this.isFile(name) ? 'update' : 'create'} ${name}`)
|
|
242
|
-
}
|
|
243
|
-
}
|