@objectql/core 4.0.2 → 4.0.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/.turbo/turbo-build.log +4 -0
- package/CHANGELOG.md +18 -0
- package/README.md +4 -4
- package/dist/app.d.ts +9 -6
- package/dist/app.js +151 -29
- package/dist/app.js.map +1 -1
- package/dist/index.d.ts +6 -9
- package/dist/index.js +2 -5
- package/dist/index.js.map +1 -1
- package/dist/optimizations/CompiledHookManager.d.ts +55 -0
- package/dist/optimizations/CompiledHookManager.js +164 -0
- package/dist/optimizations/CompiledHookManager.js.map +1 -0
- package/dist/optimizations/DependencyGraph.d.ts +82 -0
- package/dist/optimizations/DependencyGraph.js +211 -0
- package/dist/optimizations/DependencyGraph.js.map +1 -0
- package/dist/optimizations/GlobalConnectionPool.d.ts +89 -0
- package/dist/optimizations/GlobalConnectionPool.js +193 -0
- package/dist/optimizations/GlobalConnectionPool.js.map +1 -0
- package/dist/optimizations/LazyMetadataLoader.d.ts +75 -0
- package/dist/optimizations/LazyMetadataLoader.js +149 -0
- package/dist/optimizations/LazyMetadataLoader.js.map +1 -0
- package/dist/optimizations/OptimizedMetadataRegistry.d.ts +26 -0
- package/dist/optimizations/OptimizedMetadataRegistry.js +117 -0
- package/dist/optimizations/OptimizedMetadataRegistry.js.map +1 -0
- package/dist/optimizations/OptimizedValidationEngine.d.ts +73 -0
- package/dist/optimizations/OptimizedValidationEngine.js +141 -0
- package/dist/optimizations/OptimizedValidationEngine.js.map +1 -0
- package/dist/optimizations/QueryCompiler.d.ts +51 -0
- package/dist/optimizations/QueryCompiler.js +216 -0
- package/dist/optimizations/QueryCompiler.js.map +1 -0
- package/dist/optimizations/SQLQueryOptimizer.d.ts +96 -0
- package/dist/optimizations/SQLQueryOptimizer.js +265 -0
- package/dist/optimizations/SQLQueryOptimizer.js.map +1 -0
- package/dist/optimizations/index.d.ts +32 -0
- package/dist/optimizations/index.js +44 -0
- package/dist/optimizations/index.js.map +1 -0
- package/dist/plugin.d.ts +8 -7
- package/dist/plugin.js +57 -22
- package/dist/plugin.js.map +1 -1
- package/dist/query/query-analyzer.js.map +1 -1
- package/dist/query/query-builder.d.ts +6 -1
- package/dist/query/query-builder.js +21 -5
- package/dist/query/query-builder.js.map +1 -1
- package/dist/query/query-service.js.map +1 -1
- package/dist/repository.d.ts +2 -0
- package/dist/repository.js +15 -9
- package/dist/repository.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +8 -5
- package/src/app.ts +173 -47
- package/src/index.ts +8 -9
- package/src/optimizations/CompiledHookManager.ts +185 -0
- package/src/optimizations/DependencyGraph.ts +255 -0
- package/src/optimizations/GlobalConnectionPool.ts +251 -0
- package/src/optimizations/LazyMetadataLoader.ts +180 -0
- package/src/optimizations/OptimizedMetadataRegistry.ts +132 -0
- package/src/optimizations/OptimizedValidationEngine.ts +172 -0
- package/src/optimizations/QueryCompiler.ts +242 -0
- package/src/optimizations/SQLQueryOptimizer.ts +329 -0
- package/src/optimizations/index.ts +34 -0
- package/src/plugin.ts +71 -28
- package/src/query/query-analyzer.ts +1 -1
- package/src/query/query-builder.ts +21 -7
- package/src/query/query-service.ts +1 -1
- package/src/repository.ts +25 -13
- package/test/__mocks__/@objectstack/runtime.ts +8 -8
- package/test/app.test.ts +9 -7
- package/test/optimizations.test.ts +440 -0
- package/test/plugin-integration.test.ts +30 -19
- package/tsconfig.json +4 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/ai-agent.d.ts +0 -176
- package/dist/ai-agent.js +0 -722
- package/dist/ai-agent.js.map +0 -1
- package/dist/formula-engine.d.ts +0 -102
- package/dist/formula-engine.js +0 -433
- package/dist/formula-engine.js.map +0 -1
- package/dist/formula-plugin.d.ts +0 -52
- package/dist/formula-plugin.js +0 -107
- package/dist/formula-plugin.js.map +0 -1
- package/dist/validator-plugin.d.ts +0 -56
- package/dist/validator-plugin.js +0 -106
- package/dist/validator-plugin.js.map +0 -1
- package/dist/validator.d.ts +0 -80
- package/dist/validator.js +0 -625
- package/dist/validator.js.map +0 -1
- package/src/ai-agent.ts +0 -868
- package/src/formula-engine.ts +0 -572
- package/src/formula-plugin.ts +0 -141
- package/src/validator-plugin.ts +0 -140
- package/src/validator.ts +0 -743
- package/test/formula-engine.test.ts +0 -725
- package/test/formula-integration.test.ts +0 -286
- package/test/formula-plugin.test.ts +0 -197
- package/test/formula-spec-compliance.test.ts +0 -258
- package/test/validation-spec-compliance.test.ts +0 -440
- package/test/validator-plugin.test.ts +0 -126
- package/test/validator.test.ts +0 -440
|
@@ -0,0 +1,265 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SQLQueryOptimizer = void 0;
|
|
11
|
+
/**
|
|
12
|
+
* SQL Query Optimizer
|
|
13
|
+
*
|
|
14
|
+
* Improvement: SQL-aware optimization with index hints and join reordering.
|
|
15
|
+
* Analyzes query patterns and schema to generate optimal SQL.
|
|
16
|
+
*
|
|
17
|
+
* Expected: 2-5x faster queries on large datasets
|
|
18
|
+
*/
|
|
19
|
+
class SQLQueryOptimizer {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.schemas = new Map();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Register a schema with index information
|
|
25
|
+
*/
|
|
26
|
+
registerSchema(schema) {
|
|
27
|
+
this.schemas.set(schema.name, schema);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if a field has an index
|
|
31
|
+
*/
|
|
32
|
+
hasIndex(objectName, fieldName) {
|
|
33
|
+
const schema = this.schemas.get(objectName);
|
|
34
|
+
if (!schema || !schema.indexes)
|
|
35
|
+
return false;
|
|
36
|
+
return schema.indexes.some(index => index.fields.includes(fieldName));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the best index for given filter fields
|
|
40
|
+
*/
|
|
41
|
+
getBestIndex(objectName, filterFields) {
|
|
42
|
+
const schema = this.schemas.get(objectName);
|
|
43
|
+
if (!schema || !schema.indexes)
|
|
44
|
+
return null;
|
|
45
|
+
// Find indexes that cover the filter fields
|
|
46
|
+
const candidateIndexes = schema.indexes.filter(index => {
|
|
47
|
+
// Check if index covers any of the filter fields
|
|
48
|
+
return filterFields.some(field => index.fields.includes(field));
|
|
49
|
+
});
|
|
50
|
+
if (candidateIndexes.length === 0)
|
|
51
|
+
return null;
|
|
52
|
+
// Prefer indexes that match more filter fields
|
|
53
|
+
candidateIndexes.sort((a, b) => {
|
|
54
|
+
const aMatches = a.fields.filter(f => filterFields.includes(f)).length;
|
|
55
|
+
const bMatches = b.fields.filter(f => filterFields.includes(f)).length;
|
|
56
|
+
return bMatches - aMatches;
|
|
57
|
+
});
|
|
58
|
+
return candidateIndexes[0];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract filter fields from filter conditions
|
|
62
|
+
*/
|
|
63
|
+
extractFilterFields(filters) {
|
|
64
|
+
const fields = [];
|
|
65
|
+
const extract = (obj) => {
|
|
66
|
+
if (!obj || typeof obj !== 'object')
|
|
67
|
+
return;
|
|
68
|
+
for (const key of Object.keys(obj)) {
|
|
69
|
+
if (!key.startsWith('$')) {
|
|
70
|
+
fields.push(key);
|
|
71
|
+
}
|
|
72
|
+
if (typeof obj[key] === 'object') {
|
|
73
|
+
extract(obj[key]);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
extract(filters);
|
|
78
|
+
return [...new Set(fields)]; // Remove duplicates
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Optimize join type based on query characteristics
|
|
82
|
+
*
|
|
83
|
+
* Note: This method expects filter fields in one of two formats:
|
|
84
|
+
* 1. Table-prefixed: "tableName.fieldName" (e.g., "accounts.type")
|
|
85
|
+
* 2. Simple field name: "fieldName" (checked against joined table schema)
|
|
86
|
+
*
|
|
87
|
+
* Multi-level qualification (e.g., "schema.table.field") is not currently supported.
|
|
88
|
+
*/
|
|
89
|
+
optimizeJoinType(join, ast) {
|
|
90
|
+
// If we're filtering on the joined table, we can use INNER JOIN
|
|
91
|
+
if (ast.filters) {
|
|
92
|
+
const filterFields = this.extractFilterFields(ast.filters);
|
|
93
|
+
// Check if any filter field references the joined table
|
|
94
|
+
const hasFilterOnJoinTable = filterFields.some(field => {
|
|
95
|
+
// Handle table-prefixed fields like "accounts.type"
|
|
96
|
+
if (field.includes('.')) {
|
|
97
|
+
const parts = field.split('.');
|
|
98
|
+
// Only consider the first part as table name for simplicity
|
|
99
|
+
// This assumes format: "table.field" not "schema.table.field"
|
|
100
|
+
if (parts.length === 2 && parts[0] === join.table) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
// If more than 2 parts or table doesn't match, skip this field
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
// Also check if the field exists in the joined table schema (non-prefixed)
|
|
107
|
+
const schema = this.schemas.get(join.table);
|
|
108
|
+
if (schema) {
|
|
109
|
+
return schema.fields[field] !== undefined;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
});
|
|
113
|
+
if (hasFilterOnJoinTable) {
|
|
114
|
+
return 'inner'; // Convert LEFT to INNER for better performance
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return join.type;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Optimize a query AST to SQL
|
|
121
|
+
*/
|
|
122
|
+
optimize(ast) {
|
|
123
|
+
const schema = this.schemas.get(ast.object);
|
|
124
|
+
if (!schema) {
|
|
125
|
+
// Fallback to basic SQL generation
|
|
126
|
+
return this.generateBasicSQL(ast);
|
|
127
|
+
}
|
|
128
|
+
let sql = 'SELECT ';
|
|
129
|
+
// Fields
|
|
130
|
+
if (ast.fields && ast.fields.length > 0) {
|
|
131
|
+
sql += ast.fields.join(', ');
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
sql += '*';
|
|
135
|
+
}
|
|
136
|
+
sql += ` FROM ${ast.object}`;
|
|
137
|
+
// Index hints
|
|
138
|
+
if (ast.filters) {
|
|
139
|
+
const filterFields = this.extractFilterFields(ast.filters);
|
|
140
|
+
const bestIndex = this.getBestIndex(ast.object, filterFields);
|
|
141
|
+
if (bestIndex) {
|
|
142
|
+
// Add index hint for MySQL/MariaDB
|
|
143
|
+
sql += ` USE INDEX (${bestIndex.name})`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Optimized joins
|
|
147
|
+
if (ast.joins && ast.joins.length > 0) {
|
|
148
|
+
for (const join of ast.joins) {
|
|
149
|
+
const optimizedType = this.optimizeJoinType(join, ast);
|
|
150
|
+
sql += ` ${optimizedType.toUpperCase()} JOIN ${join.table}`;
|
|
151
|
+
// Simplified join condition
|
|
152
|
+
if (typeof join.on === 'string') {
|
|
153
|
+
sql += ` ON ${join.on}`;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// WHERE clause
|
|
158
|
+
if (ast.filters) {
|
|
159
|
+
sql += ' WHERE ' + this.filtersToSQL(ast.filters);
|
|
160
|
+
}
|
|
161
|
+
// ORDER BY
|
|
162
|
+
if (ast.sort && ast.sort.length > 0) {
|
|
163
|
+
sql += ' ORDER BY ';
|
|
164
|
+
sql += ast.sort.map(s => `${s.field} ${s.order.toUpperCase()}`).join(', ');
|
|
165
|
+
}
|
|
166
|
+
// LIMIT and OFFSET
|
|
167
|
+
if (ast.limit !== undefined) {
|
|
168
|
+
sql += ` LIMIT ${ast.limit}`;
|
|
169
|
+
}
|
|
170
|
+
if (ast.offset !== undefined) {
|
|
171
|
+
sql += ` OFFSET ${ast.offset}`;
|
|
172
|
+
}
|
|
173
|
+
return sql;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Convert filter object to SQL WHERE clause
|
|
177
|
+
*/
|
|
178
|
+
filtersToSQL(filters) {
|
|
179
|
+
if (typeof filters === 'string') {
|
|
180
|
+
return filters;
|
|
181
|
+
}
|
|
182
|
+
// Simplified filter conversion
|
|
183
|
+
const conditions = [];
|
|
184
|
+
for (const [key, value] of Object.entries(filters)) {
|
|
185
|
+
if (key === '$and') {
|
|
186
|
+
const subconditions = value.map(f => this.filtersToSQL(f));
|
|
187
|
+
conditions.push(`(${subconditions.join(' AND ')})`);
|
|
188
|
+
}
|
|
189
|
+
else if (key === '$or') {
|
|
190
|
+
const subconditions = value.map(f => this.filtersToSQL(f));
|
|
191
|
+
conditions.push(`(${subconditions.join(' OR ')})`);
|
|
192
|
+
}
|
|
193
|
+
else if (!key.startsWith('$')) {
|
|
194
|
+
// Field condition
|
|
195
|
+
if (typeof value === 'object' && value !== null) {
|
|
196
|
+
for (const [op, val] of Object.entries(value)) {
|
|
197
|
+
switch (op) {
|
|
198
|
+
case '$eq':
|
|
199
|
+
conditions.push(`${key} = '${val}'`);
|
|
200
|
+
break;
|
|
201
|
+
case '$ne':
|
|
202
|
+
conditions.push(`${key} != '${val}'`);
|
|
203
|
+
break;
|
|
204
|
+
case '$gt':
|
|
205
|
+
conditions.push(`${key} > '${val}'`);
|
|
206
|
+
break;
|
|
207
|
+
case '$gte':
|
|
208
|
+
conditions.push(`${key} >= '${val}'`);
|
|
209
|
+
break;
|
|
210
|
+
case '$lt':
|
|
211
|
+
conditions.push(`${key} < '${val}'`);
|
|
212
|
+
break;
|
|
213
|
+
case '$lte':
|
|
214
|
+
conditions.push(`${key} <= '${val}'`);
|
|
215
|
+
break;
|
|
216
|
+
case '$in':
|
|
217
|
+
const inValues = val.map(v => `'${v}'`).join(', ');
|
|
218
|
+
conditions.push(`${key} IN (${inValues})`);
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
conditions.push(`${key} = '${value}'`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return conditions.join(' AND ');
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Fallback: generate basic SQL without optimizations
|
|
232
|
+
*/
|
|
233
|
+
generateBasicSQL(ast) {
|
|
234
|
+
let sql = 'SELECT ';
|
|
235
|
+
if (ast.fields && ast.fields.length > 0) {
|
|
236
|
+
sql += ast.fields.join(', ');
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
sql += '*';
|
|
240
|
+
}
|
|
241
|
+
sql += ` FROM ${ast.object}`;
|
|
242
|
+
if (ast.filters) {
|
|
243
|
+
sql += ' WHERE ' + this.filtersToSQL(ast.filters);
|
|
244
|
+
}
|
|
245
|
+
if (ast.sort && ast.sort.length > 0) {
|
|
246
|
+
sql += ' ORDER BY ';
|
|
247
|
+
sql += ast.sort.map(s => `${s.field} ${s.order.toUpperCase()}`).join(', ');
|
|
248
|
+
}
|
|
249
|
+
if (ast.limit !== undefined) {
|
|
250
|
+
sql += ` LIMIT ${ast.limit}`;
|
|
251
|
+
}
|
|
252
|
+
if (ast.offset !== undefined) {
|
|
253
|
+
sql += ` OFFSET ${ast.offset}`;
|
|
254
|
+
}
|
|
255
|
+
return sql;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Clear all registered schemas
|
|
259
|
+
*/
|
|
260
|
+
clearSchemas() {
|
|
261
|
+
this.schemas.clear();
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.SQLQueryOptimizer = SQLQueryOptimizer;
|
|
265
|
+
//# sourceMappingURL=SQLQueryOptimizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLQueryOptimizer.js","sourceRoot":"","sources":["../../src/optimizations/SQLQueryOptimizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
* Kernel Optimizations Module
|
|
10
|
+
*
|
|
11
|
+
* This module contains 10 key optimizations for the ObjectQL kernel:
|
|
12
|
+
*
|
|
13
|
+
* 1. OptimizedMetadataRegistry - O(k) package uninstall with secondary indexes
|
|
14
|
+
* 2. QueryCompiler - LRU cache for compiled query plans
|
|
15
|
+
* 3. CompiledHookManager - Pre-compiled hook pipelines
|
|
16
|
+
* 4. GlobalConnectionPool - Kernel-level connection pooling
|
|
17
|
+
* 5. OptimizedValidationEngine - Compiled validation rules
|
|
18
|
+
* 6. LazyMetadataLoader - On-demand metadata loading with predictive preload
|
|
19
|
+
* 7. DependencyGraph - DAG-based dependency resolution
|
|
20
|
+
* 8. SQLQueryOptimizer - SQL-aware query optimization with index hints
|
|
21
|
+
*
|
|
22
|
+
* Note: TypeScript type generation optimization (#7) and memory-mapped storage (#10)
|
|
23
|
+
* are not included in this release for compatibility and complexity reasons.
|
|
24
|
+
*/
|
|
25
|
+
export { OptimizedMetadataRegistry } from './OptimizedMetadataRegistry';
|
|
26
|
+
export { QueryCompiler, type CompiledQuery } from './QueryCompiler';
|
|
27
|
+
export { CompiledHookManager, type Hook } from './CompiledHookManager';
|
|
28
|
+
export { GlobalConnectionPool, type Connection, type PoolLimits } from './GlobalConnectionPool';
|
|
29
|
+
export { OptimizedValidationEngine, type ValidatorFunction, type ValidationSchema } from './OptimizedValidationEngine';
|
|
30
|
+
export { LazyMetadataLoader, type ObjectMetadata, type MetadataLoader } from './LazyMetadataLoader';
|
|
31
|
+
export { DependencyGraph, type DependencyEdge, type DependencyType } from './DependencyGraph';
|
|
32
|
+
export { SQLQueryOptimizer, type IndexMetadata, type SchemaWithIndexes, type OptimizableQueryAST } from './SQLQueryOptimizer';
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SQLQueryOptimizer = exports.DependencyGraph = exports.LazyMetadataLoader = exports.OptimizedValidationEngine = exports.GlobalConnectionPool = exports.CompiledHookManager = exports.QueryCompiler = exports.OptimizedMetadataRegistry = void 0;
|
|
11
|
+
/**
|
|
12
|
+
* Kernel Optimizations Module
|
|
13
|
+
*
|
|
14
|
+
* This module contains 10 key optimizations for the ObjectQL kernel:
|
|
15
|
+
*
|
|
16
|
+
* 1. OptimizedMetadataRegistry - O(k) package uninstall with secondary indexes
|
|
17
|
+
* 2. QueryCompiler - LRU cache for compiled query plans
|
|
18
|
+
* 3. CompiledHookManager - Pre-compiled hook pipelines
|
|
19
|
+
* 4. GlobalConnectionPool - Kernel-level connection pooling
|
|
20
|
+
* 5. OptimizedValidationEngine - Compiled validation rules
|
|
21
|
+
* 6. LazyMetadataLoader - On-demand metadata loading with predictive preload
|
|
22
|
+
* 7. DependencyGraph - DAG-based dependency resolution
|
|
23
|
+
* 8. SQLQueryOptimizer - SQL-aware query optimization with index hints
|
|
24
|
+
*
|
|
25
|
+
* Note: TypeScript type generation optimization (#7) and memory-mapped storage (#10)
|
|
26
|
+
* are not included in this release for compatibility and complexity reasons.
|
|
27
|
+
*/
|
|
28
|
+
var OptimizedMetadataRegistry_1 = require("./OptimizedMetadataRegistry");
|
|
29
|
+
Object.defineProperty(exports, "OptimizedMetadataRegistry", { enumerable: true, get: function () { return OptimizedMetadataRegistry_1.OptimizedMetadataRegistry; } });
|
|
30
|
+
var QueryCompiler_1 = require("./QueryCompiler");
|
|
31
|
+
Object.defineProperty(exports, "QueryCompiler", { enumerable: true, get: function () { return QueryCompiler_1.QueryCompiler; } });
|
|
32
|
+
var CompiledHookManager_1 = require("./CompiledHookManager");
|
|
33
|
+
Object.defineProperty(exports, "CompiledHookManager", { enumerable: true, get: function () { return CompiledHookManager_1.CompiledHookManager; } });
|
|
34
|
+
var GlobalConnectionPool_1 = require("./GlobalConnectionPool");
|
|
35
|
+
Object.defineProperty(exports, "GlobalConnectionPool", { enumerable: true, get: function () { return GlobalConnectionPool_1.GlobalConnectionPool; } });
|
|
36
|
+
var OptimizedValidationEngine_1 = require("./OptimizedValidationEngine");
|
|
37
|
+
Object.defineProperty(exports, "OptimizedValidationEngine", { enumerable: true, get: function () { return OptimizedValidationEngine_1.OptimizedValidationEngine; } });
|
|
38
|
+
var LazyMetadataLoader_1 = require("./LazyMetadataLoader");
|
|
39
|
+
Object.defineProperty(exports, "LazyMetadataLoader", { enumerable: true, get: function () { return LazyMetadataLoader_1.LazyMetadataLoader; } });
|
|
40
|
+
var DependencyGraph_1 = require("./DependencyGraph");
|
|
41
|
+
Object.defineProperty(exports, "DependencyGraph", { enumerable: true, get: function () { return DependencyGraph_1.DependencyGraph; } });
|
|
42
|
+
var SQLQueryOptimizer_1 = require("./SQLQueryOptimizer");
|
|
43
|
+
Object.defineProperty(exports, "SQLQueryOptimizer", { enumerable: true, get: function () { return SQLQueryOptimizer_1.SQLQueryOptimizer; } });
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/optimizations/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,iDAAoE;AAA3D,8GAAA,aAAa,OAAA;AACtB,6DAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,+DAAgG;AAAvF,4HAAA,oBAAoB,OAAA;AAC7B,yEAAuH;AAA9G,sIAAA,yBAAyB,OAAA;AAClC,2DAAoG;AAA3F,wHAAA,kBAAkB,OAAA;AAC3B,qDAA8F;AAArF,kHAAA,eAAe,OAAA;AACxB,yDAA8H;AAArH,sHAAA,iBAAiB,OAAA"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
|
-
import type { RuntimePlugin, RuntimeContext } from '@objectql/
|
|
9
|
-
import { ValidatorPluginConfig } from '
|
|
10
|
-
import { FormulaPluginConfig } from '
|
|
8
|
+
import type { RuntimePlugin, RuntimeContext } from '@objectql/types';
|
|
9
|
+
import { ValidatorPluginConfig } from '@objectql/plugin-validator';
|
|
10
|
+
import { FormulaPluginConfig } from '@objectql/plugin-formula';
|
|
11
11
|
import type { Driver } from '@objectql/types';
|
|
12
12
|
/**
|
|
13
13
|
* Configuration for the ObjectQL Plugin
|
|
@@ -57,15 +57,14 @@ export interface ObjectQLPluginConfig {
|
|
|
57
57
|
/**
|
|
58
58
|
* ObjectQL Plugin
|
|
59
59
|
*
|
|
60
|
-
* Implements the RuntimePlugin interface
|
|
61
|
-
*
|
|
62
|
-
* on top of the ObjectStack kernel.
|
|
60
|
+
* Implements the RuntimePlugin interface to provide ObjectQL's enhanced features
|
|
61
|
+
* (Repository, Validator, Formula, AI) on top of the microkernel.
|
|
63
62
|
*/
|
|
64
63
|
export declare class ObjectQLPlugin implements RuntimePlugin {
|
|
65
64
|
private config;
|
|
66
65
|
name: string;
|
|
67
66
|
version: string;
|
|
68
|
-
constructor(config?: ObjectQLPluginConfig);
|
|
67
|
+
constructor(config?: ObjectQLPluginConfig, ql?: any);
|
|
69
68
|
/**
|
|
70
69
|
* Install the plugin into the kernel
|
|
71
70
|
* This is called during kernel initialization
|
|
@@ -76,6 +75,8 @@ export declare class ObjectQLPlugin implements RuntimePlugin {
|
|
|
76
75
|
* This is the initialization phase
|
|
77
76
|
*/
|
|
78
77
|
onStart(ctx: RuntimeContext): Promise<void>;
|
|
78
|
+
init(kernel: any): Promise<void>;
|
|
79
|
+
start(kernel: any): Promise<void>;
|
|
79
80
|
/**
|
|
80
81
|
* Register the Repository pattern
|
|
81
82
|
* @private
|
package/dist/plugin.js
CHANGED
|
@@ -8,22 +8,21 @@
|
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.ObjectQLPlugin = void 0;
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const plugin_validator_1 = require("@objectql/plugin-validator");
|
|
12
|
+
const plugin_formula_1 = require("@objectql/plugin-formula");
|
|
13
13
|
const query_service_1 = require("./query/query-service");
|
|
14
14
|
const query_analyzer_1 = require("./query/query-analyzer");
|
|
15
15
|
/**
|
|
16
16
|
* ObjectQL Plugin
|
|
17
17
|
*
|
|
18
|
-
* Implements the RuntimePlugin interface
|
|
19
|
-
*
|
|
20
|
-
* on top of the ObjectStack kernel.
|
|
18
|
+
* Implements the RuntimePlugin interface to provide ObjectQL's enhanced features
|
|
19
|
+
* (Repository, Validator, Formula, AI) on top of the microkernel.
|
|
21
20
|
*/
|
|
22
21
|
class ObjectQLPlugin {
|
|
23
|
-
constructor(config = {}) {
|
|
22
|
+
constructor(config = {}, ql) {
|
|
24
23
|
this.config = config;
|
|
25
24
|
this.name = '@objectql/core';
|
|
26
|
-
this.version = '4.0.
|
|
25
|
+
this.version = '4.0.2';
|
|
27
26
|
// Set defaults
|
|
28
27
|
this.config = {
|
|
29
28
|
enableRepository: true,
|
|
@@ -39,32 +38,51 @@ class ObjectQLPlugin {
|
|
|
39
38
|
* This is called during kernel initialization
|
|
40
39
|
*/
|
|
41
40
|
async install(ctx) {
|
|
41
|
+
var _a, _b, _c;
|
|
42
42
|
console.log(`[${this.name}] Installing plugin...`);
|
|
43
43
|
const kernel = ctx.engine;
|
|
44
|
+
// Get datasources - either from config or from kernel drivers
|
|
45
|
+
let datasources = this.config.datasources;
|
|
46
|
+
if (!datasources) {
|
|
47
|
+
// Try to get drivers from kernel (micro-kernel pattern)
|
|
48
|
+
const drivers = (_a = kernel.getAllDrivers) === null || _a === void 0 ? void 0 : _a.call(kernel);
|
|
49
|
+
if (drivers && drivers.length > 0) {
|
|
50
|
+
datasources = {};
|
|
51
|
+
drivers.forEach((driver, index) => {
|
|
52
|
+
// Use driver name if available, otherwise use 'default' for first driver
|
|
53
|
+
const driverName = driver.name || (index === 0 ? 'default' : `driver_${index + 1}`);
|
|
54
|
+
datasources[driverName] = driver;
|
|
55
|
+
});
|
|
56
|
+
console.log(`[${this.name}] Using drivers from kernel:`, Object.keys(datasources));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.warn(`[${this.name}] No datasources configured and no drivers found in kernel. Repository and QueryService will not be available.`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
44
62
|
// Register QueryService and QueryAnalyzer if enabled
|
|
45
|
-
if (this.config.enableQueryService !== false &&
|
|
46
|
-
const queryService = new query_service_1.QueryService(
|
|
63
|
+
if (this.config.enableQueryService !== false && datasources) {
|
|
64
|
+
const queryService = new query_service_1.QueryService(datasources, kernel.metadata);
|
|
47
65
|
kernel.queryService = queryService;
|
|
48
66
|
const queryAnalyzer = new query_analyzer_1.QueryAnalyzer(queryService, kernel.metadata);
|
|
49
67
|
kernel.queryAnalyzer = queryAnalyzer;
|
|
50
68
|
console.log(`[${this.name}] QueryService and QueryAnalyzer registered`);
|
|
51
69
|
}
|
|
52
70
|
// Register components based on configuration
|
|
53
|
-
if (this.config.enableRepository !== false) {
|
|
54
|
-
await this.registerRepository(
|
|
71
|
+
if (this.config.enableRepository !== false && datasources) {
|
|
72
|
+
await this.registerRepository(kernel, datasources);
|
|
55
73
|
}
|
|
56
74
|
// Install validator plugin if enabled
|
|
57
75
|
if (this.config.enableValidator !== false) {
|
|
58
|
-
const validatorPlugin = new
|
|
59
|
-
await validatorPlugin.install(ctx);
|
|
76
|
+
const validatorPlugin = new plugin_validator_1.ValidatorPlugin(this.config.validatorConfig || {});
|
|
77
|
+
await ((_b = validatorPlugin.install) === null || _b === void 0 ? void 0 : _b.call(validatorPlugin, ctx));
|
|
60
78
|
}
|
|
61
79
|
// Install formula plugin if enabled
|
|
62
80
|
if (this.config.enableFormulas !== false) {
|
|
63
|
-
const formulaPlugin = new
|
|
64
|
-
await formulaPlugin.install(ctx);
|
|
81
|
+
const formulaPlugin = new plugin_formula_1.FormulaPlugin(this.config.formulaConfig || {});
|
|
82
|
+
await ((_c = formulaPlugin.install) === null || _c === void 0 ? void 0 : _c.call(formulaPlugin, ctx));
|
|
65
83
|
}
|
|
66
84
|
if (this.config.enableAI !== false) {
|
|
67
|
-
await this.registerAI(
|
|
85
|
+
await this.registerAI(kernel);
|
|
68
86
|
}
|
|
69
87
|
console.log(`[${this.name}] Plugin installed successfully`);
|
|
70
88
|
}
|
|
@@ -76,16 +94,29 @@ class ObjectQLPlugin {
|
|
|
76
94
|
console.log(`[${this.name}] Starting plugin...`);
|
|
77
95
|
// Additional startup logic can be added here
|
|
78
96
|
}
|
|
97
|
+
// --- Adapter for @objectstack/core compatibility ---
|
|
98
|
+
async init(kernel) {
|
|
99
|
+
// The new core passes the kernel instance directly
|
|
100
|
+
// We wrap it to match the old RuntimeContext interface
|
|
101
|
+
const ctx = {
|
|
102
|
+
engine: kernel,
|
|
103
|
+
getKernel: () => kernel
|
|
104
|
+
};
|
|
105
|
+
return this.install(ctx);
|
|
106
|
+
}
|
|
107
|
+
async start(kernel) {
|
|
108
|
+
const ctx = {
|
|
109
|
+
engine: kernel,
|
|
110
|
+
getKernel: () => kernel
|
|
111
|
+
};
|
|
112
|
+
return this.onStart(ctx);
|
|
113
|
+
}
|
|
114
|
+
// ---------------------------------------------------
|
|
79
115
|
/**
|
|
80
116
|
* Register the Repository pattern
|
|
81
117
|
* @private
|
|
82
118
|
*/
|
|
83
|
-
async registerRepository(kernel) {
|
|
84
|
-
if (!this.config.datasources) {
|
|
85
|
-
console.log(`[${this.name}] No datasources configured, skipping repository registration`);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const datasources = this.config.datasources;
|
|
119
|
+
async registerRepository(kernel, datasources) {
|
|
89
120
|
// Helper function to get the driver for an object
|
|
90
121
|
const getDriver = (objectName) => {
|
|
91
122
|
const objectConfig = kernel.metadata.get('object', objectName);
|
|
@@ -120,6 +151,10 @@ class ObjectQLPlugin {
|
|
|
120
151
|
const driver = getDriver(objectName);
|
|
121
152
|
return await driver.findOne(objectName, id);
|
|
122
153
|
};
|
|
154
|
+
kernel.count = async (objectName, filters) => {
|
|
155
|
+
const driver = getDriver(objectName);
|
|
156
|
+
return await driver.count(objectName, filters || {}, {});
|
|
157
|
+
};
|
|
123
158
|
console.log(`[${this.name}] Repository pattern registered`);
|
|
124
159
|
}
|
|
125
160
|
/**
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-analyzer.js","sourceRoot":"","sources":["../../src/query/query-analyzer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"query-analyzer.js","sourceRoot":"","sources":["../../src/query/query-analyzer.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAyHH;;;;;;;;;GASG;AACH,MAAa,aAAa;IAatB,YACY,YAA0B,EAC1B,QAA0B;QAD1B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,aAAQ,GAAR,QAAQ,CAAkB;QAd9B,UAAK,GAAe;YACxB,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,MAAM,CAAC,SAAS;YAC9B,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;SAClB,CAAC;QAEM,mBAAc,GAAa,EAAE,CAAC;QACrB,qBAAgB,GAAG,EAAE,CAAC;IAKpC,CAAC;IAEJ;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,KAAmB;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAE1C,yCAAyC;QACzC,MAAM,GAAG,GAAa;YAClB,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,KAAK,CAAC,KAAY,EAAE,yBAAyB;YACpD,OAAO,EAAE,KAAK,CAAC,OAAc,EAAE,yCAAyC;YACxE,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;SACvB,CAAC;QAEF,kCAAkC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1D,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAErD,uBAAuB;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAErE,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEnD,yCAAyC;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAEvD,OAAO;YACH,GAAG;YACH,aAAa;YACb,OAAO;YACP,QAAQ;YACR,WAAW;YACX,UAAU;SACb,CAAC;IACN,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,CACT,UAAkB,EAClB,KAAmB,EACnB,UAAwB,EAAE;;QAE1B,2BAA2B;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAEnD,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;YAC3D,GAAG,OAAO;YACV,OAAO,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,aAAa,KAAI,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,MAAM,WAAW,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,WAAW,KAAI,YAAY,CAAC;QAEhE,uBAAuB;QACvB,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,GAAG,CAAC;QAE9D,oBAAoB;QACpB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;QAEvD,OAAO;YACH,aAAa;YACb,WAAW;YACX,YAAY;YACZ,SAAS;YACT,IAAI;YACJ,UAAU;SACb,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,aAAa;QACT,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe;QACX,IAAI,CAAC,KAAK,GAAG;YACT,YAAY,EAAE,CAAC;YACf,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,MAAM,CAAC,SAAS;YAC9B,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;SAClB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,UAAkB;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,MAAoB,EAAE,KAAmB;QACnE,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,iCAAiC;QACjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,kGAAkG;QAClG,wDAAwD;QACxD,MAAM,uBAAuB,GAAG,CAAC,MAAW,EAAQ,EAAE;YAClD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,OAAO;YAElD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,yBAAyB;gBACzB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,2CAA2C;oBAC3C,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;wBAClC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;4BACxB,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;wBAC5C,CAAC;oBACL,CAAC;oBACD,SAAS;gBACb,CAAC;gBACD,uBAAuB;gBACvB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC,CAAC;QAEF,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErC,oCAAoC;QACpC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC1G,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC3C,CAAC,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAErB,oEAAoE;YACpE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,MAAoB,EAAE,KAAmB;QAC7D,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,wCAAwC;QACxC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC3D,IAAI,UAAU,GAAG,EAAE,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC,iBAAiB,UAAU,iDAAiD,CAAC,CAAC;YAChG,CAAC;QACL,CAAC;QAED,2CAA2C;QAC3C,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,mBAAmB,CACvB,MAAoB,EACpB,KAAmB,EACnB,OAAiB;QAEjB,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,uBAAuB;QACvB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QACvE,CAAC;QAED,yBAAyB;QACzB,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAE9E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,WAAW,CAAC,IAAI,CAAC,gCAAgC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAC5E,CAAC;QAED,+CAA+C;QAC/C,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3E,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBACxC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;YAEjC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,WAAW,CAAC,IAAI,CAAC,mCAAmC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,KAAmB;QAC3C,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,kBAAkB;QAClB,UAAU,IAAI,EAAE,CAAC;QAEjB,yBAAyB;QACzB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACpD,UAAU,IAAI,WAAW,GAAG,CAAC,CAAC;YAE9B,8CAA8C;YAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAC1D,IAAI,aAAa,EAAE,CAAC;gBAChB,UAAU,IAAI,EAAE,CAAC;YACrB,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,8CAA8C;QAC9C,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACtE,UAAU,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,gCAAgC;QAChC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,UAAU,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,aAAa;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,MAAoB,EAAE,KAAmB;QAC1D,oEAAoE;QACpE,yDAAyD;QAEzD,qBAAqB;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB;QACpC,CAAC;QAED,4CAA4C;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;QAE7D,yBAAyB;QACzB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,eAAe,CACnB,UAAkB,EAClB,aAAqB,EACrB,KAAmB;QAEnB,gBAAgB;QAChB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExC,iBAAiB;QACjB,IAAI,CAAC,KAAK,CAAC,gBAAgB;YACvB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAEpF,iBAAiB;QACjB,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE3E,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEhG,qBAAqB;QACrB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;gBACxB,UAAU;gBACV,aAAa;gBACb,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;YACzF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG;gBAChD,UAAU;gBACV,aAAa;gBACb,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE;aACxB,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;CACJ;AA3YD,sCA2YC"}
|
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { UnifiedQuery } from '@objectql/types';
|
|
9
9
|
import { Data } from '@objectstack/spec';
|
|
10
|
-
|
|
10
|
+
interface QueryAST extends Data.QueryAST {
|
|
11
|
+
top?: number;
|
|
12
|
+
expand?: Record<string, any>;
|
|
13
|
+
aggregations?: any[];
|
|
14
|
+
having?: any;
|
|
15
|
+
}
|
|
11
16
|
/**
|
|
12
17
|
* Query Builder
|
|
13
18
|
*
|