@objectql/cli 4.0.6 → 4.2.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 +47 -249
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.js +6 -13
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/migrate.js +3 -16
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/repl.js +3 -18
- package/dist/commands/repl.js.map +1 -1
- package/dist/commands/sync.js +2 -19
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/register/database.js +2 -2
- package/dist/register/database.js.map +1 -1
- package/dist/register/lifecycle.js +14 -26
- package/dist/register/lifecycle.js.map +1 -1
- package/dist/register/tools.js +4 -3
- package/dist/register/tools.js.map +1 -1
- package/dist/utils/config-loader.d.ts +22 -0
- package/dist/utils/config-loader.js +98 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/{commands/serve.d.ts → utils/objectstack-cli.d.ts} +2 -7
- package/dist/utils/objectstack-cli.js +42 -0
- package/dist/utils/objectstack-cli.js.map +1 -0
- package/package.json +9 -12
- package/templates/hello-world/CHANGELOG.md +8 -0
- package/templates/hello-world/package.json +1 -1
- package/templates/starter/CHANGELOG.md +10 -0
- package/templates/starter/__mocks__/@objectstack/runtime.js +55 -0
- package/templates/starter/jest.setup.js +1 -0
- package/templates/starter/package.json +2 -5
- package/templates/starter/tsconfig.json +1 -1
- package/dist/commands/dev.d.ts +0 -18
- package/dist/commands/dev.js +0 -118
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/init.d.ts +0 -16
- package/dist/commands/init.js +0 -210
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/serve.js +0 -218
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/start.d.ts +0 -19
- package/dist/commands/start.js +0 -144
- package/dist/commands/start.js.map +0 -1
- package/templates/starter/jest.config.js +0 -33
package/dist/commands/dev.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ObjectQL
|
|
3
|
-
* Copyright (c) 2026-present ObjectStack Inc.
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the MIT license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Start development server with hot reload
|
|
10
|
-
* This is an enhanced version of the serve command for development workflow
|
|
11
|
-
*/
|
|
12
|
-
export declare function dev(options: {
|
|
13
|
-
port: number;
|
|
14
|
-
dir: string;
|
|
15
|
-
config?: string;
|
|
16
|
-
modules?: string;
|
|
17
|
-
watch?: boolean;
|
|
18
|
-
}): Promise<void>;
|
package/dist/commands/dev.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ObjectQL
|
|
4
|
-
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
-
};
|
|
45
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.dev = dev;
|
|
47
|
-
const serve_1 = require("./serve");
|
|
48
|
-
const generate_1 = require("./generate");
|
|
49
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
-
const fs = __importStar(require("fs"));
|
|
51
|
-
const path = __importStar(require("path"));
|
|
52
|
-
/**
|
|
53
|
-
* Start development server with hot reload
|
|
54
|
-
* This is an enhanced version of the serve command for development workflow
|
|
55
|
-
*/
|
|
56
|
-
async function dev(options) {
|
|
57
|
-
console.log(chalk_1.default.cyan('🚀 Starting ObjectQL Development Server...'));
|
|
58
|
-
const sourceDir = path.resolve(process.cwd(), options.dir || '.');
|
|
59
|
-
// Output types to the source directory under 'generated' folder
|
|
60
|
-
const typeOutputDir = path.join(sourceDir, 'generated');
|
|
61
|
-
// 1. Initial Type Generation
|
|
62
|
-
try {
|
|
63
|
-
await (0, generate_1.generateTypes)(sourceDir, typeOutputDir);
|
|
64
|
-
}
|
|
65
|
-
catch (e) {
|
|
66
|
-
console.error(chalk_1.default.red('Initial type generation failed:'), e);
|
|
67
|
-
// Continue anyway, maybe it's just a starting project
|
|
68
|
-
}
|
|
69
|
-
// 2. Setup Watcher (Before serve, in case serve blocks)
|
|
70
|
-
if (options.watch !== false) {
|
|
71
|
-
startWatcher(sourceDir, typeOutputDir);
|
|
72
|
-
}
|
|
73
|
-
console.log(chalk_1.default.blue(`\n🌐 Server context: ${sourceDir}`));
|
|
74
|
-
console.log(chalk_1.default.blue(`📁 Type output: ${typeOutputDir}`));
|
|
75
|
-
// 3. Start Server
|
|
76
|
-
await (0, serve_1.serve)({
|
|
77
|
-
port: options.port,
|
|
78
|
-
dir: options.dir,
|
|
79
|
-
config: options.config,
|
|
80
|
-
modules: options.modules
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
let debounceTimer = null;
|
|
84
|
-
function startWatcher(sourceDir, outputDir) {
|
|
85
|
-
console.log(chalk_1.default.yellow('👀 Watching for metadata changes...'));
|
|
86
|
-
try {
|
|
87
|
-
// Recursive watch
|
|
88
|
-
const watcher = fs.watch(sourceDir, { recursive: true }, (eventType, filename) => {
|
|
89
|
-
if (!filename)
|
|
90
|
-
return;
|
|
91
|
-
// Ignore generated directory to prevent loops if output is inside source
|
|
92
|
-
if (filename.includes('generated') || filename.includes('node_modules') || filename.includes('.git')) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
// Only care about YAML
|
|
96
|
-
if (filename.endsWith('.yml') || filename.endsWith('.yaml')) {
|
|
97
|
-
// Debounce
|
|
98
|
-
if (debounceTimer)
|
|
99
|
-
clearTimeout(debounceTimer);
|
|
100
|
-
debounceTimer = setTimeout(async () => {
|
|
101
|
-
console.log(chalk_1.default.gray(`\n📝 Change detected: ${filename}`));
|
|
102
|
-
try {
|
|
103
|
-
console.log(chalk_1.default.blue('⚡️ Regenerating types...'));
|
|
104
|
-
await (0, generate_1.generateTypes)(sourceDir, outputDir);
|
|
105
|
-
}
|
|
106
|
-
catch (e) {
|
|
107
|
-
console.error(chalk_1.default.red('Type generation failed:'), e);
|
|
108
|
-
}
|
|
109
|
-
}, 500);
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
watcher.on('error', (e) => console.error(chalk_1.default.red('Watcher error:'), e));
|
|
113
|
-
}
|
|
114
|
-
catch (e) {
|
|
115
|
-
console.warn(chalk_1.default.yellow('Native recursive watch not supported or failed. Watching root only.'));
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=dev.js.map
|
package/dist/commands/dev.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ObjectQL
|
|
3
|
-
* Copyright (c) 2026-present ObjectStack Inc.
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the MIT license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
interface InitOptions {
|
|
9
|
-
template?: string;
|
|
10
|
-
name?: string;
|
|
11
|
-
dir?: string;
|
|
12
|
-
skipInstall?: boolean;
|
|
13
|
-
skipGit?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export declare function initProject(options: InitOptions): Promise<void>;
|
|
16
|
-
export {};
|
package/dist/commands/init.js
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ObjectQL
|
|
4
|
-
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
-
};
|
|
45
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.initProject = initProject;
|
|
47
|
-
const fs = __importStar(require("fs"));
|
|
48
|
-
const path = __importStar(require("path"));
|
|
49
|
-
const child_process_1 = require("child_process");
|
|
50
|
-
const util_1 = require("util");
|
|
51
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
52
|
-
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
53
|
-
const TEMPLATES = {
|
|
54
|
-
'hello-world': 'hello-world',
|
|
55
|
-
'starter': 'project-tracker'
|
|
56
|
-
};
|
|
57
|
-
async function initProject(options) {
|
|
58
|
-
const projectName = options.name || 'my-objectql-project';
|
|
59
|
-
const targetDir = options.dir || path.join(process.cwd(), projectName);
|
|
60
|
-
const template = (options.template || 'starter');
|
|
61
|
-
if (!TEMPLATES[template]) {
|
|
62
|
-
console.error(chalk_1.default.red(`❌ Unknown template: ${template}`));
|
|
63
|
-
console.log(chalk_1.default.gray(`Available templates: ${Object.keys(TEMPLATES).join(', ')}`));
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
console.log(chalk_1.default.blue(`\n🚀 Initializing ObjectQL project: ${chalk_1.default.bold(projectName)}`));
|
|
67
|
-
console.log(chalk_1.default.gray(`Template: ${template}`));
|
|
68
|
-
console.log(chalk_1.default.gray(`Directory: ${targetDir}\n`));
|
|
69
|
-
// Check if directory exists
|
|
70
|
-
if (fs.existsSync(targetDir)) {
|
|
71
|
-
console.error(chalk_1.default.red(`❌ Directory already exists: ${targetDir}`));
|
|
72
|
-
process.exit(1);
|
|
73
|
-
}
|
|
74
|
-
// Create project directory
|
|
75
|
-
fs.mkdirSync(targetDir, { recursive: true });
|
|
76
|
-
try {
|
|
77
|
-
// Copy embedded template
|
|
78
|
-
const templateName = TEMPLATES[template];
|
|
79
|
-
// Must resolve relative to the dist/commands folder structure
|
|
80
|
-
const sourcePath = path.resolve(__dirname, '../../templates', templateName);
|
|
81
|
-
if (!fs.existsSync(sourcePath)) {
|
|
82
|
-
// Fallback for development (running directly from src)
|
|
83
|
-
// If running via ts-node in dev, structure might be different
|
|
84
|
-
throw new Error(`Template not found at ${sourcePath}. Please check your CLI installation.`);
|
|
85
|
-
}
|
|
86
|
-
console.log(chalk_1.default.cyan(`⬇️ Creating project from embedded template...`));
|
|
87
|
-
await copyDirectory(sourcePath, targetDir, ['node_modules', 'dist', '.git']);
|
|
88
|
-
console.log(chalk_1.default.green('✅ Template created successfully.'));
|
|
89
|
-
// Update package.json with project name
|
|
90
|
-
const pkgPath = path.join(targetDir, 'package.json');
|
|
91
|
-
if (fs.existsSync(pkgPath)) {
|
|
92
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
93
|
-
pkg.name = projectName;
|
|
94
|
-
pkg.version = '0.1.0';
|
|
95
|
-
// Note: Since we are using examples from the monorepo,
|
|
96
|
-
// they might have "workspace:*" protocols.
|
|
97
|
-
// We should replace them with "latest" or a specific version for end users.
|
|
98
|
-
const replaceWorkspaceVersion = (deps) => {
|
|
99
|
-
for (const dep of Object.keys(deps)) {
|
|
100
|
-
if (deps[dep] === 'workspace:*') {
|
|
101
|
-
// For public release, this should match the current CLI version or latest
|
|
102
|
-
deps[dep] = 'latest';
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
if (pkg.dependencies)
|
|
107
|
-
replaceWorkspaceVersion(pkg.dependencies);
|
|
108
|
-
if (pkg.devDependencies)
|
|
109
|
-
replaceWorkspaceVersion(pkg.devDependencies); // Often peerDeps in examples
|
|
110
|
-
// Make public for the user's new project
|
|
111
|
-
delete pkg.private;
|
|
112
|
-
// Reset repository field as it will be a new repo
|
|
113
|
-
delete pkg.repository;
|
|
114
|
-
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
|
|
115
|
-
}
|
|
116
|
-
// Initialize git repository
|
|
117
|
-
if (!options.skipGit) {
|
|
118
|
-
try {
|
|
119
|
-
console.log(chalk_1.default.gray('\nInitializing git repository...'));
|
|
120
|
-
await execAsync('git init', { cwd: targetDir });
|
|
121
|
-
// Create .gitignore if it doesn't exist
|
|
122
|
-
const gitignorePath = path.join(targetDir, '.gitignore');
|
|
123
|
-
if (!fs.existsSync(gitignorePath)) {
|
|
124
|
-
const gitignore = `node_modules/
|
|
125
|
-
dist/
|
|
126
|
-
*.log
|
|
127
|
-
.DS_Store
|
|
128
|
-
*.sqlite3
|
|
129
|
-
.env
|
|
130
|
-
.env.local
|
|
131
|
-
`;
|
|
132
|
-
fs.writeFileSync(gitignorePath, gitignore);
|
|
133
|
-
}
|
|
134
|
-
console.log(chalk_1.default.green('✓ Git repository initialized'));
|
|
135
|
-
}
|
|
136
|
-
catch (err) {
|
|
137
|
-
console.log(chalk_1.default.yellow('⚠ Git initialization skipped (git not available)'));
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// Install dependencies
|
|
141
|
-
if (!options.skipInstall) {
|
|
142
|
-
console.log(chalk_1.default.gray('\nInstalling dependencies...'));
|
|
143
|
-
console.log(chalk_1.default.gray('This might take a few minutes...\n'));
|
|
144
|
-
try {
|
|
145
|
-
// Try pnpm first, fall back to npm
|
|
146
|
-
const hasNpm = await checkCommand('pnpm');
|
|
147
|
-
const packageManager = hasNpm ? 'pnpm' : 'npm';
|
|
148
|
-
await execAsync(`${packageManager} install`, {
|
|
149
|
-
cwd: targetDir,
|
|
150
|
-
// Show output in real-time would be better, but this is simpler
|
|
151
|
-
});
|
|
152
|
-
console.log(chalk_1.default.green(`✓ Dependencies installed with ${packageManager}`));
|
|
153
|
-
}
|
|
154
|
-
catch (err) {
|
|
155
|
-
console.log(chalk_1.default.yellow(`⚠ Failed to install dependencies: ${err.message}`));
|
|
156
|
-
console.log(chalk_1.default.gray(`You can install them manually by running:`));
|
|
157
|
-
console.log(chalk_1.default.gray(` cd ${projectName} && npm install`));
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// Success message
|
|
161
|
-
console.log(chalk_1.default.green('\n✅ Project created successfully!\n'));
|
|
162
|
-
console.log(chalk_1.default.bold('Next steps:'));
|
|
163
|
-
console.log(chalk_1.default.gray(` cd ${projectName}`));
|
|
164
|
-
if (options.skipInstall) {
|
|
165
|
-
console.log(chalk_1.default.gray(' pnpm install # or npm install'));
|
|
166
|
-
}
|
|
167
|
-
console.log(chalk_1.default.gray(' pnpm run build'));
|
|
168
|
-
console.log(chalk_1.default.gray(' pnpm run repl\n'));
|
|
169
|
-
console.log(chalk_1.default.blue('📚 Documentation: https://github.com/objectql/objectql'));
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
console.error(chalk_1.default.red(`\n❌ Failed to create project: ${error.message}`));
|
|
173
|
-
// Clean up
|
|
174
|
-
if (fs.existsSync(targetDir)) {
|
|
175
|
-
fs.rmSync(targetDir, { recursive: true, force: true });
|
|
176
|
-
}
|
|
177
|
-
process.exit(1);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
async function copyDirectory(src, dest, ignore = []) {
|
|
181
|
-
// Create destination directory
|
|
182
|
-
if (!fs.existsSync(dest)) {
|
|
183
|
-
fs.mkdirSync(dest, { recursive: true });
|
|
184
|
-
}
|
|
185
|
-
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
186
|
-
for (const entry of entries) {
|
|
187
|
-
const srcPath = path.join(src, entry.name);
|
|
188
|
-
const destPath = path.join(dest, entry.name);
|
|
189
|
-
// Skip ignored directories
|
|
190
|
-
if (ignore.includes(entry.name)) {
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
if (entry.isDirectory()) {
|
|
194
|
-
await copyDirectory(srcPath, destPath, ignore);
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
fs.copyFileSync(srcPath, destPath);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
async function checkCommand(cmd) {
|
|
202
|
-
try {
|
|
203
|
-
await execAsync(`${cmd} --version`);
|
|
204
|
-
return true;
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
return false;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/serve.js
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ObjectQL
|
|
4
|
-
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE file in the root directory of this source tree.
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
-
}) : function(o, v) {
|
|
23
|
-
o["default"] = v;
|
|
24
|
-
});
|
|
25
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
-
var ownKeys = function(o) {
|
|
27
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
-
var ar = [];
|
|
29
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
-
return ar;
|
|
31
|
-
};
|
|
32
|
-
return ownKeys(o);
|
|
33
|
-
};
|
|
34
|
-
return function (mod) {
|
|
35
|
-
if (mod && mod.__esModule) return mod;
|
|
36
|
-
var result = {};
|
|
37
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
-
__setModuleDefault(result, mod);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
})();
|
|
42
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
-
};
|
|
45
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
-
exports.serve = serve;
|
|
47
|
-
const core_1 = require("@objectql/core");
|
|
48
|
-
const driver_sql_1 = require("@objectql/driver-sql");
|
|
49
|
-
const platform_node_1 = require("@objectql/platform-node");
|
|
50
|
-
const path = __importStar(require("path"));
|
|
51
|
-
const fs = __importStar(require("fs"));
|
|
52
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
53
|
-
const SCALAR_HTML = `
|
|
54
|
-
<!DOCTYPE html>
|
|
55
|
-
<html>
|
|
56
|
-
<head>
|
|
57
|
-
<title>ObjectQL API Reference</title>
|
|
58
|
-
<meta charset="utf-8" />
|
|
59
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
60
|
-
<style>
|
|
61
|
-
body { margin: 0; }
|
|
62
|
-
</style>
|
|
63
|
-
</head>
|
|
64
|
-
<body>
|
|
65
|
-
<script
|
|
66
|
-
id="api-reference"
|
|
67
|
-
data-url="/openapi.json"
|
|
68
|
-
data-proxy-url="https://proxy.scalar.com"
|
|
69
|
-
data-configuration='{"theme": "deepSpace"}'
|
|
70
|
-
></script>
|
|
71
|
-
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script>
|
|
72
|
-
</body>
|
|
73
|
-
</html>
|
|
74
|
-
`;
|
|
75
|
-
async function serve(options) {
|
|
76
|
-
var _a, _b;
|
|
77
|
-
console.log(chalk_1.default.blue('Starting ObjectQL Dev Server...'));
|
|
78
|
-
const rootDir = path.resolve(process.cwd(), options.dir);
|
|
79
|
-
console.log(chalk_1.default.gray(`Loading schema from: ${rootDir}`));
|
|
80
|
-
// Try to load configuration
|
|
81
|
-
let config = null;
|
|
82
|
-
const configPath = options.config || path.join(process.cwd(), 'objectql.config.ts');
|
|
83
|
-
if (fs.existsSync(configPath)) {
|
|
84
|
-
try {
|
|
85
|
-
console.log(chalk_1.default.gray(`Loading config from: ${configPath}`));
|
|
86
|
-
if (configPath.endsWith('.ts')) {
|
|
87
|
-
require('ts-node/register');
|
|
88
|
-
}
|
|
89
|
-
const loaded = require(configPath);
|
|
90
|
-
config = loaded.default || loaded;
|
|
91
|
-
}
|
|
92
|
-
catch (e) {
|
|
93
|
-
console.warn(chalk_1.default.yellow(`⚠️ Failed to load config: ${e.message}`));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else if (options.config) {
|
|
97
|
-
console.error(chalk_1.default.red(`❌ Config file not found: ${options.config}`));
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
// Process modules override
|
|
101
|
-
if (options.modules) {
|
|
102
|
-
const moduleList = options.modules.split(',').map(p => p.trim());
|
|
103
|
-
if (!config)
|
|
104
|
-
config = {};
|
|
105
|
-
config.modules = moduleList;
|
|
106
|
-
console.log(chalk_1.default.yellow(`⚠️ Overriding modules: ${moduleList.join(', ')}`));
|
|
107
|
-
}
|
|
108
|
-
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);
|
|
109
|
-
let datasourceValue = loadedConfig;
|
|
110
|
-
// Normalize config if it uses simplified format (type: 'sqlite')
|
|
111
|
-
if (loadedConfig && !loadedConfig.client && loadedConfig.type === 'sqlite') {
|
|
112
|
-
datasourceValue = {
|
|
113
|
-
client: 'sqlite3',
|
|
114
|
-
connection: {
|
|
115
|
-
filename: loadedConfig.filename || ':memory:'
|
|
116
|
-
},
|
|
117
|
-
useNullAsDefault: true
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
const datasource = datasourceValue || {
|
|
121
|
-
client: 'sqlite3',
|
|
122
|
-
connection: {
|
|
123
|
-
filename: ':memory:'
|
|
124
|
-
},
|
|
125
|
-
useNullAsDefault: true
|
|
126
|
-
};
|
|
127
|
-
// 1. Init ObjectQL
|
|
128
|
-
const app = new core_1.ObjectQL({
|
|
129
|
-
datasources: {
|
|
130
|
-
default: new driver_sql_1.SqlDriver(datasource)
|
|
131
|
-
},
|
|
132
|
-
...config
|
|
133
|
-
});
|
|
134
|
-
// 2. Load Schema
|
|
135
|
-
try {
|
|
136
|
-
const loader = new platform_node_1.ObjectLoader(app.metadata);
|
|
137
|
-
// Load modules first (if any)
|
|
138
|
-
// Backwards compatibility for presets
|
|
139
|
-
const modulesToLoad = (config === null || config === void 0 ? void 0 : config.modules) || (config === null || config === void 0 ? void 0 : config.presets);
|
|
140
|
-
if (modulesToLoad) {
|
|
141
|
-
await (0, platform_node_1.loadModules)(loader, modulesToLoad);
|
|
142
|
-
}
|
|
143
|
-
// Load project source
|
|
144
|
-
loader.load(rootDir);
|
|
145
|
-
await app.init();
|
|
146
|
-
console.log(chalk_1.default.green('✅ Schema loaded successfully.'));
|
|
147
|
-
}
|
|
148
|
-
catch (e) {
|
|
149
|
-
console.error(chalk_1.default.red('❌ Failed to load schema:'), e.message);
|
|
150
|
-
process.exit(1);
|
|
151
|
-
}
|
|
152
|
-
// 3. Create Handler
|
|
153
|
-
// const internalHandler = createNodeHandler(app);
|
|
154
|
-
// const graphqlHandler = createGraphQLHandler(app);
|
|
155
|
-
throw new Error('This command is deprecated. Please use "objectstack serve" instead.');
|
|
156
|
-
// 4. Start Server
|
|
157
|
-
/*
|
|
158
|
-
const server = createServer(async (req, res) => {
|
|
159
|
-
// Serve API Docs at Root (Default)
|
|
160
|
-
if (req.method === 'GET' && (req.url === '/' || req.url === '/docs' || req.url === '/docs/')) {
|
|
161
|
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
162
|
-
res.end(SCALAR_HTML);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// GraphQL Endpoint & Playground (Keep for compatibility)
|
|
167
|
-
if (req.url === '/graphql' || req.url === '/graphql/') {
|
|
168
|
-
await graphqlHandler(req, res);
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// Keep /api/graphql as alias for compatibility
|
|
173
|
-
if (req.url?.startsWith('/api/graphql')) {
|
|
174
|
-
await graphqlHandler(req, res);
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// Delegate to API Handler
|
|
179
|
-
await internalHandler(req, res);
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
// Auto-port detection logic
|
|
183
|
-
const startPort = options.port;
|
|
184
|
-
const tryListen = (port: number, attempt = 0) => {
|
|
185
|
-
if (attempt > 10) {
|
|
186
|
-
console.error(chalk.red(`❌ Unable to find a free port after 10 attempts.`));
|
|
187
|
-
process.exit(1);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
const onError = (e: any) => {
|
|
191
|
-
if (e.code === 'EADDRINUSE') {
|
|
192
|
-
console.log(chalk.yellow(`⚠️ Port ${port} is in use, trying ${port + 1}...`));
|
|
193
|
-
// Wait a tick before retrying to let the socket cleanup if needed, though usually not needed for EADDRINUSE on listen
|
|
194
|
-
setTimeout(() => {
|
|
195
|
-
server.close(); // Ensure previous attempt is closed
|
|
196
|
-
tryListen(port + 1, attempt + 1);
|
|
197
|
-
}, 100);
|
|
198
|
-
} else {
|
|
199
|
-
console.error(chalk.red('❌ Server error:'), e);
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
server.once('error', onError);
|
|
204
|
-
|
|
205
|
-
server.listen(port, () => {
|
|
206
|
-
server.removeListener('error', onError);
|
|
207
|
-
console.log(chalk.green(`\n🚀 Server ready at http://localhost:${port}`));
|
|
208
|
-
console.log(chalk.blue(`📖 API Docs (Scalar): http://localhost:${port}/`));
|
|
209
|
-
|
|
210
|
-
console.log(chalk.gray('\nTry a curl command:'));
|
|
211
|
-
console.log(`curl -X POST http://localhost:${port} -H "Content-Type: application/json" -d '{"op": "find", "object": "tasks", "args": {}}'`);
|
|
212
|
-
});
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
tryListen(startPort);
|
|
216
|
-
*/
|
|
217
|
-
}
|
|
218
|
-
//# sourceMappingURL=serve.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/start.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ObjectQL
|
|
3
|
-
* Copyright (c) 2026-present ObjectStack Inc.
|
|
4
|
-
*
|
|
5
|
-
* This source code is licensed under the MIT license found in the
|
|
6
|
-
* LICENSE file in the root directory of this source tree.
|
|
7
|
-
*/
|
|
8
|
-
interface StartOptions {
|
|
9
|
-
port: number;
|
|
10
|
-
dir: string;
|
|
11
|
-
config?: string;
|
|
12
|
-
modules?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Start production server
|
|
16
|
-
* Loads configuration from objectql.config.ts/js if available
|
|
17
|
-
*/
|
|
18
|
-
export declare function start(options: StartOptions): Promise<void>;
|
|
19
|
-
export {};
|