@azure-net/cli 5.0.0-1 → 5.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.
Files changed (71) hide show
  1. package/bin/azure-net.js +12 -45
  2. package/bin/azure-net.ts +13 -5
  3. package/package.json +1 -1
  4. package/src/checks/checkDomain.js +8 -38
  5. package/src/checks/checkFoldersStructure.js +0 -14
  6. package/src/checks/checkHooks.js +0 -5
  7. package/src/checks/checkImports.js +0 -1
  8. package/src/checks/checkInternal.js +2 -1
  9. package/src/checks/checkInternal.ts +2 -0
  10. package/src/checks/checkLayerBoundaries.js +50 -54
  11. package/src/checks/checkLayerBoundaries.ts +55 -58
  12. package/src/checks/checkLayerImports.js +136 -0
  13. package/src/checks/checkLayerImports.ts +185 -0
  14. package/src/checks/checkPresenterNames.js +1 -37
  15. package/src/checks/checkPresenterNames.ts +1 -6
  16. package/src/checks/checkProject.js +0 -6
  17. package/src/checks/checkProviderGraph.js +1 -38
  18. package/src/checks/checkProviderNames.js +0 -28
  19. package/src/checks/index.js +1 -1
  20. package/src/checks/index.ts +1 -0
  21. package/src/generate/layers/generateRepository.js +4 -19
  22. package/src/generate/layers/generateRepositoryMethod.js +0 -12
  23. package/src/generate/layers/generateUseCases.js +0 -6
  24. package/src/generate/layers/repositoryShared.js +41 -104
  25. package/src/generate/layers/repositoryShared.ts +17 -12
  26. package/src/generate/module/generateDomain.js +0 -25
  27. package/src/generate/module/generateModule.js +0 -10
  28. package/src/generate/module/generateModulePreset.js +10 -51
  29. package/src/generate/module/generateModulePreset.ts +9 -8
  30. package/src/generate/module/generatePresenter.js +29 -76
  31. package/src/generate/module/generatePresenter.ts +15 -10
  32. package/src/generate/module/generateRepository.js +0 -17
  33. package/src/generate/module/generateSchemaFromType.js +9 -58
  34. package/src/generate/module/generateSchemaFromType.ts +1 -2
  35. package/src/generate/module/generateTypesJson.js +4 -45
  36. package/src/generate/module/generateUseCases.js +0 -9
  37. package/src/generate/module/repositoryModuleShared.js +21 -98
  38. package/src/generate/module/repositoryModuleShared.ts +14 -10
  39. package/src/generate/ui/generateComponent.js +0 -16
  40. package/src/generate/ui/generateDesignComponent.js +0 -12
  41. package/src/generate/ui/generateWidget.js +0 -12
  42. package/src/init/initAliases.js +42 -64
  43. package/src/init/initAliases.ts +47 -42
  44. package/src/init/initEdges.js +0 -15
  45. package/src/init/initStructure.js +48 -21
  46. package/src/init/initStructure.ts +51 -3
  47. package/src/install/installFresh.js +0 -16
  48. package/src/plugins/addLint.js +11 -46
  49. package/src/scaffolds/createCoreSchema.js +6 -40
  50. package/src/scaffolds/createCoreSchema.ts +6 -18
  51. package/src/scaffolds/createDatasource.js +26 -61
  52. package/src/scaffolds/createDatasource.ts +26 -40
  53. package/src/scaffolds/createDatasourceProvider.js +19 -56
  54. package/src/scaffolds/createDatasourceProvider.ts +20 -34
  55. package/src/scaffolds/createPresenterFactory.js +5 -34
  56. package/src/scaffolds/createPresenterFactory.ts +5 -17
  57. package/src/scaffolds/createProgram.js +1 -5
  58. package/src/scaffolds/createResponse.js +3 -11
  59. package/src/scaffolds/createResponse.ts +3 -1
  60. package/src/scaffolds/createSchemaRule.js +3 -8
  61. package/src/scaffolds/createSchemaRule.ts +3 -1
  62. package/src/scaffolds/createTranslationManager.js +3 -14
  63. package/src/scaffolds/createTranslationManager.ts +3 -1
  64. package/src/utils/contextUtils.js +5 -20
  65. package/src/utils/contextUtils.ts +2 -3
  66. package/src/utils/fileUtils.js +3 -38
  67. package/src/utils/fileUtils.ts +0 -26
  68. package/src/utils/loadConfig.js +1 -14
  69. package/src/utils/loadConfig.ts +1 -3
  70. package/src/utils/sharedFoundation.js +48 -0
  71. package/src/utils/sharedFoundation.ts +70 -0
@@ -16,7 +16,6 @@ import {
16
16
  promptMethodDefinition
17
17
  } from './repositoryShared.js';
18
18
  import { updateIndexTs, writeIfNotExists } from '../../utils/fileUtils.js';
19
-
20
19
  export default async function generateRepository() {
21
20
  const { rawName } = await prompts({
22
21
  type: 'text',
@@ -24,7 +23,6 @@ export default async function generateRepository() {
24
23
  message: 'Repository name:',
25
24
  validate: (value) => (String(value ?? '').trim().length > 0 ? true : 'Repository name is required')
26
25
  });
27
-
28
26
  const className = ensureRepositoryName(rawName);
29
27
  const meta = getRepositoryMeta(className);
30
28
  const contextName = await selectContext('Select context for repository:');
@@ -32,13 +30,11 @@ export default async function generateRepository() {
32
30
  process.exitCode = 1;
33
31
  return;
34
32
  }
35
-
36
33
  const datasource = await selectDatasource(contextName);
37
34
  if (!datasource) {
38
35
  process.exitCode = 1;
39
36
  return;
40
37
  }
41
-
42
38
  const { methodsCountRaw } = await prompts({
43
39
  type: 'number',
44
40
  name: 'methodsCountRaw',
@@ -46,30 +42,25 @@ export default async function generateRepository() {
46
42
  initial: 1,
47
43
  min: 0
48
44
  });
49
-
50
45
  const methodsCount = Number(methodsCountRaw ?? 0);
51
46
  if (!Number.isFinite(methodsCount) || methodsCount < 0) {
52
47
  console.error('❌ Invalid methods count.');
53
48
  process.exitCode = 1;
54
49
  return;
55
50
  }
56
-
57
51
  const methods = [];
58
52
  for (let index = 0; index < methodsCount; index += 1) {
59
53
  console.log(`\n🧩 Method ${index + 1} of ${methodsCount}`);
60
- // eslint-disable-next-line no-await-in-loop
61
54
  const method = await promptMethodDefinition();
62
55
  methods.push(method);
63
56
  }
64
-
65
57
  const { contexts } = await getConfigState();
66
58
  const contextAlias = resolveContextAlias(contexts, contextName);
67
59
  const repositoriesPath = resolveRepositoriesPath(contextName);
68
60
  await fs.mkdir(repositoriesPath, { recursive: true });
69
61
  const repositoryPath = path.join(repositoriesPath, `${meta.className}.ts`);
70
-
71
62
  for (const method of methods) {
72
- // eslint-disable-next-line no-await-in-loop
63
+ if (!method) continue;
73
64
  const ensuredResponseType = await ensureDomainType({
74
65
  contextName,
75
66
  domainName: meta.domainName,
@@ -78,9 +69,7 @@ export default async function generateRepository() {
78
69
  });
79
70
  method.responseType = ensuredResponseType.interfaceName;
80
71
  method.responseLayer = ensuredResponseType.layer;
81
-
82
72
  if (method.requestType) {
83
- // eslint-disable-next-line no-await-in-loop
84
73
  const ensuredRequestType = await ensureDomainType({
85
74
  contextName,
86
75
  domainName: meta.domainName,
@@ -91,16 +80,15 @@ export default async function generateRepository() {
91
80
  method.requestLayer = ensuredRequestType.layer;
92
81
  }
93
82
  }
94
-
95
- await ensureRepositoryInterfaceFile({ contextName, meta, methods });
83
+ const filteredMethods = methods.filter(Boolean);
84
+ await ensureRepositoryInterfaceFile({ contextName, meta, methods: filteredMethods });
96
85
  const repositoryContent = buildRepositoryContent({
97
86
  meta,
98
87
  contextAlias,
99
88
  datasourceImportPath: datasource.importPath,
100
89
  datasourceName: datasource.name,
101
- methods
90
+ methods: filteredMethods
102
91
  });
103
-
104
92
  const created = await writeIfNotExists(repositoryPath, repositoryContent);
105
93
  await updateIndexTs(repositoriesPath);
106
94
  if (!created) {
@@ -108,17 +96,14 @@ export default async function generateRepository() {
108
96
  process.exitCode = 1;
109
97
  return;
110
98
  }
111
-
112
99
  const { shouldCreateUseCases } = await prompts({
113
100
  type: 'confirm',
114
101
  name: 'shouldCreateUseCases',
115
102
  message: 'Create UseCases for this repository?',
116
103
  initial: true
117
104
  });
118
-
119
105
  if (shouldCreateUseCases) {
120
106
  await ensureUseCasesFile({ contextName, contextAlias, meta });
121
107
  }
122
-
123
108
  console.log(`✅ Repository generated: ${repositoryPath}`);
124
109
  }
@@ -14,14 +14,12 @@ import {
14
14
  selectContext,
15
15
  promptMethodDefinition
16
16
  } from './repositoryShared.js';
17
-
18
17
  export default async function generateRepositoryMethod() {
19
18
  const contextName = await selectContext('Select context for repository method:');
20
19
  if (!contextName) {
21
20
  process.exitCode = 1;
22
21
  return;
23
22
  }
24
-
25
23
  const repositoriesPath = resolveRepositoriesPath(contextName);
26
24
  const repositories = await getAvailableTsNames(repositoriesPath);
27
25
  if (!repositories.length) {
@@ -29,7 +27,6 @@ export default async function generateRepositoryMethod() {
29
27
  process.exitCode = 1;
30
28
  return;
31
29
  }
32
-
33
30
  const { repositoryName } = await prompts({
34
31
  type: 'select',
35
32
  name: 'repositoryName',
@@ -37,16 +34,13 @@ export default async function generateRepositoryMethod() {
37
34
  choices: repositories.map((name) => ({ title: name, value: name })),
38
35
  initial: 0
39
36
  });
40
-
41
37
  if (!repositoryName) {
42
38
  process.exitCode = 1;
43
39
  return;
44
40
  }
45
-
46
41
  const meta = getRepositoryMeta(String(repositoryName));
47
42
  const repositoryPath = path.join(repositoriesPath, `${meta.className}.ts`);
48
43
  const method = await promptMethodDefinition();
49
-
50
44
  const ensuredResponseType = await ensureDomainType({
51
45
  contextName,
52
46
  domainName: meta.domainName,
@@ -55,7 +49,6 @@ export default async function generateRepositoryMethod() {
55
49
  });
56
50
  method.responseType = ensuredResponseType.interfaceName;
57
51
  method.responseLayer = ensuredResponseType.layer;
58
-
59
52
  if (method.requestType) {
60
53
  const ensuredRequestType = await ensureDomainType({
61
54
  contextName,
@@ -66,7 +59,6 @@ export default async function generateRepositoryMethod() {
66
59
  method.requestType = ensuredRequestType.interfaceName;
67
60
  method.requestLayer = ensuredRequestType.layer;
68
61
  }
69
-
70
62
  let repositoryContent = '';
71
63
  try {
72
64
  repositoryContent = await fs.readFile(repositoryPath, 'utf-8');
@@ -75,14 +67,12 @@ export default async function generateRepositoryMethod() {
75
67
  process.exitCode = 1;
76
68
  return;
77
69
  }
78
-
79
70
  const existingMethods = parseRepositoryMethods(repositoryContent);
80
71
  if (existingMethods.some((item) => item.name === method.name)) {
81
72
  console.warn(`⚠️ Method "${method.name}" already exists in ${meta.className}.`);
82
73
  process.exitCode = 1;
83
74
  return;
84
75
  }
85
-
86
76
  const { contexts } = await getConfigState();
87
77
  const contextAlias = resolveContextAlias(contexts, contextName);
88
78
  await appendRepositoryMethod({
@@ -91,12 +81,10 @@ export default async function generateRepositoryMethod() {
91
81
  contextAlias,
92
82
  domainName: meta.domainName
93
83
  });
94
-
95
84
  await ensureRepositoryInterfaceFile({
96
85
  contextName,
97
86
  meta,
98
87
  methods: [...existingMethods, method]
99
88
  });
100
-
101
89
  console.log(`✅ Method "${method.name}" added to ${meta.className}`);
102
90
  }
@@ -8,14 +8,12 @@ import {
8
8
  resolveRepositoriesPath,
9
9
  selectContext
10
10
  } from './repositoryShared.js';
11
-
12
11
  export default async function generateUseCases() {
13
12
  const contextName = await selectContext('Select context for UseCases:');
14
13
  if (!contextName) {
15
14
  process.exitCode = 1;
16
15
  return;
17
16
  }
18
-
19
17
  const repositoriesPath = resolveRepositoriesPath(contextName);
20
18
  const repositories = await getAvailableTsNames(repositoriesPath);
21
19
  if (!repositories.length) {
@@ -23,7 +21,6 @@ export default async function generateUseCases() {
23
21
  process.exitCode = 1;
24
22
  return;
25
23
  }
26
-
27
24
  const { repositoryName } = await prompts({
28
25
  type: 'select',
29
26
  name: 'repositoryName',
@@ -31,12 +28,10 @@ export default async function generateUseCases() {
31
28
  choices: repositories.map((name) => ({ title: name, value: name })),
32
29
  initial: 0
33
30
  });
34
-
35
31
  if (!repositoryName) {
36
32
  process.exitCode = 1;
37
33
  return;
38
34
  }
39
-
40
35
  const { contexts } = await getConfigState();
41
36
  const contextAlias = resolveContextAlias(contexts, contextName);
42
37
  const meta = getRepositoryMeta(String(repositoryName));
@@ -45,6 +40,5 @@ export default async function generateUseCases() {
45
40
  process.exitCode = 1;
46
41
  return;
47
42
  }
48
-
49
43
  console.log(`✅ UseCases generated: ${meta.useCasesClassName}`);
50
44
  }