@azure-net/cli 2.3.63 → 4.0.0-1

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 (117) hide show
  1. package/.prettierrc +7 -0
  2. package/bin/azure-net.js +278 -157
  3. package/bin/azure-net.ts +284 -0
  4. package/eslint.config.js +34 -0
  5. package/package.json +12 -5
  6. package/src/checks/checkDomain.js +201 -0
  7. package/src/checks/checkDomain.ts +213 -0
  8. package/src/checks/checkFoldersStructure.js +70 -0
  9. package/src/checks/checkFoldersStructure.ts +85 -0
  10. package/src/checks/checkInternal.js +35 -0
  11. package/src/checks/checkInternal.ts +40 -0
  12. package/src/checks/checkLayerBoundaries.js +178 -0
  13. package/src/checks/checkLayerBoundaries.ts +189 -0
  14. package/src/checks/checkPresenterNames.js +202 -0
  15. package/src/checks/checkPresenterNames.ts +208 -0
  16. package/src/checks/checkProject.js +42 -0
  17. package/src/checks/checkProject.ts +45 -0
  18. package/src/checks/checkProviderNames.js +158 -0
  19. package/src/checks/checkProviderNames.ts +165 -0
  20. package/src/checks/index.js +7 -0
  21. package/src/checks/index.ts +7 -0
  22. package/src/generate/layers/generateRepository.js +124 -0
  23. package/src/generate/layers/generateRepository.ts +123 -0
  24. package/src/generate/layers/generateRepositoryMethod.js +102 -0
  25. package/src/generate/layers/generateRepositoryMethod.ts +102 -0
  26. package/src/generate/layers/generateUseCases.js +50 -0
  27. package/src/generate/layers/generateUseCases.ts +50 -0
  28. package/src/generate/layers/repositoryShared.js +569 -0
  29. package/src/generate/layers/repositoryShared.ts +657 -0
  30. package/src/generate/module/generateDomain.js +146 -0
  31. package/src/generate/module/generateDomain.ts +147 -0
  32. package/src/generate/module/generateModule.js +84 -0
  33. package/src/generate/module/generateModule.ts +84 -0
  34. package/src/generate/module/generateModulePreset.js +307 -0
  35. package/src/generate/module/generateModulePreset.ts +337 -0
  36. package/src/generate/module/generatePresenter.js +419 -0
  37. package/src/generate/module/generatePresenter.ts +442 -0
  38. package/src/generate/module/generateRepository.js +144 -0
  39. package/src/generate/module/generateRepository.ts +158 -0
  40. package/src/generate/module/generateSchemaFromType.js +358 -0
  41. package/src/generate/module/generateSchemaFromType.ts +369 -0
  42. package/src/generate/module/generateTypesJson.js +252 -0
  43. package/src/generate/module/generateTypesJson.ts +259 -0
  44. package/src/generate/module/generateUseCases.js +67 -0
  45. package/src/generate/module/generateUseCases.ts +67 -0
  46. package/src/generate/module/repositoryModuleShared.js +598 -0
  47. package/src/generate/module/repositoryModuleShared.ts +661 -0
  48. package/src/generate/ui/generateComponent.js +98 -0
  49. package/src/generate/ui/generateComponent.ts +100 -0
  50. package/src/generate/ui/generateDesignComponent.js +71 -0
  51. package/src/generate/ui/generateDesignComponent.ts +71 -0
  52. package/src/generate/ui/generateWidget.js +71 -0
  53. package/src/generate/ui/generateWidget.ts +71 -0
  54. package/src/init/initAliases.js +159 -0
  55. package/src/init/initAliases.ts +167 -0
  56. package/src/init/initEdges.js +74 -0
  57. package/src/init/initEdges.ts +74 -0
  58. package/src/init/initStructure.js +122 -0
  59. package/src/init/initStructure.ts +124 -0
  60. package/src/install/installFresh.js +101 -0
  61. package/src/install/installFresh.ts +101 -0
  62. package/src/plugins/addLint.js +257 -0
  63. package/src/plugins/addLint.ts +274 -0
  64. package/src/plugins/index.js +1 -0
  65. package/src/plugins/index.ts +1 -0
  66. package/src/scaffolds/createCoreMiddleware.js +27 -0
  67. package/src/scaffolds/createCoreMiddleware.ts +27 -0
  68. package/src/scaffolds/createCoreSchema.js +141 -0
  69. package/src/scaffolds/createCoreSchema.ts +142 -0
  70. package/src/scaffolds/createDatasource.js +173 -0
  71. package/src/scaffolds/createDatasource.ts +175 -0
  72. package/src/scaffolds/createDatasourceProvider.js +164 -0
  73. package/src/scaffolds/createDatasourceProvider.ts +175 -0
  74. package/src/scaffolds/createMiddleware.js +105 -0
  75. package/src/scaffolds/createMiddleware.ts +105 -0
  76. package/src/scaffolds/createPresenterFactory.js +112 -0
  77. package/src/scaffolds/createPresenterFactory.ts +114 -0
  78. package/src/scaffolds/createResponse.js +64 -0
  79. package/src/scaffolds/createResponse.ts +64 -0
  80. package/src/scaffolds/createSchemaRule.js +40 -0
  81. package/src/scaffolds/createSchemaRule.ts +42 -0
  82. package/src/scaffolds/createTranslationManager.js +78 -0
  83. package/src/scaffolds/createTranslationManager.ts +78 -0
  84. package/src/scaffolds/index.js +9 -0
  85. package/src/scaffolds/index.ts +9 -0
  86. package/src/utils/contextUtils.js +56 -49
  87. package/src/utils/contextUtils.ts +89 -0
  88. package/src/utils/fileUtils.js +72 -84
  89. package/src/utils/fileUtils.ts +100 -0
  90. package/src/utils/loadConfig.js +57 -13
  91. package/src/utils/loadConfig.ts +69 -0
  92. package/tsconfig.json +19 -0
  93. package/src/commands/generate/generateComponent.js +0 -53
  94. package/src/commands/generate/generateCrudBase.js +0 -207
  95. package/src/commands/generate/generateCrudPresenter.js +0 -232
  96. package/src/commands/generate/generateDatasource.js +0 -84
  97. package/src/commands/generate/generateDesignComponent.js +0 -53
  98. package/src/commands/generate/generateModule.js +0 -31
  99. package/src/commands/generate/generateModuleBase.js +0 -152
  100. package/src/commands/generate/generateModulePresenter.js +0 -110
  101. package/src/commands/generate/generatePresenter.js +0 -86
  102. package/src/commands/generate/generateRepository.js +0 -76
  103. package/src/commands/generate/generateResponse.js +0 -41
  104. package/src/commands/generate/generateSchema.js +0 -96
  105. package/src/commands/generate/generateService.js +0 -71
  106. package/src/commands/generate/generateWidget.js +0 -53
  107. package/src/commands/generate/index.js +0 -14
  108. package/src/commands/init/index.js +0 -9
  109. package/src/commands/init/initAliases.js +0 -52
  110. package/src/commands/init/initEdges.js +0 -42
  111. package/src/commands/init/initLint.js +0 -138
  112. package/src/commands/init/initMiddleware.js +0 -21
  113. package/src/commands/init/initPresenter.js +0 -25
  114. package/src/commands/init/initSchema.js +0 -22
  115. package/src/commands/init/initStructure.js +0 -140
  116. package/src/commands/init/initTranslations.js +0 -59
  117. package/src/commands/init/migrateStructure.js +0 -144
@@ -0,0 +1,102 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import prompts from 'prompts';
4
+ import {
5
+ appendRepositoryMethod,
6
+ ensureDomainType,
7
+ ensureRepositoryInterfaceFile,
8
+ getAvailableTsNames,
9
+ getConfigState,
10
+ getRepositoryMeta,
11
+ parseRepositoryMethods,
12
+ resolveContextAlias,
13
+ resolveRepositoriesPath,
14
+ selectContext,
15
+ promptMethodDefinition
16
+ } from './repositoryShared.js';
17
+
18
+ export default async function generateRepositoryMethod(): Promise<void> {
19
+ const contextName = await selectContext('Select context for repository method:');
20
+ if (!contextName) {
21
+ process.exitCode = 1;
22
+ return;
23
+ }
24
+
25
+ const repositoriesPath = resolveRepositoriesPath(contextName);
26
+ const repositories = await getAvailableTsNames(repositoriesPath);
27
+ if (!repositories.length) {
28
+ console.error(`❌ No repositories found in ${repositoriesPath}`);
29
+ process.exitCode = 1;
30
+ return;
31
+ }
32
+
33
+ const { repositoryName } = await prompts({
34
+ type: 'select',
35
+ name: 'repositoryName',
36
+ message: 'Select repository:',
37
+ choices: repositories.map((name: string) => ({ title: name, value: name })),
38
+ initial: 0
39
+ });
40
+
41
+ if (!repositoryName) {
42
+ process.exitCode = 1;
43
+ return;
44
+ }
45
+
46
+ const meta = getRepositoryMeta(String(repositoryName));
47
+ const repositoryPath = path.join(repositoriesPath, `${meta.className}.ts`);
48
+ const method = await promptMethodDefinition();
49
+
50
+ const ensuredResponseType = await ensureDomainType({
51
+ contextName,
52
+ domainName: meta.domainName,
53
+ typeName: method.responseType,
54
+ layer: method.responseLayer
55
+ });
56
+ method.responseType = ensuredResponseType.interfaceName;
57
+ method.responseLayer = ensuredResponseType.layer;
58
+
59
+ if (method.requestType) {
60
+ const ensuredRequestType = await ensureDomainType({
61
+ contextName,
62
+ domainName: meta.domainName,
63
+ typeName: method.requestType,
64
+ layer: method.requestLayer ?? 'ports'
65
+ });
66
+ method.requestType = ensuredRequestType.interfaceName;
67
+ method.requestLayer = ensuredRequestType.layer;
68
+ }
69
+
70
+ let repositoryContent = '';
71
+ try {
72
+ repositoryContent = await fs.readFile(repositoryPath, 'utf-8');
73
+ } catch {
74
+ console.error(`❌ Repository file not found: ${repositoryPath}`);
75
+ process.exitCode = 1;
76
+ return;
77
+ }
78
+
79
+ const existingMethods = parseRepositoryMethods(repositoryContent);
80
+ if (existingMethods.some((item) => item.name === method.name)) {
81
+ console.warn(`⚠️ Method "${method.name}" already exists in ${meta.className}.`);
82
+ process.exitCode = 1;
83
+ return;
84
+ }
85
+
86
+ const { contexts } = await getConfigState();
87
+ const contextAlias = resolveContextAlias(contexts, contextName);
88
+ await appendRepositoryMethod({
89
+ repositoryPath,
90
+ method,
91
+ contextAlias,
92
+ domainName: meta.domainName
93
+ });
94
+
95
+ await ensureRepositoryInterfaceFile({
96
+ contextName,
97
+ meta,
98
+ methods: [...existingMethods, method]
99
+ });
100
+
101
+ console.log(`✅ Method "${method.name}" added to ${meta.className}`);
102
+ }
@@ -0,0 +1,50 @@
1
+ import prompts from 'prompts';
2
+ import {
3
+ ensureUseCasesFile,
4
+ getAvailableTsNames,
5
+ getConfigState,
6
+ getRepositoryMeta,
7
+ resolveContextAlias,
8
+ resolveRepositoriesPath,
9
+ selectContext
10
+ } from './repositoryShared.js';
11
+
12
+ export default async function generateUseCases() {
13
+ const contextName = await selectContext('Select context for UseCases:');
14
+ if (!contextName) {
15
+ process.exitCode = 1;
16
+ return;
17
+ }
18
+
19
+ const repositoriesPath = resolveRepositoriesPath(contextName);
20
+ const repositories = await getAvailableTsNames(repositoriesPath);
21
+ if (!repositories.length) {
22
+ console.error(`❌ No repositories found in ${repositoriesPath}`);
23
+ process.exitCode = 1;
24
+ return;
25
+ }
26
+
27
+ const { repositoryName } = await prompts({
28
+ type: 'select',
29
+ name: 'repositoryName',
30
+ message: 'Select repository:',
31
+ choices: repositories.map((name) => ({ title: name, value: name })),
32
+ initial: 0
33
+ });
34
+
35
+ if (!repositoryName) {
36
+ process.exitCode = 1;
37
+ return;
38
+ }
39
+
40
+ const { contexts } = await getConfigState();
41
+ const contextAlias = resolveContextAlias(contexts, contextName);
42
+ const meta = getRepositoryMeta(String(repositoryName));
43
+ const created = await ensureUseCasesFile({ contextName, contextAlias, meta });
44
+ if (!created) {
45
+ process.exitCode = 1;
46
+ return;
47
+ }
48
+
49
+ console.log(`✅ UseCases generated: ${meta.useCasesClassName}`);
50
+ }
@@ -0,0 +1,50 @@
1
+ import prompts from 'prompts';
2
+ import {
3
+ ensureUseCasesFile,
4
+ getAvailableTsNames,
5
+ getConfigState,
6
+ getRepositoryMeta,
7
+ resolveContextAlias,
8
+ resolveRepositoriesPath,
9
+ selectContext
10
+ } from './repositoryShared.js';
11
+
12
+ export default async function generateUseCases(): Promise<void> {
13
+ const contextName = await selectContext('Select context for UseCases:');
14
+ if (!contextName) {
15
+ process.exitCode = 1;
16
+ return;
17
+ }
18
+
19
+ const repositoriesPath = resolveRepositoriesPath(contextName);
20
+ const repositories = await getAvailableTsNames(repositoriesPath);
21
+ if (!repositories.length) {
22
+ console.error(`❌ No repositories found in ${repositoriesPath}`);
23
+ process.exitCode = 1;
24
+ return;
25
+ }
26
+
27
+ const { repositoryName } = await prompts({
28
+ type: 'select',
29
+ name: 'repositoryName',
30
+ message: 'Select repository:',
31
+ choices: repositories.map((name: string) => ({ title: name, value: name })),
32
+ initial: 0
33
+ });
34
+
35
+ if (!repositoryName) {
36
+ process.exitCode = 1;
37
+ return;
38
+ }
39
+
40
+ const { contexts } = await getConfigState();
41
+ const contextAlias = resolveContextAlias(contexts, contextName);
42
+ const meta = getRepositoryMeta(String(repositoryName));
43
+ const created = await ensureUseCasesFile({ contextName, contextAlias, meta });
44
+ if (!created) {
45
+ process.exitCode = 1;
46
+ return;
47
+ }
48
+
49
+ console.log(`✅ UseCases generated: ${meta.useCasesClassName}`);
50
+ }