@objectql/cli 1.8.2 ā 1.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +229 -0
- package/USAGE_EXAMPLES.md +147 -0
- package/__tests__/commands.test.ts +274 -1
- package/dist/commands/ai.js +4 -3
- package/dist/commands/ai.js.map +1 -1
- package/dist/commands/build.d.ts +12 -0
- package/dist/commands/build.js +119 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/dev.d.ts +9 -0
- package/dist/commands/dev.js +23 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/format.d.ts +9 -0
- package/dist/commands/format.js +137 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/lint.d.ts +9 -0
- package/dist/commands/lint.js +120 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/new.js +5 -52
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/start.d.ts +11 -0
- package/dist/commands/start.js +119 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.js +314 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/test.d.ts +10 -0
- package/dist/commands/test.js +120 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/index.js +109 -14
- package/dist/index.js.map +1 -1
- package/jest.config.js +19 -0
- package/package.json +7 -7
- package/src/commands/ai.ts +4 -3
- package/src/commands/build.ts +98 -0
- package/src/commands/dev.ts +23 -0
- package/src/commands/format.ts +110 -0
- package/src/commands/lint.ts +98 -0
- package/src/commands/new.ts +5 -52
- package/src/commands/start.ts +100 -0
- package/src/commands/sync.ts +328 -0
- package/src/commands/test.ts +98 -0
- package/src/index.ts +114 -14
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/commands/studio.d.ts +0 -5
- package/dist/commands/studio.js +0 -364
- package/dist/commands/studio.js.map +0 -1
- package/src/commands/studio.ts +0 -354
|
@@ -0,0 +1,137 @@
|
|
|
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
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.format = format;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const yaml = __importStar(require("js-yaml"));
|
|
44
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
45
|
+
// Naming convention regex
|
|
46
|
+
const VALID_NAME_REGEX = /^[a-z][a-z0-9_]*$/;
|
|
47
|
+
/**
|
|
48
|
+
* Format command - formats metadata files using Prettier
|
|
49
|
+
*/
|
|
50
|
+
async function format(options) {
|
|
51
|
+
console.log(chalk_1.default.blue('šØ Formatting ObjectQL metadata files...\n'));
|
|
52
|
+
const rootDir = path.resolve(process.cwd(), options.dir || '.');
|
|
53
|
+
let formattedCount = 0;
|
|
54
|
+
let unchangedCount = 0;
|
|
55
|
+
let errorCount = 0;
|
|
56
|
+
// Load Prettier once at the start
|
|
57
|
+
let prettier;
|
|
58
|
+
try {
|
|
59
|
+
prettier = await Promise.resolve().then(() => __importStar(require('prettier')));
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
console.error(chalk_1.default.red('ā Prettier is not installed. Install it with: npm install --save-dev prettier'));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const files = await (0, fast_glob_1.default)(['**/*.yml', '**/*.yaml'], {
|
|
67
|
+
cwd: rootDir,
|
|
68
|
+
ignore: ['node_modules/**', 'dist/**', 'build/**']
|
|
69
|
+
});
|
|
70
|
+
console.log(chalk_1.default.cyan(`Found ${files.length} YAML file(s)\n`));
|
|
71
|
+
for (const file of files) {
|
|
72
|
+
const filePath = path.join(rootDir, file);
|
|
73
|
+
try {
|
|
74
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
75
|
+
// Parse to validate YAML
|
|
76
|
+
yaml.load(content);
|
|
77
|
+
// Format with Prettier
|
|
78
|
+
const formatted = await prettier.format(content, {
|
|
79
|
+
parser: 'yaml',
|
|
80
|
+
printWidth: 80,
|
|
81
|
+
tabWidth: 2,
|
|
82
|
+
singleQuote: true
|
|
83
|
+
});
|
|
84
|
+
if (content !== formatted) {
|
|
85
|
+
if (options.check) {
|
|
86
|
+
console.log(chalk_1.default.yellow(` ā ļø ${file} needs formatting`));
|
|
87
|
+
formattedCount++;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
fs.writeFileSync(filePath, formatted, 'utf-8');
|
|
91
|
+
console.log(chalk_1.default.green(` ā
${file}`));
|
|
92
|
+
formattedCount++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
unchangedCount++;
|
|
97
|
+
if (!options.check) {
|
|
98
|
+
console.log(chalk_1.default.gray(` ā ${file}`));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
console.error(chalk_1.default.red(` ā ${file}: ${e.message}`));
|
|
104
|
+
errorCount++;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
console.log('');
|
|
108
|
+
// Summary
|
|
109
|
+
if (options.check) {
|
|
110
|
+
if (formattedCount > 0) {
|
|
111
|
+
console.log(chalk_1.default.yellow.bold(`ā ļø ${formattedCount} file(s) need formatting`));
|
|
112
|
+
console.log(chalk_1.default.gray('Run without --check to format files\n'));
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(chalk_1.default.green.bold('ā
All files are properly formatted!\n'));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
console.log(chalk_1.default.cyan('Summary:'));
|
|
121
|
+
console.log(chalk_1.default.green(` ā
Formatted: ${formattedCount}`));
|
|
122
|
+
console.log(chalk_1.default.gray(` ā Unchanged: ${unchangedCount}`));
|
|
123
|
+
if (errorCount > 0) {
|
|
124
|
+
console.log(chalk_1.default.red(` ā Errors: ${errorCount}`));
|
|
125
|
+
}
|
|
126
|
+
console.log('');
|
|
127
|
+
if (errorCount > 0) {
|
|
128
|
+
process.exit(1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (e) {
|
|
133
|
+
console.error(chalk_1.default.red('ā Format failed:'), e.message);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/commands/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.lint = lint;
|
|
40
|
+
const core_1 = require("@objectql/core");
|
|
41
|
+
const platform_node_1 = require("@objectql/platform-node");
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
44
|
+
// Naming convention regex
|
|
45
|
+
const VALID_NAME_REGEX = /^[a-z][a-z0-9_]*$/;
|
|
46
|
+
/**
|
|
47
|
+
* Lint command - validates metadata files for correctness and best practices
|
|
48
|
+
*/
|
|
49
|
+
async function lint(options) {
|
|
50
|
+
console.log(chalk_1.default.blue('š Linting ObjectQL metadata files...\n'));
|
|
51
|
+
const rootDir = path.resolve(process.cwd(), options.dir || '.');
|
|
52
|
+
let hasErrors = false;
|
|
53
|
+
let hasWarnings = false;
|
|
54
|
+
try {
|
|
55
|
+
const app = new core_1.ObjectQL({ datasources: {} });
|
|
56
|
+
const loader = new platform_node_1.ObjectLoader(app.metadata);
|
|
57
|
+
console.log(chalk_1.default.cyan('Loading metadata files...'));
|
|
58
|
+
loader.load(rootDir);
|
|
59
|
+
const objects = app.metadata.list('object');
|
|
60
|
+
console.log(chalk_1.default.green(`ā
Found ${objects.length} object(s)\n`));
|
|
61
|
+
// Validate each object
|
|
62
|
+
for (const obj of objects) {
|
|
63
|
+
const objectConfig = obj;
|
|
64
|
+
const name = objectConfig.name;
|
|
65
|
+
console.log(chalk_1.default.cyan(`Checking object: ${name}`));
|
|
66
|
+
// Check naming convention (lowercase with underscores)
|
|
67
|
+
if (!VALID_NAME_REGEX.test(name)) {
|
|
68
|
+
console.log(chalk_1.default.red(` ā Invalid name format: "${name}" should be lowercase with underscores`));
|
|
69
|
+
hasErrors = true;
|
|
70
|
+
}
|
|
71
|
+
// Check if label exists
|
|
72
|
+
if (!objectConfig.label) {
|
|
73
|
+
console.log(chalk_1.default.yellow(` ā ļø Missing label for object "${name}"`));
|
|
74
|
+
hasWarnings = true;
|
|
75
|
+
}
|
|
76
|
+
// Check fields
|
|
77
|
+
const fieldCount = Object.keys(objectConfig.fields || {}).length;
|
|
78
|
+
if (fieldCount === 0) {
|
|
79
|
+
console.log(chalk_1.default.yellow(` ā ļø Object "${name}" has no fields defined`));
|
|
80
|
+
hasWarnings = true;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.log(chalk_1.default.gray(` ā¹ļø ${fieldCount} field(s) defined`));
|
|
84
|
+
}
|
|
85
|
+
// Validate field names
|
|
86
|
+
for (const [fieldName, field] of Object.entries(objectConfig.fields || {})) {
|
|
87
|
+
if (!VALID_NAME_REGEX.test(fieldName)) {
|
|
88
|
+
console.log(chalk_1.default.red(` ā Invalid field name: "${fieldName}" should be lowercase with underscores`));
|
|
89
|
+
hasErrors = true;
|
|
90
|
+
}
|
|
91
|
+
const fieldConfig = field;
|
|
92
|
+
// Check for required label on fields
|
|
93
|
+
if (!fieldConfig.label) {
|
|
94
|
+
console.log(chalk_1.default.yellow(` ā ļø Field "${fieldName}" missing label`));
|
|
95
|
+
hasWarnings = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
console.log('');
|
|
99
|
+
}
|
|
100
|
+
// Summary
|
|
101
|
+
if (hasErrors) {
|
|
102
|
+
console.log(chalk_1.default.red.bold('ā Linting failed with errors\n'));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
else if (hasWarnings) {
|
|
106
|
+
console.log(chalk_1.default.yellow.bold('ā ļø Linting completed with warnings\n'));
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
console.log(chalk_1.default.green.bold('ā
Linting passed - no issues found!\n'));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
console.error(chalk_1.default.red('ā Linting failed:'), e.message);
|
|
114
|
+
if (e.stack) {
|
|
115
|
+
console.error(chalk_1.default.gray(e.stack));
|
|
116
|
+
}
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/new.js
CHANGED
|
@@ -43,16 +43,11 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
43
43
|
const yaml = __importStar(require("js-yaml"));
|
|
44
44
|
const METADATA_TYPES = [
|
|
45
45
|
'object',
|
|
46
|
-
'view',
|
|
47
|
-
'form',
|
|
48
|
-
'page',
|
|
49
46
|
'action',
|
|
50
47
|
'hook',
|
|
51
48
|
'permission',
|
|
52
49
|
'validation',
|
|
53
50
|
'workflow',
|
|
54
|
-
'report',
|
|
55
|
-
'menu',
|
|
56
51
|
'data'
|
|
57
52
|
];
|
|
58
53
|
const TEMPLATES = {
|
|
@@ -66,41 +61,17 @@ const TEMPLATES = {
|
|
|
66
61
|
}
|
|
67
62
|
}
|
|
68
63
|
},
|
|
69
|
-
view: {
|
|
70
|
-
label: '{{label}} View',
|
|
71
|
-
object: '{{objectName}}',
|
|
72
|
-
columns: [
|
|
73
|
-
{ field: 'name', label: 'Name' }
|
|
74
|
-
]
|
|
75
|
-
},
|
|
76
|
-
form: {
|
|
77
|
-
label: '{{label}} Form',
|
|
78
|
-
object: '{{objectName}}',
|
|
79
|
-
layout: {
|
|
80
|
-
sections: [
|
|
81
|
-
{
|
|
82
|
-
label: 'Basic Information',
|
|
83
|
-
fields: ['name']
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
page: {
|
|
89
|
-
label: '{{label}} Page',
|
|
90
|
-
type: 'standard',
|
|
91
|
-
components: [
|
|
92
|
-
{
|
|
93
|
-
type: 'title',
|
|
94
|
-
text: '{{label}}'
|
|
95
|
-
}
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
64
|
action: {
|
|
99
65
|
label: '{{label}} Action',
|
|
100
66
|
object: '{{objectName}}',
|
|
101
67
|
type: 'record',
|
|
102
68
|
handler: 'action_{{name}}'
|
|
103
69
|
},
|
|
70
|
+
hook: {
|
|
71
|
+
label: '{{label}} Hook',
|
|
72
|
+
object: '{{objectName}}',
|
|
73
|
+
triggers: ['before_insert', 'after_insert']
|
|
74
|
+
},
|
|
104
75
|
permission: {
|
|
105
76
|
label: '{{label}} Permissions',
|
|
106
77
|
object: '{{objectName}}',
|
|
@@ -144,24 +115,6 @@ const TEMPLATES = {
|
|
|
144
115
|
}
|
|
145
116
|
]
|
|
146
117
|
},
|
|
147
|
-
report: {
|
|
148
|
-
label: '{{label}} Report',
|
|
149
|
-
type: 'tabular',
|
|
150
|
-
object: '{{objectName}}',
|
|
151
|
-
columns: [
|
|
152
|
-
{ field: 'name', label: 'Name' }
|
|
153
|
-
]
|
|
154
|
-
},
|
|
155
|
-
menu: {
|
|
156
|
-
label: '{{label}} Menu',
|
|
157
|
-
items: [
|
|
158
|
-
{
|
|
159
|
-
label: 'Home',
|
|
160
|
-
page: 'home',
|
|
161
|
-
icon: 'home'
|
|
162
|
-
}
|
|
163
|
-
]
|
|
164
|
-
},
|
|
165
118
|
data: {
|
|
166
119
|
label: '{{label}} Data',
|
|
167
120
|
object: '{{objectName}}',
|
package/dist/commands/new.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface StartOptions {
|
|
2
|
+
port: number;
|
|
3
|
+
dir: string;
|
|
4
|
+
config?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Start production server
|
|
8
|
+
* Loads configuration from objectql.config.ts/js if available
|
|
9
|
+
*/
|
|
10
|
+
export declare function start(options: StartOptions): Promise<void>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.start = start;
|
|
40
|
+
const core_1 = require("@objectql/core");
|
|
41
|
+
const driver_sql_1 = require("@objectql/driver-sql");
|
|
42
|
+
const platform_node_1 = require("@objectql/platform-node");
|
|
43
|
+
const server_1 = require("@objectql/server");
|
|
44
|
+
const http_1 = require("http");
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
48
|
+
/**
|
|
49
|
+
* Start production server
|
|
50
|
+
* Loads configuration from objectql.config.ts/js if available
|
|
51
|
+
*/
|
|
52
|
+
async function start(options) {
|
|
53
|
+
var _a, _b;
|
|
54
|
+
console.log(chalk_1.default.blue('Starting ObjectQL Production Server...'));
|
|
55
|
+
const rootDir = path.resolve(process.cwd(), options.dir);
|
|
56
|
+
console.log(chalk_1.default.gray(`Loading schema from: ${rootDir}`));
|
|
57
|
+
// Try to load configuration
|
|
58
|
+
let config = null;
|
|
59
|
+
const configPath = options.config || path.join(process.cwd(), 'objectql.config.ts');
|
|
60
|
+
if (fs.existsSync(configPath)) {
|
|
61
|
+
try {
|
|
62
|
+
console.log(chalk_1.default.gray(`Loading config from: ${configPath}`));
|
|
63
|
+
// Use require for .js files or ts-node for .ts files
|
|
64
|
+
if (configPath.endsWith('.ts')) {
|
|
65
|
+
require('ts-node/register');
|
|
66
|
+
}
|
|
67
|
+
const loadedModule = require(configPath);
|
|
68
|
+
// Handle both default export and direct export
|
|
69
|
+
config = loadedModule.default || loadedModule;
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
console.warn(chalk_1.default.yellow(`ā ļø Failed to load config: ${e.message}`));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Initialize datasource from config or use default SQLite
|
|
76
|
+
// Note: Config files may use 'datasource' (singular) while ObjectQLConfig uses 'datasources' (plural)
|
|
77
|
+
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) || {
|
|
78
|
+
client: 'sqlite3',
|
|
79
|
+
connection: {
|
|
80
|
+
filename: process.env.DATABASE_FILE || './objectql.db'
|
|
81
|
+
},
|
|
82
|
+
useNullAsDefault: true
|
|
83
|
+
};
|
|
84
|
+
const driver = new driver_sql_1.SqlDriver(datasourceConfig);
|
|
85
|
+
const app = new core_1.ObjectQL({
|
|
86
|
+
datasources: { default: driver }
|
|
87
|
+
});
|
|
88
|
+
// Load Schema
|
|
89
|
+
try {
|
|
90
|
+
const loader = new platform_node_1.ObjectLoader(app.metadata);
|
|
91
|
+
loader.load(rootDir);
|
|
92
|
+
await app.init();
|
|
93
|
+
console.log(chalk_1.default.green('ā
Schema loaded successfully.'));
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
console.error(chalk_1.default.red('ā Failed to load schema:'), e.message);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
// Create Handler
|
|
100
|
+
const handler = (0, server_1.createNodeHandler)(app);
|
|
101
|
+
// Start Server
|
|
102
|
+
const server = (0, http_1.createServer)(async (req, res) => {
|
|
103
|
+
await handler(req, res);
|
|
104
|
+
});
|
|
105
|
+
server.listen(options.port, () => {
|
|
106
|
+
console.log(chalk_1.default.green(`\nā
Server started in production mode`));
|
|
107
|
+
console.log(chalk_1.default.green(`š API endpoint: http://localhost:${options.port}`));
|
|
108
|
+
console.log(chalk_1.default.blue(`š OpenAPI Spec: http://localhost:${options.port}/openapi.json`));
|
|
109
|
+
// Handle graceful shutdown
|
|
110
|
+
process.on('SIGTERM', () => {
|
|
111
|
+
console.log(chalk_1.default.yellow('\nā ļø SIGTERM received, shutting down gracefully...'));
|
|
112
|
+
server.close(() => {
|
|
113
|
+
console.log(chalk_1.default.green('ā
Server closed'));
|
|
114
|
+
process.exit(0);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IObjectQL } from '@objectql/types';
|
|
2
|
+
interface SyncOptions {
|
|
3
|
+
config?: string;
|
|
4
|
+
output?: string;
|
|
5
|
+
tables?: string[];
|
|
6
|
+
force?: boolean;
|
|
7
|
+
app?: IObjectQL;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Sync database schema to ObjectQL .object.yml files
|
|
11
|
+
* Introspects existing SQL database and generates object definitions
|
|
12
|
+
*/
|
|
13
|
+
export declare function syncDatabase(options: SyncOptions): Promise<void>;
|
|
14
|
+
export {};
|