@agility-luhn/cli 1.7.0 → 1.9.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 CHANGED
@@ -1,3 +1,7 @@
1
+ ## [1.9.0](https://github.com/flaviorafaelo-agility/luhn-workspace/compare/cli-v1.8.0...cli-v1.9.0) (2026-07-08)
2
+
3
+ ## [1.8.0](https://github.com/flaviorafaelo-agility/luhn-workspace/compare/cli-v1.7.0...cli-v1.8.0) (2026-07-08)
4
+
1
5
  ## [1.7.0](https://github.com/flaviorafaelo-agility/luhn-workspace/compare/cli-v1.6.0...cli-v1.7.0) (2026-07-08)
2
6
 
3
7
  ## [1.6.0](https://github.com/flaviorafaelo-agility/luhn-workspace/compare/cli-v1.5.6...cli-v1.6.0) (2026-07-08)
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function listCommand(): Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwKpC,wBAAgB,WAAW,IAAI,OAAO,CA0HrC"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.listCommand = listCommand;
7
+ const commander_1 = require("commander");
8
+ const fs_1 = require("fs");
9
+ const path_1 = __importDefault(require("path"));
10
+ function findLuhnDir() {
11
+ const cwd = process.cwd();
12
+ // Try ./luhn in current directory
13
+ if ((0, fs_1.existsSync)(path_1.default.join(cwd, 'luhn'))) {
14
+ return path_1.default.join(cwd, 'luhn');
15
+ }
16
+ // Try ./src/luhn (common in monorepos)
17
+ if ((0, fs_1.existsSync)(path_1.default.join(cwd, 'src', 'luhn'))) {
18
+ return path_1.default.join(cwd, 'src', 'luhn');
19
+ }
20
+ // Try parent directory ./luhn
21
+ const parent = path_1.default.dirname(cwd);
22
+ if (parent !== cwd && (0, fs_1.existsSync)(path_1.default.join(parent, 'luhn'))) {
23
+ return path_1.default.join(parent, 'luhn');
24
+ }
25
+ // Try ./luhn in one level up (for nested projects)
26
+ const grandparent = path_1.default.dirname(parent);
27
+ if (grandparent !== parent && (0, fs_1.existsSync)(path_1.default.join(grandparent, 'luhn'))) {
28
+ return path_1.default.join(grandparent, 'luhn');
29
+ }
30
+ return null;
31
+ }
32
+ function parseLuhnFile(filePath) {
33
+ try {
34
+ const content = (0, fs_1.readFileSync)(filePath, 'utf8');
35
+ const entities = [];
36
+ // Match business, entity, or service blocks
37
+ const entityRegex = /(business|entity|service)\s+"?([A-Za-z_][A-Za-z0-9_]*)"?\s*(?:"([^"]*)")?\s*{([^}]*)}/g;
38
+ let match;
39
+ while ((match = entityRegex.exec(content)) !== null) {
40
+ const type = match[1];
41
+ const name = match[2];
42
+ const title = match[3];
43
+ const body = match[4];
44
+ if (!type || !name || body === undefined)
45
+ continue;
46
+ const attributes = parseAttributes(body);
47
+ entities.push({
48
+ type: type,
49
+ name,
50
+ title: title ? title.trim() : undefined,
51
+ attributes,
52
+ description: title ? title.trim() : undefined
53
+ });
54
+ }
55
+ return entities;
56
+ }
57
+ catch {
58
+ return [];
59
+ }
60
+ }
61
+ function parseAttributes(body) {
62
+ const attributes = [];
63
+ const lines = body.split('\n');
64
+ for (const line of lines) {
65
+ const trimmed = line.trim();
66
+ if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('ui'))
67
+ continue;
68
+ // Match: name: type or name: type?
69
+ const attrRegex = /^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*(\?)?/;
70
+ const attrMatch = attrRegex.exec(line);
71
+ if (attrMatch) {
72
+ const name = attrMatch[1];
73
+ const type = attrMatch[2];
74
+ const optional = attrMatch[3];
75
+ if (name && type) {
76
+ attributes.push({
77
+ name,
78
+ type,
79
+ required: !optional
80
+ });
81
+ }
82
+ }
83
+ }
84
+ return attributes;
85
+ }
86
+ function scanLuhnModules(luhnDir) {
87
+ const modules = [];
88
+ try {
89
+ const entries = (0, fs_1.readdirSync)(luhnDir, { withFileTypes: true });
90
+ for (const entry of entries) {
91
+ if (entry.isDirectory()) {
92
+ const moduleName = entry.name;
93
+ const moduleEntities = [];
94
+ // Look for .luhn files in the module directory
95
+ try {
96
+ const moduleFiles = (0, fs_1.readdirSync)(path_1.default.join(luhnDir, moduleName));
97
+ for (const file of moduleFiles) {
98
+ if (file.endsWith('.luhn')) {
99
+ const filePath = path_1.default.join(luhnDir, moduleName, file);
100
+ const entities = parseLuhnFile(filePath);
101
+ moduleEntities.push(...entities);
102
+ }
103
+ }
104
+ }
105
+ catch {
106
+ // Continue if module directory is not readable
107
+ }
108
+ if (moduleEntities.length > 0) {
109
+ modules.push({
110
+ name: moduleName,
111
+ entities: moduleEntities
112
+ });
113
+ }
114
+ }
115
+ else if (entry.name.endsWith('.luhn')) {
116
+ // Root level .luhn files
117
+ const filePath = path_1.default.join(luhnDir, entry.name);
118
+ const entities = parseLuhnFile(filePath);
119
+ if (entities.length > 0) {
120
+ modules.push({
121
+ name: entry.name.replace('.luhn', ''),
122
+ entities
123
+ });
124
+ }
125
+ }
126
+ }
127
+ }
128
+ catch {
129
+ // Directory may not exist
130
+ }
131
+ return modules;
132
+ }
133
+ function listCommand() {
134
+ return new commander_1.Command('list')
135
+ .alias('ls')
136
+ .description('List LUHN modules, entities, classes and their attributes')
137
+ .option('-m, --module <name>', 'Filter by specific module name')
138
+ .option('-e, --entity <name>', 'Filter by specific entity/class name')
139
+ .option('-f, --full', 'Show full details including attributes')
140
+ .option('--json', 'Output as JSON')
141
+ .action(async (options) => {
142
+ try {
143
+ const luhnDir = findLuhnDir();
144
+ if (!luhnDir) {
145
+ console.log('❌ No LUHN directory found.');
146
+ console.log(' Searched in: ./luhn, ./src/luhn, ../luhn, ../../luhn');
147
+ console.log(' Make sure you are in a LUHN project directory.\n');
148
+ return;
149
+ }
150
+ const modules = scanLuhnModules(luhnDir);
151
+ if (modules.length === 0) {
152
+ console.log(`❌ No LUHN modules found in ${luhnDir}`);
153
+ console.log(' Make sure you have .luhn files in your modules.\n');
154
+ return;
155
+ }
156
+ let filteredModules = modules;
157
+ // Apply filters
158
+ if (options.module) {
159
+ filteredModules = modules.filter(m => m.name.toLowerCase().includes(options.module.toLowerCase()));
160
+ }
161
+ let totalEntities = 0;
162
+ let totalAttributes = 0;
163
+ for (const module of filteredModules) {
164
+ let moduleEntities = module.entities;
165
+ if (options.entity) {
166
+ moduleEntities = moduleEntities.filter(e => e.name.toLowerCase().includes(options.entity.toLowerCase()));
167
+ }
168
+ totalEntities += moduleEntities.length;
169
+ totalAttributes += moduleEntities.reduce((sum, e) => sum + e.attributes.length, 0);
170
+ }
171
+ if (options.json) {
172
+ const output = filteredModules.map(m => {
173
+ let entities = m.entities;
174
+ if (options.entity) {
175
+ entities = entities.filter(e => e.name.toLowerCase().includes(options.entity.toLowerCase()));
176
+ }
177
+ return {
178
+ module: m.name,
179
+ entities: entities.map(e => ({
180
+ name: e.name,
181
+ type: e.type,
182
+ title: e.title,
183
+ attributes: options.full ? e.attributes : undefined,
184
+ attributeCount: e.attributes.length
185
+ }))
186
+ };
187
+ });
188
+ console.log(JSON.stringify(output, null, 2));
189
+ return;
190
+ }
191
+ // Pretty print output
192
+ console.log('\n📦 LUHN Project Structure\n');
193
+ for (const module of filteredModules) {
194
+ let moduleEntities = module.entities;
195
+ if (options.entity) {
196
+ moduleEntities = moduleEntities.filter(e => e.name.toLowerCase().includes(options.entity.toLowerCase()));
197
+ }
198
+ if (moduleEntities.length === 0)
199
+ continue;
200
+ console.log(` 📂 Module: ${module.name}`);
201
+ for (const entity of moduleEntities) {
202
+ const typeIcon = entity.type === 'business' ? '🎯' : entity.type === 'entity' ? '📋' : '⚙️';
203
+ console.log(` ${typeIcon} ${entity.type.toUpperCase()}: ${entity.name}${entity.title ? ` ("${entity.title}")` : ''}`);
204
+ if (options.full && entity.attributes.length > 0) {
205
+ for (const attr of entity.attributes) {
206
+ const reqIcon = attr.required ? '✓' : '○';
207
+ console.log(` ${reqIcon} ${attr.name}: ${attr.type}`);
208
+ }
209
+ }
210
+ else if (entity.attributes.length > 0) {
211
+ console.log(` └─ ${entity.attributes.length} attribute(s)`);
212
+ }
213
+ }
214
+ console.log('');
215
+ }
216
+ // Summary
217
+ console.log(` ✅ Summary:`);
218
+ console.log(` Modules: ${filteredModules.length}`);
219
+ console.log(` Entities: ${totalEntities}`);
220
+ console.log(` Attributes: ${totalAttributes}\n`);
221
+ if (!options.full && totalEntities > 0) {
222
+ console.log(` 💡 Tip: Use --full flag to see all attributes\n`);
223
+ }
224
+ }
225
+ catch (error) {
226
+ const message = error instanceof Error ? error.message : String(error);
227
+ console.error(`❌ Error listing modules: ${message}`);
228
+ process.exitCode = 1;
229
+ }
230
+ });
231
+ }
232
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,10 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const commander_1 = require("commander");
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
9
10
  const init_1 = require("./commands/init");
10
11
  const compile_1 = require("./commands/compile");
11
12
  const db_1 = require("./commands/db");
12
13
  const serve_1 = require("./commands/serve");
14
+ const list_1 = require("./commands/list");
13
15
  function loadVersion() {
14
16
  try {
15
17
  const packageJsonPath = path_1.default.join(__dirname, '..', 'package.json');
@@ -21,17 +23,40 @@ function loadVersion() {
21
23
  }
22
24
  }
23
25
  function showBanner() {
24
- console.log(`
25
- ██▓ █ ██ ██░ ██ ███▄ █
26
- ▓██▒ ██ ▓██▒▓██░ ██▒ ██ ▀█
27
- ▒██░ ▓██ ▒██░▒██░ ██░▓██ ▀█ ██▒
28
- ▒██░ ▓▓█ ░██░░██░ ██░▓██▒ ▐▌██▒
29
- ░██████▒▒▒█████▓ ░░██████▒▒██░ ▓██░
30
- ▒░▓ ░░▒▓▒ ▄▀ ▒░▓ ░░ ▒░ ▒
31
- ▒ ░░░▒░ ░ ░ ░ ▒ ░░ ░░ ░ ▒░
32
- ░ ░ ░░░ ░ ░ ░ ░ ░ ░
33
- ░ ░ ░ ░ ░
34
- `);
26
+ const info = getSystemInfo();
27
+ const banner = `
28
+ _ _ _ _ _ _
29
+ | | | | | | | | | | | |
30
+ | | _ _ ___| |_| | | |_| | | |
31
+ | | | | | |/ _ \\ _ | | _ | | |
32
+ | |____| |_| | __/| | | | | | | | |_|
33
+ |_____|\___/|_|___|_| |_| |_| |_| |_|_|
34
+
35
+ LUHN CLI: ${info.version}
36
+ Node: ${info.node}
37
+ Package Manager: pnpm ${info.pnpm}
38
+ OS: ${info.platform} ${info.arch}
39
+ `;
40
+ console.log(banner);
41
+ }
42
+ function getPnpmVersion() {
43
+ try {
44
+ const result = require('child_process').execSync('pnpm -v', { encoding: 'utf8' });
45
+ return result.trim();
46
+ }
47
+ catch {
48
+ return 'unknown';
49
+ }
50
+ }
51
+ // Get all system information for banner display
52
+ function getSystemInfo() {
53
+ return {
54
+ version: loadVersion(),
55
+ node: process.version,
56
+ pnpm: getPnpmVersion(),
57
+ platform: os_1.default.platform(),
58
+ arch: os_1.default.arch()
59
+ };
35
60
  }
36
61
  const version = loadVersion();
37
62
  commander_1.program
@@ -46,6 +71,7 @@ commander_1.program
46
71
  .enablePositionalOptions();
47
72
  commander_1.program.addCommand((0, init_1.initCommand)());
48
73
  commander_1.program.addCommand((0, compile_1.compileCommand)());
74
+ commander_1.program.addCommand((0, list_1.listCommand)());
49
75
  commander_1.program.addCommand((0, db_1.dbCommand)());
50
76
  commander_1.program.addCommand((0, serve_1.serveCommand)());
51
77
  commander_1.program.parseAsync(process.argv).catch((error) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,2BAAkC;AAClC,gDAAwB;AACxB,0CAA8C;AAC9C,gDAAoD;AACpD,sCAA0C;AAC1C,4CAAgD;AAEhD,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;CAUb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAE9B,mBAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,4FAA4F,CAAC;KACzG,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAExD,yCAAyC;AACzC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,UAAU,EAAE,CAAC;AACf,CAAC;AAED,mBAAO;KACJ,uBAAuB,EAAE,CAAC;AAE7B,mBAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,mBAAO,CAAC,UAAU,CAAC,IAAA,wBAAc,GAAE,CAAC,CAAC;AACrC,mBAAO,CAAC,UAAU,CAAC,IAAA,cAAS,GAAE,CAAC,CAAC;AAChC,mBAAO,CAAC,UAAU,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;AAEnC,mBAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,yCAAoC;AACpC,2BAAkC;AAClC,gDAAwB;AACxB,4CAAoB;AACpB,0CAA8C;AAC9C,gDAAoD;AACpD,sCAA0C;AAC1C,4CAAgD;AAChD,0CAA8C;AAE9C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG;;;;;;;;cAQH,IAAI,CAAC,OAAO;UAChB,IAAI,CAAC,IAAI;0BACO,IAAI,CAAC,IAAI;QAC3B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI;GAC/B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,SAAS,aAAa;IACpB,OAAO;QACL,OAAO,EAAE,WAAW,EAAE;QACtB,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,IAAI,EAAE,cAAc,EAAE;QACtB,QAAQ,EAAE,YAAE,CAAC,QAAQ,EAAE;QACvB,IAAI,EAAE,YAAE,CAAC,IAAI,EAAE;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAE9B,mBAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,4FAA4F,CAAC;KACzG,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAExD,yCAAyC;AACzC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,UAAU,EAAE,CAAC;AACf,CAAC;AAED,mBAAO;KACJ,uBAAuB,EAAE,CAAC;AAE7B,mBAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,mBAAO,CAAC,UAAU,CAAC,IAAA,wBAAc,GAAE,CAAC,CAAC;AACrC,mBAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,mBAAO,CAAC,UAAU,CAAC,IAAA,cAAS,GAAE,CAAC,CAAC;AAChC,mBAAO,CAAC,UAAU,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;AAEnC,mBAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agility-luhn/cli",
3
- "version": "1.7.0",
3
+ "version": "1.9.0",
4
4
  "private": false,
5
5
  "description": "CLI oficial para inicializacao e compilacao de projetos LUHN.",
6
6
  "license": "MIT",