@objectql/cli 1.8.4 → 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/README.md +2 -2
- package/dist/commands/database-push.d.ts +5 -0
- package/dist/commands/database-push.js +15 -0
- package/dist/commands/database-push.js.map +1 -0
- package/dist/commands/dev.d.ts +2 -0
- package/dist/commands/dev.js +94 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.js +37 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.js +31 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/serve.d.ts +2 -0
- package/dist/commands/serve.js +122 -46
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.js +15 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/index.js +173 -210
- package/dist/index.js.map +1 -1
- package/package.json +13 -7
- package/templates/hello-world/.vscode/extensions.json +7 -0
- package/templates/hello-world/CHANGELOG.md +41 -0
- package/templates/hello-world/README.md +29 -0
- package/templates/hello-world/package.json +24 -0
- package/templates/hello-world/src/index.ts +58 -0
- package/templates/hello-world/tsconfig.json +10 -0
- package/templates/starter/.vscode/extensions.json +7 -0
- package/{CHANGELOG.md → templates/starter/CHANGELOG.md} +36 -42
- package/templates/starter/README.md +17 -0
- package/templates/starter/__tests__/projects-hooks-actions.test.ts +490 -0
- package/templates/starter/jest.config.js +16 -0
- package/templates/starter/package.json +52 -0
- package/templates/starter/src/README.pages.md +110 -0
- package/templates/starter/src/demo.app.yml +4 -0
- package/templates/starter/src/i18n/zh-CN/projects.json +22 -0
- package/templates/starter/src/modules/kitchen-sink/kitchen_sink.data.yml +18 -0
- package/templates/starter/src/modules/kitchen-sink/kitchen_sink.object.yml +156 -0
- package/templates/starter/src/modules/projects/project_approval.workflow.yml +51 -0
- package/templates/starter/src/modules/projects/projects.action.ts +472 -0
- package/templates/starter/src/modules/projects/projects.data.yml +13 -0
- package/templates/starter/src/modules/projects/projects.hook.ts +339 -0
- package/templates/starter/src/modules/projects/projects.object.yml +148 -0
- package/templates/starter/src/modules/projects/projects.permission.yml +141 -0
- package/templates/starter/src/modules/projects/projects.validation.yml +37 -0
- package/templates/starter/src/modules/tasks/tasks.data.yml +23 -0
- package/templates/starter/src/modules/tasks/tasks.object.yml +34 -0
- package/templates/starter/src/modules/tasks/tasks.permission.yml +167 -0
- package/templates/starter/src/seed.ts +55 -0
- package/templates/starter/src/types/index.ts +3 -0
- package/templates/starter/src/types/kitchen_sink.ts +101 -0
- package/templates/starter/src/types/projects.ts +49 -0
- package/templates/starter/src/types/tasks.ts +33 -0
- package/templates/starter/tsconfig.json +11 -0
- package/templates/starter/tsconfig.tsbuildinfo +1 -0
- package/AI_EXAMPLES.md +0 -154
- package/AI_IMPLEMENTATION_SUMMARY.md +0 -509
- package/AI_TUTORIAL.md +0 -144
- package/IMPLEMENTATION_SUMMARY.md +0 -437
- package/USAGE_EXAMPLES.md +0 -951
- package/__tests__/commands.test.ts +0 -426
- package/jest.config.js +0 -19
- package/src/commands/ai.ts +0 -509
- package/src/commands/build.ts +0 -98
- package/src/commands/dev.ts +0 -23
- package/src/commands/format.ts +0 -110
- package/src/commands/generate.ts +0 -135
- package/src/commands/i18n.ts +0 -303
- package/src/commands/init.ts +0 -191
- package/src/commands/lint.ts +0 -98
- package/src/commands/migrate.ts +0 -314
- package/src/commands/new.ts +0 -221
- package/src/commands/repl.ts +0 -120
- package/src/commands/serve.ts +0 -96
- package/src/commands/start.ts +0 -100
- package/src/commands/sync.ts +0 -328
- package/src/commands/test.ts +0 -98
- package/src/index.ts +0 -356
- package/tsconfig.json +0 -15
- package/tsconfig.tsbuildinfo +0 -1
package/dist/commands/start.js
CHANGED
|
@@ -72,6 +72,14 @@ async function start(options) {
|
|
|
72
72
|
console.warn(chalk_1.default.yellow(`⚠️ Failed to load config: ${e.message}`));
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
+
// Process modules override
|
|
76
|
+
if (options.modules) {
|
|
77
|
+
const moduleList = options.modules.split(',').map(p => p.trim());
|
|
78
|
+
if (!config)
|
|
79
|
+
config = {};
|
|
80
|
+
config.modules = moduleList;
|
|
81
|
+
console.log(chalk_1.default.yellow(`⚠️ Overriding modules: ${moduleList.join(', ')}`));
|
|
82
|
+
}
|
|
75
83
|
// Initialize datasource from config or use default SQLite
|
|
76
84
|
// Note: Config files may use 'datasource' (singular) while ObjectQLConfig uses 'datasources' (plural)
|
|
77
85
|
const datasourceConfig = ((_a = config === null || config === void 0 ? void 0 : config.datasources) === null || _a === void 0 ? void 0 : _a.default) || ((_b = config === null || config === void 0 ? void 0 : config.datasource) === null || _b === void 0 ? void 0 : _b.default) || {
|
|
@@ -88,6 +96,13 @@ async function start(options) {
|
|
|
88
96
|
// Load Schema
|
|
89
97
|
try {
|
|
90
98
|
const loader = new platform_node_1.ObjectLoader(app.metadata);
|
|
99
|
+
// Load modules first (if any)
|
|
100
|
+
// Backwards compatibility for presets
|
|
101
|
+
const modulesToLoad = (config === null || config === void 0 ? void 0 : config.modules) || (config === null || config === void 0 ? void 0 : config.presets);
|
|
102
|
+
if (modulesToLoad) {
|
|
103
|
+
await (0, platform_node_1.loadModules)(loader, modulesToLoad);
|
|
104
|
+
}
|
|
105
|
+
// Load project source
|
|
91
106
|
loader.load(rootDir);
|
|
92
107
|
await app.init();
|
|
93
108
|
console.log(chalk_1.default.green('✅ Schema loaded successfully.'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
const commander_1 = require("commander");
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
4
8
|
const generate_1 = require("./commands/generate");
|
|
5
9
|
const repl_1 = require("./commands/repl");
|
|
6
|
-
const serve_1 = require("./commands/serve");
|
|
7
10
|
const dev_1 = require("./commands/dev");
|
|
8
11
|
const start_1 = require("./commands/start");
|
|
9
12
|
const build_1 = require("./commands/build");
|
|
@@ -16,15 +19,19 @@ const i18n_1 = require("./commands/i18n");
|
|
|
16
19
|
const migrate_1 = require("./commands/migrate");
|
|
17
20
|
const ai_1 = require("./commands/ai");
|
|
18
21
|
const sync_1 = require("./commands/sync");
|
|
22
|
+
const doctor_1 = require("./commands/doctor");
|
|
23
|
+
const database_push_1 = require("./commands/database-push");
|
|
19
24
|
const program = new commander_1.Command();
|
|
20
25
|
program
|
|
21
26
|
.name('objectql')
|
|
22
|
-
.description('ObjectQL CLI tool')
|
|
27
|
+
.description('ObjectQL CLI tool - The ObjectStack AI Protocol Interface')
|
|
23
28
|
.version('1.5.0');
|
|
24
|
-
//
|
|
29
|
+
// ==========================================
|
|
30
|
+
// 1. Lifecycle Commands
|
|
31
|
+
// ==========================================
|
|
25
32
|
program
|
|
26
33
|
.command('init')
|
|
27
|
-
.description('Create a new ObjectQL project
|
|
34
|
+
.description('Create a new ObjectQL project')
|
|
28
35
|
.option('-t, --template <template>', 'Template to use (basic, express-api, enterprise)', 'basic')
|
|
29
36
|
.option('-n, --name <name>', 'Project name')
|
|
30
37
|
.option('-d, --dir <path>', 'Target directory')
|
|
@@ -39,308 +46,264 @@ program
|
|
|
39
46
|
process.exit(1);
|
|
40
47
|
}
|
|
41
48
|
});
|
|
42
|
-
// New command - Generate metadata files
|
|
43
49
|
program
|
|
44
|
-
.command('
|
|
45
|
-
.description('
|
|
46
|
-
.option('-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
.command('dev')
|
|
51
|
+
.description('Start development server with hot reload and type generation')
|
|
52
|
+
.option('-p, --port <number>', 'Port to listen on', '3000')
|
|
53
|
+
.option('-d, --dir <path>', 'Directory containing schema', '.')
|
|
54
|
+
.option('-c, --config <path>', 'Path to objectql.config.ts/js')
|
|
55
|
+
.option('--modules <items>', 'Comma-separated list of modules to load')
|
|
56
|
+
.option('--no-watch', 'Disable file watching')
|
|
57
|
+
.action(async (options) => {
|
|
58
|
+
await (0, dev_1.dev)({
|
|
59
|
+
port: parseInt(options.port),
|
|
60
|
+
dir: options.dir,
|
|
61
|
+
config: options.config,
|
|
62
|
+
modules: options.modules,
|
|
63
|
+
watch: options.watch
|
|
64
|
+
});
|
|
55
65
|
});
|
|
56
|
-
// Generate command - Generate TypeScript types
|
|
57
66
|
program
|
|
58
|
-
.command('
|
|
59
|
-
.
|
|
60
|
-
.
|
|
61
|
-
.option('-
|
|
62
|
-
.option('-
|
|
67
|
+
.command('build')
|
|
68
|
+
.description('Build project for production')
|
|
69
|
+
.option('-d, --dir <path>', 'Source directory', '.')
|
|
70
|
+
.option('-o, --output <path>', 'Output directory', './dist')
|
|
71
|
+
.option('--no-types', 'Skip TypeScript type generation')
|
|
72
|
+
.option('--no-validate', 'Skip metadata validation')
|
|
73
|
+
.action(async (options) => {
|
|
74
|
+
await (0, build_1.build)({
|
|
75
|
+
dir: options.dir,
|
|
76
|
+
output: options.output,
|
|
77
|
+
types: options.types,
|
|
78
|
+
validate: options.validate
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
program
|
|
82
|
+
.command('start')
|
|
83
|
+
.description('Start production server')
|
|
84
|
+
.option('-p, --port <number>', 'Port to listen on', '3000')
|
|
85
|
+
.option('-d, --dir <path>', 'Directory containing schema', '.')
|
|
86
|
+
.option('-c, --config <path>', 'Path to objectql.config.ts/js')
|
|
63
87
|
.action(async (options) => {
|
|
88
|
+
await (0, start_1.start)({
|
|
89
|
+
port: parseInt(options.port),
|
|
90
|
+
dir: options.dir,
|
|
91
|
+
config: options.config
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
// ==========================================
|
|
95
|
+
// 2. Scaffolding & Generators
|
|
96
|
+
// ==========================================
|
|
97
|
+
program
|
|
98
|
+
.command('generate <schematic> <name>')
|
|
99
|
+
.alias('g')
|
|
100
|
+
.description('Generate a new metadata element (object, action, etc.)')
|
|
101
|
+
.option('-d, --dir <path>', 'Output directory', '.')
|
|
102
|
+
.action(async (schematic, name, options) => {
|
|
64
103
|
try {
|
|
65
|
-
|
|
104
|
+
// Maps to existing newMetadata which accepts (type, name, dir)
|
|
105
|
+
await (0, new_1.newMetadata)({ type: schematic, name, dir: options.dir });
|
|
66
106
|
}
|
|
67
107
|
catch (error) {
|
|
68
108
|
console.error(error);
|
|
69
109
|
process.exit(1);
|
|
70
110
|
}
|
|
71
111
|
});
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
.
|
|
75
|
-
.description('Internationalization commands');
|
|
76
|
-
i18nCmd
|
|
77
|
-
.command('extract')
|
|
78
|
-
.description('Extract translatable strings from metadata files')
|
|
112
|
+
program
|
|
113
|
+
.command('types')
|
|
114
|
+
.description('Force regenerate TypeScript definitions')
|
|
79
115
|
.option('-s, --source <path>', 'Source directory', '.')
|
|
80
|
-
.option('-o, --output <path>', 'Output directory', './src/
|
|
81
|
-
.option('-l, --lang <lang>', 'Language code', 'en')
|
|
116
|
+
.option('-o, --output <path>', 'Output directory', './src/generated')
|
|
82
117
|
.action(async (options) => {
|
|
83
118
|
try {
|
|
84
|
-
await (0,
|
|
119
|
+
await (0, generate_1.generateTypes)(options.source, options.output);
|
|
85
120
|
}
|
|
86
121
|
catch (error) {
|
|
87
122
|
console.error(error);
|
|
88
123
|
process.exit(1);
|
|
89
124
|
}
|
|
90
125
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
126
|
+
// ==========================================
|
|
127
|
+
// 3. Database Operations
|
|
128
|
+
// ==========================================
|
|
129
|
+
const dbCmd = program.command('db').description('Database operations');
|
|
130
|
+
dbCmd
|
|
131
|
+
.command('push')
|
|
132
|
+
.description('Push metadata schema changes to the database')
|
|
133
|
+
.option('--force', 'Bypass safety checks')
|
|
134
|
+
.action(async (options) => {
|
|
96
135
|
try {
|
|
97
|
-
await (0,
|
|
136
|
+
await (0, database_push_1.dbPushCommand)(options);
|
|
98
137
|
}
|
|
99
138
|
catch (error) {
|
|
100
139
|
console.error(error);
|
|
101
140
|
process.exit(1);
|
|
102
141
|
}
|
|
103
142
|
});
|
|
104
|
-
|
|
105
|
-
.command('
|
|
106
|
-
.description('
|
|
107
|
-
.option('-
|
|
108
|
-
.option('
|
|
109
|
-
.
|
|
143
|
+
dbCmd
|
|
144
|
+
.command('pull')
|
|
145
|
+
.description('Introspect database and generate metadata (Reverse Engineering)')
|
|
146
|
+
.option('-c, --config <path>', 'Path to objectql.config.ts/js')
|
|
147
|
+
.option('-o, --output <path>', 'Output directory', './src/objects')
|
|
148
|
+
.option('-t, --tables <tables...>', 'Specific tables to sync')
|
|
149
|
+
.option('-f, --force', 'Overwrite existing files')
|
|
150
|
+
.action(async (options) => {
|
|
110
151
|
try {
|
|
111
|
-
|
|
152
|
+
// Maps to existing syncDatabase
|
|
153
|
+
await (0, sync_1.syncDatabase)(options);
|
|
112
154
|
}
|
|
113
155
|
catch (error) {
|
|
114
156
|
console.error(error);
|
|
115
157
|
process.exit(1);
|
|
116
158
|
}
|
|
117
159
|
});
|
|
118
|
-
// Migration commands
|
|
160
|
+
// Migration commands - kept as top level or move to db:migrate?
|
|
161
|
+
// Staying top level or db:migrate is fine. Let's keep `migrate` top level for familiarity with typeorm/prisma users or move to db?
|
|
162
|
+
// User request: "Declarative > Imperative".
|
|
163
|
+
// Let's alias db:migrate to migrate for now, or just keep migrate.
|
|
164
|
+
// Standard in many tools is `migrate` or `db migrate`.
|
|
165
|
+
// Let's keep `migrate` as top level group for explicit control.
|
|
119
166
|
const migrateCmd = program
|
|
120
167
|
.command('migrate')
|
|
121
|
-
.description('
|
|
168
|
+
.description('Manage database migrations');
|
|
169
|
+
migrateCmd
|
|
170
|
+
.command('up') // Changed from default action to explicit 'up'
|
|
171
|
+
.description('Run pending migrations')
|
|
122
172
|
.option('-c, --config <path>', 'Path to objectql.config.ts/js')
|
|
123
173
|
.option('-d, --dir <path>', 'Migrations directory', './migrations')
|
|
124
174
|
.action(async (options) => {
|
|
125
|
-
|
|
126
|
-
await (0, migrate_1.migrate)(options);
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
console.error(error);
|
|
130
|
-
process.exit(1);
|
|
131
|
-
}
|
|
175
|
+
await (0, migrate_1.migrate)(options);
|
|
132
176
|
});
|
|
133
177
|
migrateCmd
|
|
134
178
|
.command('create <name>')
|
|
135
179
|
.description('Create a new migration file')
|
|
136
180
|
.option('-d, --dir <path>', 'Migrations directory', './migrations')
|
|
137
181
|
.action(async (name, options) => {
|
|
138
|
-
|
|
139
|
-
await (0, migrate_1.migrateCreate)({ name, dir: options.dir });
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
console.error(error);
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
182
|
+
await (0, migrate_1.migrateCreate)({ name, dir: options.dir });
|
|
145
183
|
});
|
|
146
184
|
migrateCmd
|
|
147
185
|
.command('status')
|
|
148
186
|
.description('Show migration status')
|
|
149
|
-
.option('-c, --config <path>', 'Path to objectql.config.ts/js')
|
|
150
|
-
.option('-d, --dir <path>', 'Migrations directory', './migrations')
|
|
151
187
|
.action(async (options) => {
|
|
152
|
-
|
|
153
|
-
await (0, migrate_1.migrateStatus)(options);
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
console.error(error);
|
|
157
|
-
process.exit(1);
|
|
158
|
-
}
|
|
188
|
+
await (0, migrate_1.migrateStatus)(options);
|
|
159
189
|
});
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
.
|
|
165
|
-
.
|
|
166
|
-
|
|
167
|
-
.
|
|
190
|
+
// ==========================================
|
|
191
|
+
// 4. AI Architect
|
|
192
|
+
// ==========================================
|
|
193
|
+
const aiCmd = program
|
|
194
|
+
.command('ai')
|
|
195
|
+
.description('AI Architect capabilities');
|
|
196
|
+
aiCmd
|
|
197
|
+
.command('chat')
|
|
198
|
+
.description('Interactive architecture chat')
|
|
199
|
+
.option('-p, --prompt <text>', 'Initial prompt')
|
|
168
200
|
.action(async (options) => {
|
|
169
|
-
|
|
170
|
-
await (0, sync_1.syncDatabase)(options);
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
console.error(error);
|
|
174
|
-
process.exit(1);
|
|
175
|
-
}
|
|
201
|
+
await (0, ai_1.aiChat)({ initialPrompt: options.prompt });
|
|
176
202
|
});
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
.
|
|
180
|
-
.
|
|
181
|
-
.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
await (0,
|
|
203
|
+
aiCmd
|
|
204
|
+
.command('run <prompt>') // Changed from generate to run/exec for simple "Do this"
|
|
205
|
+
.description('Execute an AI modification on the project (e.g. "Add a blog module")')
|
|
206
|
+
.option('-o, --output <path>', 'Output directory', './src')
|
|
207
|
+
.action(async (prompt, options) => {
|
|
208
|
+
// Maps to simple conversational or generate
|
|
209
|
+
// Let's map to aiGenerate but pass description
|
|
210
|
+
await (0, ai_1.aiGenerate)({ description: prompt, output: options.output, type: 'custom' });
|
|
185
211
|
});
|
|
186
|
-
//
|
|
212
|
+
// ==========================================
|
|
213
|
+
// 5. Diagnostics & Tools
|
|
214
|
+
// ==========================================
|
|
187
215
|
program
|
|
188
|
-
.command('
|
|
189
|
-
.
|
|
190
|
-
.
|
|
191
|
-
|
|
192
|
-
.option('-d, --dir <path>', 'Directory containing schema', '.')
|
|
193
|
-
.option('--no-watch', 'Disable file watching')
|
|
194
|
-
.action(async (options) => {
|
|
195
|
-
await (0, dev_1.dev)({
|
|
196
|
-
port: parseInt(options.port),
|
|
197
|
-
dir: options.dir,
|
|
198
|
-
watch: options.watch
|
|
199
|
-
});
|
|
216
|
+
.command('doctor')
|
|
217
|
+
.description('Check environment and configuration health')
|
|
218
|
+
.action(async () => {
|
|
219
|
+
await (0, doctor_1.doctorCommand)();
|
|
200
220
|
});
|
|
201
|
-
// Start command - Production server
|
|
202
221
|
program
|
|
203
|
-
.command('
|
|
204
|
-
.description('
|
|
205
|
-
.option('-
|
|
206
|
-
.option('-d, --dir <path>', 'Directory containing schema', '.')
|
|
207
|
-
.option('-c, --config <path>', 'Path to objectql.config.ts/js')
|
|
222
|
+
.command('validate')
|
|
223
|
+
.description('Validate all metadata files')
|
|
224
|
+
.option('-d, --dir <path>', 'Directory to validate', '.')
|
|
208
225
|
.action(async (options) => {
|
|
209
|
-
await (0,
|
|
210
|
-
port: parseInt(options.port),
|
|
211
|
-
dir: options.dir,
|
|
212
|
-
config: options.config
|
|
213
|
-
});
|
|
226
|
+
await (0, doctor_1.validateCommand)(options);
|
|
214
227
|
});
|
|
215
|
-
// Build command - Build project for production
|
|
216
228
|
program
|
|
217
|
-
.command('
|
|
218
|
-
.
|
|
219
|
-
.
|
|
220
|
-
.option('-d, --dir <path>', 'Source directory', '.')
|
|
221
|
-
.option('-o, --output <path>', 'Output directory', './dist')
|
|
222
|
-
.option('--no-types', 'Skip TypeScript type generation')
|
|
223
|
-
.option('--no-validate', 'Skip metadata validation')
|
|
229
|
+
.command('repl')
|
|
230
|
+
.description('Start interactive REPL')
|
|
231
|
+
.option('-c, --config <path>', 'Path to objectql.config.ts')
|
|
224
232
|
.action(async (options) => {
|
|
225
|
-
await (0,
|
|
226
|
-
dir: options.dir,
|
|
227
|
-
output: options.output,
|
|
228
|
-
types: options.types,
|
|
229
|
-
validate: options.validate
|
|
230
|
-
});
|
|
233
|
+
await (0, repl_1.startRepl)(options.config);
|
|
231
234
|
});
|
|
232
|
-
// Test command - Run tests
|
|
233
235
|
program
|
|
234
236
|
.command('test')
|
|
235
|
-
.alias('t')
|
|
236
237
|
.description('Run tests')
|
|
237
|
-
.option('-d, --dir <path>', 'Project directory', '.')
|
|
238
|
-
.option('-w, --watch', 'Watch mode')
|
|
239
|
-
.option('--coverage', 'Generate coverage report')
|
|
240
238
|
.action(async (options) => {
|
|
241
|
-
await (0, test_1.test)(
|
|
242
|
-
dir: options.dir,
|
|
243
|
-
watch: options.watch,
|
|
244
|
-
coverage: options.coverage
|
|
245
|
-
});
|
|
239
|
+
await (0, test_1.test)(options);
|
|
246
240
|
});
|
|
247
|
-
// Lint command - Validate metadata
|
|
248
241
|
program
|
|
249
242
|
.command('lint')
|
|
250
|
-
.
|
|
251
|
-
.description('Validate metadata files')
|
|
252
|
-
.option('-d, --dir <path>', 'Directory to lint', '.')
|
|
253
|
-
.option('--fix', 'Automatically fix issues')
|
|
243
|
+
.description('Lint metadata files')
|
|
254
244
|
.action(async (options) => {
|
|
255
|
-
await (0, lint_1.lint)(
|
|
256
|
-
dir: options.dir,
|
|
257
|
-
fix: options.fix
|
|
258
|
-
});
|
|
245
|
+
await (0, lint_1.lint)(options);
|
|
259
246
|
});
|
|
260
|
-
// Format command - Format metadata files
|
|
261
247
|
program
|
|
262
248
|
.command('format')
|
|
263
|
-
.
|
|
264
|
-
.description('Format metadata files with Prettier')
|
|
265
|
-
.option('-d, --dir <path>', 'Directory to format', '.')
|
|
266
|
-
.option('--check', 'Check if files are formatted without modifying')
|
|
249
|
+
.description('Format metadata files')
|
|
267
250
|
.action(async (options) => {
|
|
268
|
-
await (0, format_1.format)(
|
|
269
|
-
dir: options.dir,
|
|
270
|
-
check: options.check
|
|
271
|
-
});
|
|
251
|
+
await (0, format_1.format)(options);
|
|
272
252
|
});
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
.
|
|
278
|
-
.
|
|
279
|
-
|
|
253
|
+
// ==========================================
|
|
254
|
+
// 6. I18n
|
|
255
|
+
// ==========================================
|
|
256
|
+
const i18nCmd = program
|
|
257
|
+
.command('i18n')
|
|
258
|
+
.description('Internationalization commands');
|
|
259
|
+
i18nCmd
|
|
260
|
+
.command('extract')
|
|
261
|
+
.description('Extract translatable strings from metadata files')
|
|
262
|
+
.option('-s, --source <path>', 'Source directory', '.')
|
|
263
|
+
.option('-o, --output <path>', 'Output directory', './src/i18n')
|
|
264
|
+
.option('-l, --lang <lang>', 'Language code', 'en')
|
|
280
265
|
.action(async (options) => {
|
|
281
|
-
await (0, serve_1.serve)({ port: parseInt(options.port), dir: options.dir });
|
|
282
|
-
});
|
|
283
|
-
// AI command - Interactive by default, with specific subcommands for other modes
|
|
284
|
-
const aiCmd = program
|
|
285
|
-
.command('ai')
|
|
286
|
-
.description('AI-powered interactive application builder (starts conversational mode by default)');
|
|
287
|
-
// Default action: Interactive conversational mode
|
|
288
|
-
aiCmd
|
|
289
|
-
.argument('[output-dir]', 'Output directory for generated files', './src')
|
|
290
|
-
.action(async (outputDir) => {
|
|
291
266
|
try {
|
|
292
|
-
await (0,
|
|
267
|
+
await (0, i18n_1.i18nExtract)(options);
|
|
293
268
|
}
|
|
294
269
|
catch (error) {
|
|
295
270
|
console.error(error);
|
|
296
271
|
process.exit(1);
|
|
297
272
|
}
|
|
298
273
|
});
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
.
|
|
302
|
-
.
|
|
303
|
-
.
|
|
304
|
-
.option('-o, --output <path>', 'Output directory', './src')
|
|
305
|
-
.option('-t, --type <type>', 'Generation type: basic, complete, or custom', 'custom')
|
|
306
|
-
.action(async (options) => {
|
|
274
|
+
i18nCmd
|
|
275
|
+
.command('init <lang>')
|
|
276
|
+
.description('Initialize i18n for a new language')
|
|
277
|
+
.option('-b, --base-dir <path>', 'Base i18n directory', './src/i18n')
|
|
278
|
+
.action(async (lang, options) => {
|
|
307
279
|
try {
|
|
308
|
-
await (0,
|
|
280
|
+
await (0, i18n_1.i18nInit)({ lang, baseDir: options.baseDir });
|
|
309
281
|
}
|
|
310
282
|
catch (error) {
|
|
311
283
|
console.error(error);
|
|
312
284
|
process.exit(1);
|
|
313
285
|
}
|
|
314
286
|
});
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
.
|
|
318
|
-
.
|
|
319
|
-
.
|
|
320
|
-
.
|
|
321
|
-
.option('-v, --verbose', 'Detailed output')
|
|
322
|
-
.action(async (pathArg, options) => {
|
|
287
|
+
i18nCmd
|
|
288
|
+
.command('validate <lang>')
|
|
289
|
+
.description('Validate translation completeness')
|
|
290
|
+
.option('-b, --base-dir <path>', 'Base i18n directory', './src/i18n')
|
|
291
|
+
.option('--base-lang <lang>', 'Base language to compare against', 'en')
|
|
292
|
+
.action(async (lang, options) => {
|
|
323
293
|
try {
|
|
324
|
-
await (0,
|
|
294
|
+
await (0, i18n_1.i18nValidate)({ lang, baseDir: options.baseDir, baseLang: options.baseLang });
|
|
325
295
|
}
|
|
326
296
|
catch (error) {
|
|
327
297
|
console.error(error);
|
|
328
298
|
process.exit(1);
|
|
329
299
|
}
|
|
330
300
|
});
|
|
331
|
-
//
|
|
332
|
-
|
|
333
|
-
.command('
|
|
334
|
-
.
|
|
335
|
-
.
|
|
336
|
-
.
|
|
337
|
-
try {
|
|
338
|
-
await (0, ai_1.aiChat)({ initialPrompt: options.prompt });
|
|
339
|
-
}
|
|
340
|
-
catch (error) {
|
|
341
|
-
console.error(error);
|
|
342
|
-
process.exit(1);
|
|
343
|
-
}
|
|
301
|
+
// Backward compatibility (Hidden or Deprecated)
|
|
302
|
+
program
|
|
303
|
+
.command('new <type> <name>', { hidden: true })
|
|
304
|
+
.action(async (type, name, options) => {
|
|
305
|
+
console.warn(chalk_1.default.yellow('Deprecated: Use "objectql generate" instead.'));
|
|
306
|
+
await (0, new_1.newMetadata)({ type, name, dir: options.dir });
|
|
344
307
|
});
|
|
345
|
-
program.parse();
|
|
308
|
+
program.parse(process.argv);
|
|
346
309
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|