@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 +4 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +232 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/index.js +37 -11
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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 @@
|
|
|
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
|
-
|
|
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;
|
|
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"}
|