nest-hex 0.2.0 → 0.2.2
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/README.md +183 -4
- package/dist/src/cli/bin.js +2630 -0
- package/dist/src/cli/commands/index.d.ts +23 -0
- package/dist/src/cli/commands/index.js +2595 -0
- package/dist/src/cli/config/defaults.d.ts +74 -0
- package/dist/src/cli/config/defaults.js +76 -0
- package/dist/src/cli/config/define-config.d.ts +74 -0
- package/dist/src/cli/config/define-config.js +62 -0
- package/dist/src/cli/config/loader.d.ts +74 -0
- package/dist/src/cli/config/loader.js +106 -0
- package/dist/src/cli/config/validator.d.ts +81 -0
- package/dist/src/cli/config/validator.js +108 -0
- package/dist/src/cli/generators/adapter.generator.d.ts +235 -0
- package/dist/src/cli/generators/adapter.generator.js +377 -0
- package/dist/src/cli/generators/base.generator.d.ts +190 -0
- package/dist/src/cli/generators/base.generator.js +312 -0
- package/dist/src/cli/generators/index.d.ts +264 -0
- package/dist/src/cli/generators/index.js +467 -0
- package/dist/src/cli/generators/port.generator.d.ts +211 -0
- package/dist/src/cli/generators/port.generator.js +364 -0
- package/dist/src/cli/generators/service.generator.d.ts +208 -0
- package/dist/src/cli/generators/service.generator.js +340 -0
- package/dist/src/cli/index.d.ts +74 -0
- package/dist/src/cli/index.js +69 -0
- package/dist/src/cli/types/config.types.d.ts +73 -0
- package/dist/src/cli/types/config.types.js +56 -0
- package/dist/src/cli/types/generator.types.d.ts +46 -0
- package/dist/src/cli/types/generator.types.js +56 -0
- package/dist/src/cli/types/index.d.ts +121 -0
- package/dist/src/cli/types/index.js +56 -0
- package/dist/src/cli/types/template.types.d.ts +28 -0
- package/dist/src/cli/types/template.types.js +56 -0
- package/dist/src/cli/ui/components/index.d.ts +97 -0
- package/dist/src/cli/ui/components/index.js +1493 -0
- package/dist/src/cli/utils/file-writer.d.ts +17 -0
- package/dist/src/cli/utils/file-writer.js +100 -0
- package/dist/src/cli/utils/linter-detector.d.ts +12 -0
- package/dist/src/cli/utils/linter-detector.js +128 -0
- package/dist/src/cli/utils/linter-runner.d.ts +17 -0
- package/dist/src/cli/utils/linter-runner.js +101 -0
- package/dist/src/cli/utils/name-transformer.d.ts +18 -0
- package/dist/src/cli/utils/name-transformer.js +90 -0
- package/dist/src/cli/utils/path-resolver.d.ts +5 -0
- package/dist/src/cli/utils/path-resolver.js +78 -0
- package/dist/src/cli/utils/port-scanner.d.ts +93 -0
- package/dist/src/cli/utils/port-scanner.js +104 -0
- package/dist/src/cli/utils/template-renderer.d.ts +30 -0
- package/dist/src/cli/utils/template-renderer.js +95 -0
- package/dist/{index.js → src/index.js} +14 -0
- package/package.json +10 -10
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var import_node_module = require("node:module");
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
9
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
10
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
11
|
+
for (let key of __getOwnPropNames(mod))
|
|
12
|
+
if (!__hasOwnProp.call(to, key))
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: () => mod[key],
|
|
15
|
+
enumerable: true
|
|
16
|
+
});
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
20
|
+
var __toCommonJS = (from) => {
|
|
21
|
+
var entry = __moduleCache.get(from), desc;
|
|
22
|
+
if (entry)
|
|
23
|
+
return entry;
|
|
24
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
25
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
26
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
27
|
+
get: () => from[key],
|
|
28
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
29
|
+
}));
|
|
30
|
+
__moduleCache.set(from, entry);
|
|
31
|
+
return entry;
|
|
32
|
+
};
|
|
33
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
34
|
+
var __export = (target, all) => {
|
|
35
|
+
for (var name in all)
|
|
36
|
+
__defProp(target, name, {
|
|
37
|
+
get: all[name],
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
set: (newValue) => all[name] = () => newValue
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
44
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
45
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
46
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
47
|
+
else
|
|
48
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
49
|
+
if (d = decorators[i])
|
|
50
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
51
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// src/cli/types/generator.types.ts
|
|
55
|
+
var exports_generator_types = {};
|
|
56
|
+
module.exports = __toCommonJS(exports_generator_types);
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration types for nest-hex CLI
|
|
3
|
+
*/
|
|
4
|
+
interface NestHexConfig {
|
|
5
|
+
/**
|
|
6
|
+
* Output directory configuration
|
|
7
|
+
*/
|
|
8
|
+
output?: {
|
|
9
|
+
/**
|
|
10
|
+
* Directory for generated ports
|
|
11
|
+
* @default 'src/ports'
|
|
12
|
+
*/
|
|
13
|
+
portsDir?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Directory for generated adapters
|
|
16
|
+
* @default 'src/adapters'
|
|
17
|
+
*/
|
|
18
|
+
adaptersDir?: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Naming conventions
|
|
22
|
+
*/
|
|
23
|
+
naming?: {
|
|
24
|
+
/**
|
|
25
|
+
* Suffix for port tokens
|
|
26
|
+
* @default 'PORT'
|
|
27
|
+
*/
|
|
28
|
+
portSuffix?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Suffix for adapter classes
|
|
31
|
+
* @default 'Adapter'
|
|
32
|
+
*/
|
|
33
|
+
adapterSuffix?: string;
|
|
34
|
+
/**
|
|
35
|
+
* File naming case
|
|
36
|
+
* @default 'kebab'
|
|
37
|
+
*/
|
|
38
|
+
fileCase?: "kebab" | "camel" | "pascal";
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Code style preferences
|
|
42
|
+
*/
|
|
43
|
+
style?: {
|
|
44
|
+
/**
|
|
45
|
+
* Indentation style
|
|
46
|
+
* @default 'tab'
|
|
47
|
+
*/
|
|
48
|
+
indent?: "tab" | 2 | 4;
|
|
49
|
+
/**
|
|
50
|
+
* Quote style
|
|
51
|
+
* @default 'single'
|
|
52
|
+
*/
|
|
53
|
+
quotes?: "single" | "double";
|
|
54
|
+
/**
|
|
55
|
+
* Use semicolons
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
58
|
+
semicolons?: boolean;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Custom template paths
|
|
62
|
+
*/
|
|
63
|
+
templates?: {
|
|
64
|
+
portModule?: string;
|
|
65
|
+
portToken?: string;
|
|
66
|
+
portInterface?: string;
|
|
67
|
+
portService?: string;
|
|
68
|
+
adapterModule?: string;
|
|
69
|
+
adapterService?: string;
|
|
70
|
+
adapterTypes?: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generator types for CLI
|
|
75
|
+
*/
|
|
76
|
+
interface GeneratorOptions {
|
|
77
|
+
name: string;
|
|
78
|
+
outputPath?: string;
|
|
79
|
+
includeModule?: boolean;
|
|
80
|
+
includeService?: boolean;
|
|
81
|
+
registrationType?: "sync" | "async";
|
|
82
|
+
generateExample?: boolean;
|
|
83
|
+
dryRun?: boolean;
|
|
84
|
+
}
|
|
85
|
+
interface GeneratorContext extends Record<string, unknown> {
|
|
86
|
+
original: string;
|
|
87
|
+
kebab: string;
|
|
88
|
+
camel: string;
|
|
89
|
+
pascal: string;
|
|
90
|
+
snake: string;
|
|
91
|
+
screamingSnake: string;
|
|
92
|
+
nameKebab: string;
|
|
93
|
+
nameCamel: string;
|
|
94
|
+
namePascal: string;
|
|
95
|
+
nameSnake: string;
|
|
96
|
+
nameScreamingSnake: string;
|
|
97
|
+
portSuffix: string;
|
|
98
|
+
adapterSuffix: string;
|
|
99
|
+
fileCase: "kebab" | "camel" | "pascal";
|
|
100
|
+
indent: "tab" | number;
|
|
101
|
+
quotes: "single" | "double";
|
|
102
|
+
semicolons: boolean;
|
|
103
|
+
includeModule: boolean;
|
|
104
|
+
includeService: boolean;
|
|
105
|
+
registrationType: "sync" | "async";
|
|
106
|
+
generateExample: boolean;
|
|
107
|
+
coreImportPath: string;
|
|
108
|
+
}
|
|
109
|
+
interface FileToGenerate {
|
|
110
|
+
path: string;
|
|
111
|
+
content: string;
|
|
112
|
+
}
|
|
113
|
+
interface GeneratorResult {
|
|
114
|
+
files: string[];
|
|
115
|
+
success: boolean;
|
|
116
|
+
message?: string;
|
|
117
|
+
}
|
|
118
|
+
interface TemplateContext extends GeneratorContext {
|
|
119
|
+
[key: string]: unknown;
|
|
120
|
+
}
|
|
121
|
+
export { TemplateContext, NestHexConfig, GeneratorResult, GeneratorOptions, GeneratorContext, FileToGenerate };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var import_node_module = require("node:module");
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
9
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
10
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
11
|
+
for (let key of __getOwnPropNames(mod))
|
|
12
|
+
if (!__hasOwnProp.call(to, key))
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: () => mod[key],
|
|
15
|
+
enumerable: true
|
|
16
|
+
});
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
20
|
+
var __toCommonJS = (from) => {
|
|
21
|
+
var entry = __moduleCache.get(from), desc;
|
|
22
|
+
if (entry)
|
|
23
|
+
return entry;
|
|
24
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
25
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
26
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
27
|
+
get: () => from[key],
|
|
28
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
29
|
+
}));
|
|
30
|
+
__moduleCache.set(from, entry);
|
|
31
|
+
return entry;
|
|
32
|
+
};
|
|
33
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
34
|
+
var __export = (target, all) => {
|
|
35
|
+
for (var name in all)
|
|
36
|
+
__defProp(target, name, {
|
|
37
|
+
get: all[name],
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
set: (newValue) => all[name] = () => newValue
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
44
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
45
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
46
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
47
|
+
else
|
|
48
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
49
|
+
if (d = decorators[i])
|
|
50
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
51
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// src/cli/types/index.ts
|
|
55
|
+
var exports_types = {};
|
|
56
|
+
module.exports = __toCommonJS(exports_types);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface GeneratorContext extends Record<string, unknown> {
|
|
2
|
+
original: string;
|
|
3
|
+
kebab: string;
|
|
4
|
+
camel: string;
|
|
5
|
+
pascal: string;
|
|
6
|
+
snake: string;
|
|
7
|
+
screamingSnake: string;
|
|
8
|
+
nameKebab: string;
|
|
9
|
+
nameCamel: string;
|
|
10
|
+
namePascal: string;
|
|
11
|
+
nameSnake: string;
|
|
12
|
+
nameScreamingSnake: string;
|
|
13
|
+
portSuffix: string;
|
|
14
|
+
adapterSuffix: string;
|
|
15
|
+
fileCase: "kebab" | "camel" | "pascal";
|
|
16
|
+
indent: "tab" | number;
|
|
17
|
+
quotes: "single" | "double";
|
|
18
|
+
semicolons: boolean;
|
|
19
|
+
includeModule: boolean;
|
|
20
|
+
includeService: boolean;
|
|
21
|
+
registrationType: "sync" | "async";
|
|
22
|
+
generateExample: boolean;
|
|
23
|
+
coreImportPath: string;
|
|
24
|
+
}
|
|
25
|
+
interface TemplateContext extends GeneratorContext {
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
}
|
|
28
|
+
export { TemplateContext };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var import_node_module = require("node:module");
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
9
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
10
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
11
|
+
for (let key of __getOwnPropNames(mod))
|
|
12
|
+
if (!__hasOwnProp.call(to, key))
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: () => mod[key],
|
|
15
|
+
enumerable: true
|
|
16
|
+
});
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __moduleCache = /* @__PURE__ */ new WeakMap;
|
|
20
|
+
var __toCommonJS = (from) => {
|
|
21
|
+
var entry = __moduleCache.get(from), desc;
|
|
22
|
+
if (entry)
|
|
23
|
+
return entry;
|
|
24
|
+
entry = __defProp({}, "__esModule", { value: true });
|
|
25
|
+
if (from && typeof from === "object" || typeof from === "function")
|
|
26
|
+
__getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
|
|
27
|
+
get: () => from[key],
|
|
28
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
29
|
+
}));
|
|
30
|
+
__moduleCache.set(from, entry);
|
|
31
|
+
return entry;
|
|
32
|
+
};
|
|
33
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
34
|
+
var __export = (target, all) => {
|
|
35
|
+
for (var name in all)
|
|
36
|
+
__defProp(target, name, {
|
|
37
|
+
get: all[name],
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
set: (newValue) => all[name] = () => newValue
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
44
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
45
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
46
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
47
|
+
else
|
|
48
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
49
|
+
if (d = decorators[i])
|
|
50
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
51
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// src/cli/types/template.types.ts
|
|
55
|
+
var exports_template_types = {};
|
|
56
|
+
module.exports = __toCommonJS(exports_template_types);
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
interface ComponentOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
}
|
|
6
|
+
interface ComponentSelectorProps {
|
|
7
|
+
options: ComponentOption[];
|
|
8
|
+
onSubmit: (selected: string[]) => void;
|
|
9
|
+
title?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Multi-select component for choosing which components to generate.
|
|
13
|
+
*/
|
|
14
|
+
declare function ComponentSelector({ options, onSubmit, title }: ComponentSelectorProps): JSX.Element;
|
|
15
|
+
interface ConfirmProps {
|
|
16
|
+
message: string;
|
|
17
|
+
defaultValue?: boolean;
|
|
18
|
+
onSubmit: (confirmed: boolean) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Yes/no confirmation prompt.
|
|
22
|
+
*/
|
|
23
|
+
declare function Confirm({ message, defaultValue, onSubmit }: ConfirmProps): JSX.Element;
|
|
24
|
+
interface FileProgressProps {
|
|
25
|
+
fileName: string;
|
|
26
|
+
status: "pending" | "generating" | "completed" | "skipped" | "failed";
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Shows progress for a single file generation.
|
|
31
|
+
*/
|
|
32
|
+
declare function FileProgress({ fileName, status, error }: FileProgressProps): JSX.Element;
|
|
33
|
+
interface NameInputProps {
|
|
34
|
+
type: "port" | "adapter" | "service" | "full";
|
|
35
|
+
step?: "port" | "adapter";
|
|
36
|
+
onSubmit: (name: string) => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Name input for component generation.
|
|
40
|
+
*/
|
|
41
|
+
declare function NameInput({ type, step, onSubmit }: NameInputProps): JSX.Element;
|
|
42
|
+
interface PortInfo {
|
|
43
|
+
/** Port name in kebab-case (e.g., 'object-storage') */
|
|
44
|
+
name: string;
|
|
45
|
+
/** Port name in PascalCase (e.g., 'ObjectStorage') */
|
|
46
|
+
pascalName: string;
|
|
47
|
+
/** Token name (e.g., 'OBJECT_STORAGE_PORT') */
|
|
48
|
+
tokenName: string;
|
|
49
|
+
/** Relative import path from adapter to port token file */
|
|
50
|
+
tokenImportPath: string;
|
|
51
|
+
/** Absolute path to port directory */
|
|
52
|
+
portPath: string;
|
|
53
|
+
}
|
|
54
|
+
interface PortSelectorProps {
|
|
55
|
+
ports: PortInfo[];
|
|
56
|
+
onSubmit: (portInfo: PortInfo) => void;
|
|
57
|
+
onBack?: () => void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Displays a list of available ports and allows the user to select one
|
|
61
|
+
*/
|
|
62
|
+
declare function PortSelector({ ports, onSubmit }: PortSelectorProps): JSX.Element;
|
|
63
|
+
interface ProgressStep {
|
|
64
|
+
id: string;
|
|
65
|
+
label: string;
|
|
66
|
+
status: "pending" | "in_progress" | "completed" | "failed";
|
|
67
|
+
message?: string;
|
|
68
|
+
}
|
|
69
|
+
interface ProgressIndicatorProps {
|
|
70
|
+
steps: ProgressStep[];
|
|
71
|
+
title?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Progress indicator that shows current step with spinner.
|
|
75
|
+
*/
|
|
76
|
+
declare function ProgressIndicator({ steps, title }: ProgressIndicatorProps): JSX.Element;
|
|
77
|
+
interface SummaryProps {
|
|
78
|
+
success: boolean;
|
|
79
|
+
filesGenerated: number;
|
|
80
|
+
totalFiles: number;
|
|
81
|
+
duration?: number;
|
|
82
|
+
outputPath?: string;
|
|
83
|
+
files?: string[];
|
|
84
|
+
tips?: string[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Shows generation summary with file counts and helpful tips.
|
|
88
|
+
*/
|
|
89
|
+
declare function Summary({ success, filesGenerated, totalFiles, duration, outputPath, files, tips }: SummaryProps): JSX.Element;
|
|
90
|
+
interface TypeSelectorProps {
|
|
91
|
+
onSubmit: (type: "port" | "adapter" | "service" | "full") => void;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Component type selector (port, adapter, service, full).
|
|
95
|
+
*/
|
|
96
|
+
declare function TypeSelector({ onSubmit }: TypeSelectorProps): JSX.Element;
|
|
97
|
+
export { TypeSelectorProps, TypeSelector, SummaryProps, Summary, ProgressStep, ProgressIndicatorProps, ProgressIndicator, PortSelectorProps, PortSelector, NameInputProps, NameInput, FileProgressProps, FileProgress, ConfirmProps, Confirm, ComponentSelectorProps, ComponentSelector, ComponentOption };
|