@objectql/cli 1.8.4 → 1.9.1

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.
Files changed (98) hide show
  1. package/README.md +2 -2
  2. package/dist/commands/database-push.d.ts +5 -0
  3. package/dist/commands/database-push.js +15 -0
  4. package/dist/commands/database-push.js.map +1 -0
  5. package/dist/commands/dev.d.ts +2 -0
  6. package/dist/commands/dev.js +94 -6
  7. package/dist/commands/dev.js.map +1 -1
  8. package/dist/commands/doctor.d.ts +4 -0
  9. package/dist/commands/doctor.js +37 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/init.js +31 -30
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/serve.d.ts +2 -0
  14. package/dist/commands/serve.js +122 -46
  15. package/dist/commands/serve.js.map +1 -1
  16. package/dist/commands/start.d.ts +1 -0
  17. package/dist/commands/start.js +15 -0
  18. package/dist/commands/start.js.map +1 -1
  19. package/dist/index.js +15 -338
  20. package/dist/index.js.map +1 -1
  21. package/dist/register/ai.d.ts +2 -0
  22. package/dist/register/ai.js +24 -0
  23. package/dist/register/ai.js.map +1 -0
  24. package/dist/register/database.d.ts +2 -0
  25. package/dist/register/database.js +64 -0
  26. package/dist/register/database.js.map +1 -0
  27. package/dist/register/i18n.d.ts +2 -0
  28. package/dist/register/i18n.js +52 -0
  29. package/dist/register/i18n.js.map +1 -0
  30. package/dist/register/lifecycle.d.ts +2 -0
  31. package/dist/register/lifecycle.js +68 -0
  32. package/dist/register/lifecycle.js.map +1 -0
  33. package/dist/register/scaffold.d.ts +2 -0
  34. package/dist/register/scaffold.js +48 -0
  35. package/dist/register/scaffold.js.map +1 -0
  36. package/dist/register/tools.d.ts +2 -0
  37. package/dist/register/tools.js +49 -0
  38. package/dist/register/tools.js.map +1 -0
  39. package/package.json +13 -7
  40. package/templates/hello-world/.vscode/extensions.json +7 -0
  41. package/templates/hello-world/CHANGELOG.md +49 -0
  42. package/templates/hello-world/README.md +29 -0
  43. package/templates/hello-world/package.json +24 -0
  44. package/templates/hello-world/src/index.ts +58 -0
  45. package/templates/hello-world/tsconfig.json +10 -0
  46. package/templates/starter/.vscode/extensions.json +7 -0
  47. package/{CHANGELOG.md → templates/starter/CHANGELOG.md} +46 -42
  48. package/templates/starter/README.md +17 -0
  49. package/templates/starter/__tests__/projects-hooks-actions.test.ts +490 -0
  50. package/templates/starter/jest.config.js +16 -0
  51. package/templates/starter/package.json +52 -0
  52. package/templates/starter/src/README.pages.md +110 -0
  53. package/templates/starter/src/demo.app.yml +4 -0
  54. package/templates/starter/src/i18n/zh-CN/projects.json +22 -0
  55. package/templates/starter/src/modules/kitchen-sink/kitchen_sink.data.yml +18 -0
  56. package/templates/starter/src/modules/kitchen-sink/kitchen_sink.object.yml +156 -0
  57. package/templates/starter/src/modules/projects/project_approval.workflow.yml +51 -0
  58. package/templates/starter/src/modules/projects/projects.action.ts +472 -0
  59. package/templates/starter/src/modules/projects/projects.data.yml +13 -0
  60. package/templates/starter/src/modules/projects/projects.hook.ts +339 -0
  61. package/templates/starter/src/modules/projects/projects.object.yml +148 -0
  62. package/templates/starter/src/modules/projects/projects.permission.yml +141 -0
  63. package/templates/starter/src/modules/projects/projects.validation.yml +37 -0
  64. package/templates/starter/src/modules/tasks/tasks.data.yml +23 -0
  65. package/templates/starter/src/modules/tasks/tasks.object.yml +34 -0
  66. package/templates/starter/src/modules/tasks/tasks.permission.yml +167 -0
  67. package/templates/starter/src/seed.ts +55 -0
  68. package/templates/starter/src/types/index.ts +3 -0
  69. package/templates/starter/src/types/kitchen_sink.ts +101 -0
  70. package/templates/starter/src/types/projects.ts +49 -0
  71. package/templates/starter/src/types/tasks.ts +33 -0
  72. package/templates/starter/tsconfig.json +11 -0
  73. package/templates/starter/tsconfig.tsbuildinfo +1 -0
  74. package/AI_EXAMPLES.md +0 -154
  75. package/AI_IMPLEMENTATION_SUMMARY.md +0 -509
  76. package/AI_TUTORIAL.md +0 -144
  77. package/IMPLEMENTATION_SUMMARY.md +0 -437
  78. package/USAGE_EXAMPLES.md +0 -951
  79. package/__tests__/commands.test.ts +0 -426
  80. package/jest.config.js +0 -19
  81. package/src/commands/ai.ts +0 -509
  82. package/src/commands/build.ts +0 -98
  83. package/src/commands/dev.ts +0 -23
  84. package/src/commands/format.ts +0 -110
  85. package/src/commands/generate.ts +0 -135
  86. package/src/commands/i18n.ts +0 -303
  87. package/src/commands/init.ts +0 -191
  88. package/src/commands/lint.ts +0 -98
  89. package/src/commands/migrate.ts +0 -314
  90. package/src/commands/new.ts +0 -221
  91. package/src/commands/repl.ts +0 -120
  92. package/src/commands/serve.ts +0 -96
  93. package/src/commands/start.ts +0 -100
  94. package/src/commands/sync.ts +0 -328
  95. package/src/commands/test.ts +0 -98
  96. package/src/index.ts +0 -356
  97. package/tsconfig.json +0 -15
  98. package/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -449,7 +449,7 @@ objectql dev --no-watch
449
449
  ```
450
450
 
451
451
  The development server provides:
452
- - **Swagger UI**: `http://localhost:<port>/swagger` - Interactive API documentation
452
+ - **API Docs (Scalar)**: `http://localhost:<port>/docs` - Interactive API documentation
453
453
  - **API Endpoint**: `http://localhost:<port>/` - Main API endpoint
454
454
  - **OpenAPI Spec**: `http://localhost:<port>/openapi.json` - Machine-readable API spec
455
455
 
@@ -602,7 +602,7 @@ objectql serve --dir ./src/schema --port 8080
602
602
  ```
603
603
 
604
604
  The server exposes:
605
- - **Web Console (Swagger UI)**: `http://localhost:<port>/swagger` (GET) - Interactive API explorer
605
+ - **Web Console (API Docs)**: `http://localhost:<port>/docs` (GET) - Interactive API explorer
606
606
  - **JSON API Endpoint**: `http://localhost:<port>/` (POST)
607
607
  - **OpenAPI Spec**: `http://localhost:<port>/openapi.json` (GET)
608
608
 
@@ -0,0 +1,5 @@
1
+ interface DbPushOptions {
2
+ force?: boolean;
3
+ }
4
+ export declare function dbPushCommand(options: DbPushOptions): Promise<void>;
5
+ export {};
@@ -0,0 +1,15 @@
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.dbPushCommand = dbPushCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ async function dbPushCommand(options) {
9
+ console.log(chalk_1.default.blue('💾 Database Push'));
10
+ console.log(chalk_1.default.gray('Synchronizing schema with database...'));
11
+ console.log(chalk_1.default.yellow('🚧 Feature under construction'));
12
+ console.log('This command will comparison the current YAML schema with the database and apply changes.');
13
+ console.log('For now, please use migration flows.');
14
+ }
15
+ //# sourceMappingURL=database-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-push.js","sourceRoot":"","sources":["../../src/commands/database-push.ts"],"names":[],"mappings":";;;;;AAMA,sCAOC;AAbD,kDAA0B;AAMnB,KAAK,UAAU,aAAa,CAAC,OAAsB;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACxD,CAAC"}
@@ -5,5 +5,7 @@
5
5
  export declare function dev(options: {
6
6
  port: number;
7
7
  dir: string;
8
+ config?: string;
9
+ modules?: string;
8
10
  watch?: boolean;
9
11
  }): Promise<void>;
@@ -1,23 +1,111 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
5
38
  Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.dev = dev;
7
40
  const serve_1 = require("./serve");
41
+ const generate_1 = require("./generate");
8
42
  const chalk_1 = __importDefault(require("chalk"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
9
45
  /**
10
46
  * Start development server with hot reload
11
47
  * This is an enhanced version of the serve command for development workflow
12
48
  */
13
49
  async function dev(options) {
14
- console.log(chalk_1.default.cyan('🚀 Starting ObjectQL Development Server...\n'));
15
- // For now, delegate to serve command
16
- // In future, can add file watching and auto-reload
17
- await (0, serve_1.serve)({ port: options.port, dir: options.dir });
50
+ console.log(chalk_1.default.cyan('🚀 Starting ObjectQL Development Server...'));
51
+ const sourceDir = path.resolve(process.cwd(), options.dir || '.');
52
+ // Output types to the source directory under 'generated' folder
53
+ const typeOutputDir = path.join(sourceDir, 'generated');
54
+ // 1. Initial Type Generation
55
+ try {
56
+ await (0, generate_1.generateTypes)(sourceDir, typeOutputDir);
57
+ }
58
+ catch (e) {
59
+ console.error(chalk_1.default.red('Initial type generation failed:'), e);
60
+ // Continue anyway, maybe it's just a starting project
61
+ }
62
+ // 2. Setup Watcher (Before serve, in case serve blocks)
18
63
  if (options.watch !== false) {
19
- console.log(chalk_1.default.yellow('\n👀 Watching for file changes... (Not yet implemented)'));
20
- console.log(chalk_1.default.gray(' Tip: Use --no-watch to disable file watching'));
64
+ startWatcher(sourceDir, typeOutputDir);
65
+ }
66
+ console.log(chalk_1.default.blue(`\n🌐 Server context: ${sourceDir}`));
67
+ console.log(chalk_1.default.blue(`📁 Type output: ${typeOutputDir}`));
68
+ // 3. Start Server
69
+ await (0, serve_1.serve)({
70
+ port: options.port,
71
+ dir: options.dir,
72
+ config: options.config,
73
+ modules: options.modules
74
+ });
75
+ }
76
+ let debounceTimer = null;
77
+ function startWatcher(sourceDir, outputDir) {
78
+ console.log(chalk_1.default.yellow('👀 Watching for metadata changes...'));
79
+ try {
80
+ // Recursive watch
81
+ const watcher = fs.watch(sourceDir, { recursive: true }, (eventType, filename) => {
82
+ if (!filename)
83
+ return;
84
+ // Ignore generated directory to prevent loops if output is inside source
85
+ if (filename.includes('generated') || filename.includes('node_modules') || filename.includes('.git')) {
86
+ return;
87
+ }
88
+ // Only care about YAML
89
+ if (filename.endsWith('.yml') || filename.endsWith('.yaml')) {
90
+ // Debounce
91
+ if (debounceTimer)
92
+ clearTimeout(debounceTimer);
93
+ debounceTimer = setTimeout(async () => {
94
+ console.log(chalk_1.default.gray(`\n📝 Change detected: ${filename}`));
95
+ try {
96
+ console.log(chalk_1.default.blue('⚡️ Regenerating types...'));
97
+ await (0, generate_1.generateTypes)(sourceDir, outputDir);
98
+ }
99
+ catch (e) {
100
+ console.error(chalk_1.default.red('Type generation failed:'), e);
101
+ }
102
+ }, 500);
103
+ }
104
+ });
105
+ watcher.on('error', (e) => console.error(chalk_1.default.red('Watcher error:'), e));
106
+ }
107
+ catch (e) {
108
+ console.warn(chalk_1.default.yellow('Native recursive watch not supported or failed. Watching root only.'));
21
109
  }
22
110
  }
23
111
  //# sourceMappingURL=dev.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":";;;;;AAOA,kBAeC;AAtBD,mCAAgC;AAChC,kDAA0B;AAE1B;;;GAGG;AACI,KAAK,UAAU,GAAG,CAAC,OAIzB;IACG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAExE,qCAAqC;IACrC,mDAAmD;IACnD,MAAM,IAAA,aAAK,EAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC/E,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function doctorCommand(): Promise<void>;
2
+ export declare function validateCommand(options: {
3
+ dir?: string;
4
+ }): Promise<void>;
@@ -0,0 +1,37 @@
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.doctorCommand = doctorCommand;
7
+ exports.validateCommand = validateCommand;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ async function doctorCommand() {
10
+ console.log(chalk_1.default.blue('🩺 ObjectQL Doctor'));
11
+ console.log(chalk_1.default.gray('Checking environment health...'));
12
+ // 1. Check Node Version
13
+ const nodeVersion = process.version;
14
+ console.log(`Node.js: ${chalk_1.default.green(nodeVersion)}`);
15
+ // 2. Check Configuration
16
+ try {
17
+ console.log('Configuration: Checking objectql.config.ts...');
18
+ // Mock check
19
+ console.log(chalk_1.default.green('OK'));
20
+ }
21
+ catch (e) {
22
+ console.log(chalk_1.default.red('FAIL'));
23
+ }
24
+ // 3. Check Dependencies
25
+ // TODO: rigorous dependency check
26
+ console.log(chalk_1.default.green('\nEverything looks good!'));
27
+ }
28
+ async function validateCommand(options) {
29
+ console.log(chalk_1.default.blue('🔍 Validating Metadata...'));
30
+ // This would invoke the core validator
31
+ console.log(chalk_1.default.gray('Feature coming soon: Will validate all .object.yml files against schema.'));
32
+ }
33
+ async function loadObjectQLInstance(configPath) {
34
+ // Placeholder for actual loader logic if not exported from elsewhere
35
+ return {};
36
+ }
37
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":";;;;;AAEA,sCAqBC;AAED,0CAIC;AA7BD,kDAA0B;AAEnB,KAAK,UAAU,aAAa;IAC/B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE1D,wBAAwB;IACxB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,YAAY,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAEpD,yBAAyB;IACzB,IAAI,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,wBAAwB;IACxB,kCAAkC;IAElC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACzD,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAAyB;IAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,UAAmB;IACnD,qEAAqE;IACrE,OAAO,EAAE,CAAC;AACd,CAAC"}
@@ -44,14 +44,13 @@ const util_1 = require("util");
44
44
  const chalk_1 = __importDefault(require("chalk"));
45
45
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
46
46
  const TEMPLATES = {
47
- basic: '@objectql/starter-basic',
48
- 'express-api': '@objectql/starter-express-api',
49
- enterprise: '@objectql/starter-enterprise'
47
+ 'hello-world': 'hello-world',
48
+ 'starter': 'project-tracker'
50
49
  };
51
50
  async function initProject(options) {
52
51
  const projectName = options.name || 'my-objectql-project';
53
52
  const targetDir = options.dir || path.join(process.cwd(), projectName);
54
- const template = (options.template || 'basic');
53
+ const template = (options.template || 'starter');
55
54
  if (!TEMPLATES[template]) {
56
55
  console.error(chalk_1.default.red(`❌ Unknown template: ${template}`));
57
56
  console.log(chalk_1.default.gray(`Available templates: ${Object.keys(TEMPLATES).join(', ')}`));
@@ -68,41 +67,43 @@ async function initProject(options) {
68
67
  // Create project directory
69
68
  fs.mkdirSync(targetDir, { recursive: true });
70
69
  try {
71
- // Copy template files from starters
72
- const templatePath = path.join(__dirname, '../../../../starters', template);
73
- // Check if we're in the monorepo (for development)
74
- if (fs.existsSync(templatePath)) {
75
- console.log(chalk_1.default.gray('Copying template files...'));
76
- await copyDirectory(templatePath, targetDir, ['node_modules', 'dist', '.git']);
77
- }
78
- else {
79
- // Try to use the published package
80
- console.log(chalk_1.default.gray(`Installing template from npm: ${TEMPLATES[template]}...`));
81
- await execAsync(`npm create ${TEMPLATES[template]} ${targetDir}`, {
82
- cwd: process.cwd()
83
- });
70
+ // Copy embedded template
71
+ const templateName = TEMPLATES[template];
72
+ // Must resolve relative to the dist/commands folder structure
73
+ const sourcePath = path.resolve(__dirname, '../../templates', templateName);
74
+ if (!fs.existsSync(sourcePath)) {
75
+ // Fallback for development (running directly from src)
76
+ // If running via ts-node in dev, structure might be different
77
+ throw new Error(`Template not found at ${sourcePath}. Please check your CLI installation.`);
84
78
  }
79
+ console.log(chalk_1.default.cyan(`⬇️ Creating project from embedded template...`));
80
+ await copyDirectory(sourcePath, targetDir, ['node_modules', 'dist', '.git']);
81
+ console.log(chalk_1.default.green('✅ Template created successfully.'));
85
82
  // Update package.json with project name
86
83
  const pkgPath = path.join(targetDir, 'package.json');
87
84
  if (fs.existsSync(pkgPath)) {
88
85
  const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
89
86
  pkg.name = projectName;
90
87
  pkg.version = '0.1.0';
91
- // Convert workspace dependencies to actual versions for standalone project
92
- if (pkg.dependencies) {
93
- for (const dep of Object.keys(pkg.dependencies)) {
94
- if (pkg.dependencies[dep] === 'workspace:*') {
95
- pkg.dependencies[dep] = '^1.0.0'; // Use latest published version
96
- }
97
- }
98
- }
99
- if (pkg.devDependencies) {
100
- for (const dep of Object.keys(pkg.devDependencies)) {
101
- if (pkg.devDependencies[dep] === 'workspace:*') {
102
- pkg.devDependencies[dep] = '^1.0.0';
88
+ // Note: Since we are using examples from the monorepo,
89
+ // they might have "workspace:*" protocols.
90
+ // We should replace them with "latest" or a specific version for end users.
91
+ const replaceWorkspaceVersion = (deps) => {
92
+ for (const dep of Object.keys(deps)) {
93
+ if (deps[dep] === 'workspace:*') {
94
+ // For public release, this should match the current CLI version or latest
95
+ deps[dep] = 'latest';
103
96
  }
104
97
  }
105
- }
98
+ };
99
+ if (pkg.dependencies)
100
+ replaceWorkspaceVersion(pkg.dependencies);
101
+ if (pkg.devDependencies)
102
+ replaceWorkspaceVersion(pkg.devDependencies); // Often peerDeps in examples
103
+ // Make public for the user's new project
104
+ delete pkg.private;
105
+ // Reset repository field as it will be a new repo
106
+ delete pkg.repository;
106
107
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
107
108
  }
108
109
  // Initialize git repository
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,kCAsIC;AA5JD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAqC;AACrC,+BAAiC;AACjC,kDAA0B;AAE1B,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAUlC,MAAM,SAAS,GAAG;IACd,KAAK,EAAE,yBAAyB;IAChC,aAAa,EAAE,+BAA+B;IAC9C,UAAU,EAAE,8BAA8B;CAC7C,CAAC;AAEK,KAAK,UAAU,WAAW,CAAC,OAAoB;IAClD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,qBAAqB,CAAC;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAA2B,CAAC;IAEzE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,SAAS,IAAI,CAAC,CAAC,CAAC;IAErD,4BAA4B;IAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,2BAA2B;IAC3B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,IAAI,CAAC;QACD,oCAAoC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAC;QAE5E,mDAAmD;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACrD,MAAM,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACJ,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACnF,MAAM,SAAS,CAAC,cAAc,SAAS,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,EAAE;gBAC9D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;QACP,CAAC;QAED,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1D,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;YACvB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YACtB,2EAA2E;YAC3E,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC9C,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,aAAa,EAAE,CAAC;wBAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,+BAA+B;oBACrE,CAAC;gBACL,CAAC;YACL,CAAC;YACD,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;oBACjD,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,aAAa,EAAE,CAAC;wBAC7C,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;oBACxC,CAAC;gBACL,CAAC;YACL,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC5D,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEhD,wCAAwC;gBACxC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,MAAM,SAAS,GAAG;;;;;;;CAOrC,CAAC;oBACkB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBAC/C,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAE9D,IAAI,CAAC;gBACD,mCAAmC;gBACnC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE/C,MAAM,SAAS,CAAC,GAAG,cAAc,UAAU,EAAE;oBACzC,GAAG,EAAE,SAAS;oBACd,gEAAgE;iBACnE,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,cAAc,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qCAAqC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,WAAW,iBAAiB,CAAC,CAAC,CAAC;YAClE,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;IAEtF,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3E,WAAW;QACX,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY,EAAE,SAAmB,EAAE;IACzE,+BAA+B;IAC/B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,2BAA2B;QAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,SAAS;QACb,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,GAAW;IACnC,IAAI,CAAC;QACD,MAAM,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export declare function serve(options: {
2
2
  port: number;
3
3
  dir: string;
4
+ config?: string;
5
+ modules?: string;
4
6
  }): Promise<void>;
@@ -43,52 +43,99 @@ const platform_node_1 = require("@objectql/platform-node");
43
43
  const server_1 = require("@objectql/server");
44
44
  const http_1 = require("http");
45
45
  const path = __importStar(require("path"));
46
+ const fs = __importStar(require("fs"));
46
47
  const chalk_1 = __importDefault(require("chalk"));
47
- const CONSOLE_HTML = `
48
+ const SCALAR_HTML = `
48
49
  <!DOCTYPE html>
49
- <html lang="en">
50
- <head>
51
- <meta charset="utf-8" />
52
- <meta name="viewport" content="width=device-width, initial-scale=1" />
53
- <title>ObjectQL Swagger UI</title>
54
- <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui.css" />
55
- <style>
56
- body { margin: 0; padding: 0; }
57
- </style>
58
- </head>
59
- <body>
60
- <div id="swagger-ui"></div>
61
- <script src="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui-bundle.js" crossorigin></script>
62
- <script>
63
- window.onload = () => {
64
- window.ui = SwaggerUIBundle({
65
- url: '/openapi.json',
66
- dom_id: '#swagger-ui',
67
- });
68
- };
69
- </script>
70
- </body>
50
+ <html>
51
+ <head>
52
+ <title>ObjectQL API Reference</title>
53
+ <meta charset="utf-8" />
54
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
55
+ <style>
56
+ body { margin: 0; }
57
+ </style>
58
+ </head>
59
+ <body>
60
+ <script
61
+ id="api-reference"
62
+ data-url="/openapi.json"
63
+ data-proxy-url="https://proxy.scalar.com"
64
+ data-configuration='{"theme": "deepSpace"}'
65
+ ></script>
66
+ <script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
67
+ </body>
71
68
  </html>
72
69
  `;
73
70
  async function serve(options) {
71
+ var _a, _b;
74
72
  console.log(chalk_1.default.blue('Starting ObjectQL Dev Server...'));
75
73
  const rootDir = path.resolve(process.cwd(), options.dir);
76
74
  console.log(chalk_1.default.gray(`Loading schema from: ${rootDir}`));
77
- // 1. Init ObjectQL with in-memory SQLite for Dev
75
+ // Try to load configuration
76
+ let config = null;
77
+ const configPath = options.config || path.join(process.cwd(), 'objectql.config.ts');
78
+ if (fs.existsSync(configPath)) {
79
+ try {
80
+ console.log(chalk_1.default.gray(`Loading config from: ${configPath}`));
81
+ if (configPath.endsWith('.ts')) {
82
+ require('ts-node/register');
83
+ }
84
+ const loaded = require(configPath);
85
+ config = loaded.default || loaded;
86
+ }
87
+ catch (e) {
88
+ console.warn(chalk_1.default.yellow(`⚠️ Failed to load config: ${e.message}`));
89
+ }
90
+ }
91
+ else if (options.config) {
92
+ console.error(chalk_1.default.red(`❌ Config file not found: ${options.config}`));
93
+ process.exit(1);
94
+ }
95
+ // Process modules override
96
+ if (options.modules) {
97
+ const moduleList = options.modules.split(',').map(p => p.trim());
98
+ if (!config)
99
+ config = {};
100
+ config.modules = moduleList;
101
+ console.log(chalk_1.default.yellow(`⚠️ Overriding modules: ${moduleList.join(', ')}`));
102
+ }
103
+ const loadedConfig = ((_a = config === null || config === void 0 ? void 0 : config.datasource) === null || _a === void 0 ? void 0 : _a.default) || ((_b = config === null || config === void 0 ? void 0 : config.datasources) === null || _b === void 0 ? void 0 : _b.default);
104
+ let datasourceValue = loadedConfig;
105
+ // Normalize config if it uses simplified format (type: 'sqlite')
106
+ if (loadedConfig && !loadedConfig.client && loadedConfig.type === 'sqlite') {
107
+ datasourceValue = {
108
+ client: 'sqlite3',
109
+ connection: {
110
+ filename: loadedConfig.filename || ':memory:'
111
+ },
112
+ useNullAsDefault: true
113
+ };
114
+ }
115
+ const datasource = datasourceValue || {
116
+ client: 'sqlite3',
117
+ connection: {
118
+ filename: ':memory:'
119
+ },
120
+ useNullAsDefault: true
121
+ };
122
+ // 1. Init ObjectQL
78
123
  const app = new core_1.ObjectQL({
79
124
  datasources: {
80
- default: new driver_sql_1.SqlDriver({
81
- client: 'sqlite3',
82
- connection: {
83
- filename: ':memory:' // Or local file './dev.db'
84
- },
85
- useNullAsDefault: true
86
- })
87
- }
125
+ default: new driver_sql_1.SqlDriver(datasource)
126
+ },
127
+ ...config
88
128
  });
89
129
  // 2. Load Schema
90
130
  try {
91
131
  const loader = new platform_node_1.ObjectLoader(app.metadata);
132
+ // Load modules first (if any)
133
+ // Backwards compatibility for presets
134
+ const modulesToLoad = (config === null || config === void 0 ? void 0 : config.modules) || (config === null || config === void 0 ? void 0 : config.presets);
135
+ if (modulesToLoad) {
136
+ await (0, platform_node_1.loadModules)(loader, modulesToLoad);
137
+ }
138
+ // Load project source
92
139
  loader.load(rootDir);
93
140
  await app.init();
94
141
  console.log(chalk_1.default.green('✅ Schema loaded successfully.'));
@@ -99,29 +146,58 @@ async function serve(options) {
99
146
  }
100
147
  // 3. Create Handler
101
148
  const internalHandler = (0, server_1.createNodeHandler)(app);
149
+ const graphqlHandler = (0, server_1.createGraphQLHandler)(app);
102
150
  // 4. Start Server
103
151
  const server = (0, http_1.createServer)(async (req, res) => {
104
- // Serve Swagger UI
105
- if (req.method === 'GET' && (req.url === '/swagger' || req.url === '/swagger/')) {
152
+ var _a;
153
+ // Serve API Docs at Root (Default)
154
+ if (req.method === 'GET' && (req.url === '/' || req.url === '/docs' || req.url === '/docs/')) {
106
155
  res.writeHead(200, { 'Content-Type': 'text/html' });
107
- res.end(CONSOLE_HTML);
156
+ res.end(SCALAR_HTML);
157
+ return;
158
+ }
159
+ // GraphQL Endpoint & Playground (Keep for compatibility)
160
+ if (req.url === '/graphql' || req.url === '/graphql/') {
161
+ await graphqlHandler(req, res);
108
162
  return;
109
163
  }
110
- // Redirect / to /swagger for better DX
111
- if (req.method === 'GET' && req.url === '/') {
112
- res.writeHead(302, { 'Location': '/swagger' });
113
- res.end();
164
+ // Keep /api/graphql as alias for compatibility
165
+ if ((_a = req.url) === null || _a === void 0 ? void 0 : _a.startsWith('/api/graphql')) {
166
+ await graphqlHandler(req, res);
114
167
  return;
115
168
  }
116
169
  // Delegate to API Handler
117
170
  await internalHandler(req, res);
118
171
  });
119
- server.listen(options.port, () => {
120
- console.log(chalk_1.default.green(`\n🚀 Server ready at http://localhost:${options.port}`));
121
- console.log(chalk_1.default.green(`📚 Swagger UI: http://localhost:${options.port}/swagger`));
122
- console.log(chalk_1.default.blue(`📖 OpenAPI Spec: http://localhost:${options.port}/openapi.json`));
123
- console.log(chalk_1.default.gray('\nTry a curl command:'));
124
- console.log(`curl -X POST http://localhost:${options.port} -H "Content-Type: application/json" -d '{"op": "find", "object": "YourObject", "args": {}}'`);
125
- });
172
+ // Auto-port detection logic
173
+ const startPort = options.port;
174
+ const tryListen = (port, attempt = 0) => {
175
+ if (attempt > 10) {
176
+ console.error(chalk_1.default.red(`❌ Unable to find a free port after 10 attempts.`));
177
+ process.exit(1);
178
+ }
179
+ const onError = (e) => {
180
+ if (e.code === 'EADDRINUSE') {
181
+ console.log(chalk_1.default.yellow(`⚠️ Port ${port} is in use, trying ${port + 1}...`));
182
+ // Wait a tick before retrying to let the socket cleanup if needed, though usually not needed for EADDRINUSE on listen
183
+ setTimeout(() => {
184
+ server.close(); // Ensure previous attempt is closed
185
+ tryListen(port + 1, attempt + 1);
186
+ }, 100);
187
+ }
188
+ else {
189
+ console.error(chalk_1.default.red('❌ Server error:'), e);
190
+ }
191
+ };
192
+ server.once('error', onError);
193
+ server.listen(port, () => {
194
+ server.removeListener('error', onError);
195
+ console.log(chalk_1.default.green(`\n🚀 Server ready at http://localhost:${port}`));
196
+ console.log(chalk_1.default.blue(`📖 API Docs (Scalar): http://localhost:${port}/`));
197
+ console.log(chalk_1.default.gray('\nTry a curl command:'));
198
+ console.log(`curl -X POST http://localhost:${port} -H "Content-Type: application/json" -d '{"op": "find", "object": "tasks", "args": {}}'`);
199
+ });
200
+ };
201
+ tryListen(startPort);
126
202
  }
127
203
  //# sourceMappingURL=serve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ interface StartOptions {
2
2
  port: number;
3
3
  dir: string;
4
4
  config?: string;
5
+ modules?: string;
5
6
  }
6
7
  /**
7
8
  * Start production server