@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.
- package/bin/azure-net.js +12 -45
- package/bin/azure-net.ts +13 -5
- package/package.json +1 -1
- package/src/checks/checkDomain.js +8 -38
- package/src/checks/checkFoldersStructure.js +0 -14
- package/src/checks/checkHooks.js +0 -5
- package/src/checks/checkImports.js +0 -1
- package/src/checks/checkInternal.js +2 -1
- package/src/checks/checkInternal.ts +2 -0
- package/src/checks/checkLayerBoundaries.js +50 -54
- package/src/checks/checkLayerBoundaries.ts +55 -58
- package/src/checks/checkLayerImports.js +136 -0
- package/src/checks/checkLayerImports.ts +185 -0
- package/src/checks/checkPresenterNames.js +1 -37
- package/src/checks/checkPresenterNames.ts +1 -6
- package/src/checks/checkProject.js +0 -6
- package/src/checks/checkProviderGraph.js +1 -38
- package/src/checks/checkProviderNames.js +0 -28
- package/src/checks/index.js +1 -1
- package/src/checks/index.ts +1 -0
- package/src/generate/layers/generateRepository.js +4 -19
- package/src/generate/layers/generateRepositoryMethod.js +0 -12
- package/src/generate/layers/generateUseCases.js +0 -6
- package/src/generate/layers/repositoryShared.js +41 -104
- package/src/generate/layers/repositoryShared.ts +17 -12
- package/src/generate/module/generateDomain.js +0 -25
- package/src/generate/module/generateModule.js +0 -10
- package/src/generate/module/generateModulePreset.js +10 -51
- package/src/generate/module/generateModulePreset.ts +9 -8
- package/src/generate/module/generatePresenter.js +29 -76
- package/src/generate/module/generatePresenter.ts +15 -10
- package/src/generate/module/generateRepository.js +0 -17
- package/src/generate/module/generateSchemaFromType.js +9 -58
- package/src/generate/module/generateSchemaFromType.ts +1 -2
- package/src/generate/module/generateTypesJson.js +4 -45
- package/src/generate/module/generateUseCases.js +0 -9
- package/src/generate/module/repositoryModuleShared.js +21 -98
- package/src/generate/module/repositoryModuleShared.ts +14 -10
- package/src/generate/ui/generateComponent.js +0 -16
- package/src/generate/ui/generateDesignComponent.js +0 -12
- package/src/generate/ui/generateWidget.js +0 -12
- package/src/init/initAliases.js +42 -64
- package/src/init/initAliases.ts +47 -42
- package/src/init/initEdges.js +0 -15
- package/src/init/initStructure.js +48 -21
- package/src/init/initStructure.ts +51 -3
- package/src/install/installFresh.js +0 -16
- package/src/plugins/addLint.js +11 -46
- package/src/scaffolds/createCoreSchema.js +6 -40
- package/src/scaffolds/createCoreSchema.ts +6 -18
- package/src/scaffolds/createDatasource.js +26 -61
- package/src/scaffolds/createDatasource.ts +26 -40
- package/src/scaffolds/createDatasourceProvider.js +19 -56
- package/src/scaffolds/createDatasourceProvider.ts +20 -34
- package/src/scaffolds/createPresenterFactory.js +5 -34
- package/src/scaffolds/createPresenterFactory.ts +5 -17
- package/src/scaffolds/createProgram.js +1 -5
- package/src/scaffolds/createResponse.js +3 -11
- package/src/scaffolds/createResponse.ts +3 -1
- package/src/scaffolds/createSchemaRule.js +3 -8
- package/src/scaffolds/createSchemaRule.ts +3 -1
- package/src/scaffolds/createTranslationManager.js +3 -14
- package/src/scaffolds/createTranslationManager.ts +3 -1
- package/src/utils/contextUtils.js +5 -20
- package/src/utils/contextUtils.ts +2 -3
- package/src/utils/fileUtils.js +3 -38
- package/src/utils/fileUtils.ts +0 -26
- package/src/utils/loadConfig.js +1 -14
- package/src/utils/loadConfig.ts +1 -3
- package/src/utils/sharedFoundation.js +48 -0
- 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
|
-
|
|
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
|
}
|