@objectql/core 4.2.0 → 4.2.2
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 +1 -1
- package/CHANGELOG.md +34 -0
- package/README.md +5 -2
- package/dist/app.d.ts +61 -52
- package/dist/app.js +100 -435
- package/dist/app.js.map +1 -1
- package/dist/index.d.ts +14 -20
- package/dist/index.js +21 -20
- package/dist/index.js.map +1 -1
- package/dist/kernel-factory.d.ts +38 -0
- package/dist/kernel-factory.js +38 -0
- package/dist/kernel-factory.js.map +1 -0
- package/dist/plugin.d.ts +9 -16
- package/dist/plugin.js +71 -48
- package/dist/plugin.js.map +1 -1
- package/dist/repository.d.ts +4 -31
- package/dist/repository.js +7 -283
- package/dist/repository.js.map +1 -1
- package/dist/util.js +4 -2
- package/dist/util.js.map +1 -1
- package/package.json +14 -12
- package/src/app.ts +156 -539
- package/src/index.ts +18 -42
- package/src/kernel-factory.ts +47 -0
- package/src/plugin.ts +77 -85
- package/src/repository.ts +4 -320
- package/src/util.ts +5 -3
- package/test/__mocks__/@objectstack/core.ts +250 -1
- package/test/__mocks__/@objectstack/objectql.ts +273 -0
- package/test/__mocks__/@objectstack/runtime.ts +14 -5
- package/test/introspection.test.ts +1 -1
- package/test/mock-driver.ts +5 -5
- package/test/optimizations.test.ts +2 -2
- package/test/plugin-integration.test.ts +1 -3
- package/test/utils.ts +6 -6
- package/tsconfig.json +3 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/ai/index.d.ts +0 -8
- package/dist/ai/index.js +0 -25
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/registry.d.ts +0 -23
- package/dist/ai/registry.js +0 -78
- package/dist/ai/registry.js.map +0 -1
- package/dist/gateway.d.ts +0 -37
- package/dist/gateway.js +0 -93
- package/dist/gateway.js.map +0 -1
- package/dist/optimizations/CompiledHookManager.d.ts +0 -56
- package/dist/optimizations/CompiledHookManager.js +0 -170
- package/dist/optimizations/CompiledHookManager.js.map +0 -1
- package/dist/optimizations/DependencyGraph.d.ts +0 -82
- package/dist/optimizations/DependencyGraph.js +0 -211
- package/dist/optimizations/DependencyGraph.js.map +0 -1
- package/dist/optimizations/GlobalConnectionPool.d.ts +0 -89
- package/dist/optimizations/GlobalConnectionPool.js +0 -193
- package/dist/optimizations/GlobalConnectionPool.js.map +0 -1
- package/dist/optimizations/LazyMetadataLoader.d.ts +0 -75
- package/dist/optimizations/LazyMetadataLoader.js +0 -149
- package/dist/optimizations/LazyMetadataLoader.js.map +0 -1
- package/dist/optimizations/OptimizedMetadataRegistry.d.ts +0 -26
- package/dist/optimizations/OptimizedMetadataRegistry.js +0 -117
- package/dist/optimizations/OptimizedMetadataRegistry.js.map +0 -1
- package/dist/optimizations/OptimizedValidationEngine.d.ts +0 -73
- package/dist/optimizations/OptimizedValidationEngine.js +0 -141
- package/dist/optimizations/OptimizedValidationEngine.js.map +0 -1
- package/dist/optimizations/QueryCompiler.d.ts +0 -51
- package/dist/optimizations/QueryCompiler.js +0 -216
- package/dist/optimizations/QueryCompiler.js.map +0 -1
- package/dist/optimizations/SQLQueryOptimizer.d.ts +0 -96
- package/dist/optimizations/SQLQueryOptimizer.js +0 -265
- package/dist/optimizations/SQLQueryOptimizer.js.map +0 -1
- package/dist/optimizations/index.d.ts +0 -32
- package/dist/optimizations/index.js +0 -44
- package/dist/optimizations/index.js.map +0 -1
- package/dist/protocol.d.ts +0 -191
- package/dist/protocol.js +0 -272
- package/dist/protocol.js.map +0 -1
- package/dist/query/filter-translator.d.ts +0 -24
- package/dist/query/filter-translator.js +0 -38
- package/dist/query/filter-translator.js.map +0 -1
- package/dist/query/index.d.ts +0 -22
- package/dist/query/index.js +0 -39
- package/dist/query/index.js.map +0 -1
- package/dist/query/query-analyzer.d.ts +0 -186
- package/dist/query/query-analyzer.js +0 -348
- package/dist/query/query-analyzer.js.map +0 -1
- package/dist/query/query-builder.d.ts +0 -27
- package/dist/query/query-builder.js +0 -69
- package/dist/query/query-builder.js.map +0 -1
- package/dist/query/query-service.d.ts +0 -151
- package/dist/query/query-service.js +0 -272
- package/dist/query/query-service.js.map +0 -1
- package/src/ai/index.ts +0 -9
- package/src/ai/registry.ts +0 -81
- package/src/gateway.ts +0 -105
- package/src/optimizations/CompiledHookManager.ts +0 -193
- package/src/optimizations/DependencyGraph.ts +0 -255
- package/src/optimizations/GlobalConnectionPool.ts +0 -251
- package/src/optimizations/LazyMetadataLoader.ts +0 -180
- package/src/optimizations/OptimizedMetadataRegistry.ts +0 -132
- package/src/optimizations/OptimizedValidationEngine.ts +0 -172
- package/src/optimizations/QueryCompiler.ts +0 -242
- package/src/optimizations/SQLQueryOptimizer.ts +0 -329
- package/src/optimizations/index.ts +0 -34
- package/src/protocol.ts +0 -304
- package/src/query/filter-translator.ts +0 -41
- package/src/query/index.ts +0 -24
- package/src/query/query-analyzer.ts +0 -532
- package/src/query/query-builder.ts +0 -64
- package/src/query/query-service.ts +0 -397
- package/test/ai-registry.test.ts +0 -42
- package/test/app.test.ts +0 -578
- package/test/filter-syntax.test.ts +0 -233
- package/test/gateway.test.ts +0 -88
- package/test/protocol.test.ts +0 -143
- package/test/repository-validation.test.ts +0 -351
- package/test/repository.test.ts +0 -151
package/dist/app.js
CHANGED
|
@@ -1,471 +1,136 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* ObjectQL
|
|
3
|
+
* ObjectQL Bridge Class
|
|
4
4
|
* Copyright (c) 2026-present ObjectStack Inc.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Extends the upstream @objectstack/objectql.ObjectQL engine with:
|
|
7
|
+
* - Legacy constructor config (datasources map)
|
|
8
|
+
* - MetadataRegistry integration (for ObjectLoader filesystem loading)
|
|
9
|
+
*
|
|
10
|
+
* This allows existing consumers to keep using:
|
|
11
|
+
* const app = new ObjectQL({ datasources: { default: driver } });
|
|
12
|
+
* const loader = new ObjectLoader(app.metadata);
|
|
13
|
+
* await loader.load(dir);
|
|
14
|
+
* await app.init();
|
|
8
15
|
*/
|
|
9
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
17
|
exports.ObjectQL = void 0;
|
|
11
|
-
const types_1 = require("@objectql/types");
|
|
12
|
-
const runtime_1 = require("@objectstack/runtime");
|
|
13
18
|
const objectql_1 = require("@objectstack/objectql");
|
|
14
|
-
const
|
|
15
|
-
const plugin_formula_1 = require("@objectql/plugin-formula");
|
|
16
|
-
const repository_1 = require("./repository");
|
|
17
|
-
const util_1 = require("./util");
|
|
18
|
-
const CompiledHookManager_1 = require("./optimizations/CompiledHookManager");
|
|
19
|
+
const types_1 = require("@objectql/types");
|
|
19
20
|
/**
|
|
20
|
-
* ObjectQL
|
|
21
|
-
*
|
|
22
|
-
* ObjectQL implementation that wraps ObjectKernel
|
|
23
|
-
* to provide the plugin architecture.
|
|
21
|
+
* ObjectQL — drop-in replacement that bridges the upstream engine
|
|
22
|
+
* with the @objectql/types MetadataRegistry used by ObjectLoader.
|
|
24
23
|
*/
|
|
25
|
-
class ObjectQL {
|
|
26
|
-
|
|
27
|
-
get
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// Add runtime plugins from config
|
|
50
|
-
if (config.plugins) {
|
|
51
|
-
for (const plugin of config.plugins) {
|
|
52
|
-
if (typeof plugin === 'string') {
|
|
53
|
-
throw new Error("String plugins are not supported in core. Use @objectql/platform-node or pass plugin instance.");
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.use(plugin);
|
|
57
|
-
}
|
|
24
|
+
class ObjectQL extends objectql_1.ObjectQL {
|
|
25
|
+
/** Typed self-reference for compat methods */
|
|
26
|
+
get compat() { return this; }
|
|
27
|
+
constructor(config = {}) {
|
|
28
|
+
// Upstream constructor only accepts hostContext
|
|
29
|
+
super();
|
|
30
|
+
/**
|
|
31
|
+
* Filesystem metadata registry populated by ObjectLoader.
|
|
32
|
+
* After calling loader.load(), call app.init() to sync these
|
|
33
|
+
* entries into the upstream SchemaRegistry & driver layer.
|
|
34
|
+
*/
|
|
35
|
+
this.metadata = new types_1.MetadataRegistry();
|
|
36
|
+
this.pendingDrivers = [];
|
|
37
|
+
// Store drivers for registration during init()
|
|
38
|
+
if (config.datasources) {
|
|
39
|
+
for (const [name, driver] of Object.entries(config.datasources)) {
|
|
40
|
+
// Always set driver.name to the config key so datasource(name) lookups work
|
|
41
|
+
driver.name = name;
|
|
42
|
+
// Cast: local Driver interface is structurally compatible with upstream DriverInterface
|
|
43
|
+
this.pendingDrivers.push({
|
|
44
|
+
name,
|
|
45
|
+
driver: driver,
|
|
46
|
+
isDefault: name === 'default'
|
|
47
|
+
});
|
|
58
48
|
}
|
|
59
49
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
for (const
|
|
70
|
-
|
|
71
|
-
// NOTE: Modern ObjectKernel takes plugins in constructor.
|
|
72
|
-
if (this.kernel.use) {
|
|
73
|
-
// Try to avoid double registration if the kernel is smart, but since we don't know the kernel logic perfectly:
|
|
74
|
-
// Ideally check if already added. But for now, we leave this for backward compat
|
|
75
|
-
// if ObjectKernel DOESN't take constructor args but HAS use().
|
|
76
|
-
// However, we just instantiated it.
|
|
77
|
-
// Let's assume constructor is the way if available.
|
|
78
|
-
// But we keep this check for .use() just in case the constructor signature is different (e.g. empty)
|
|
79
|
-
this.kernel.use(plugin);
|
|
80
|
-
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Initialize the engine.
|
|
53
|
+
*
|
|
54
|
+
* Before calling the upstream init (which connects drivers and syncs schemas),
|
|
55
|
+
* bridge all objects loaded via ObjectLoader into the upstream SchemaRegistry.
|
|
56
|
+
*/
|
|
57
|
+
async init() {
|
|
58
|
+
// Register any pending drivers from the constructor config
|
|
59
|
+
for (const { driver, isDefault } of this.pendingDrivers) {
|
|
60
|
+
this.registerDriver(driver, isDefault);
|
|
81
61
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const items = objectql_1.SchemaRegistry.listItems(type);
|
|
99
|
-
return items.map(unwrapContent);
|
|
100
|
-
},
|
|
101
|
-
unregister: (type, name) => {
|
|
102
|
-
// Use the official unregisterItem API when available (added in @objectstack/objectql v0.9.2)
|
|
103
|
-
// Fallback to direct metadata access for older versions or test mocks
|
|
104
|
-
if (typeof objectql_1.SchemaRegistry.unregisterItem === 'function') {
|
|
105
|
-
objectql_1.SchemaRegistry.unregisterItem(type, name);
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
// Fallback: try to access metadata Map directly
|
|
109
|
-
const metadata = objectql_1.SchemaRegistry.metadata;
|
|
110
|
-
if (metadata && metadata instanceof Map) {
|
|
111
|
-
const collection = metadata.get(type);
|
|
112
|
-
if (collection && collection instanceof Map) {
|
|
113
|
-
collection.delete(name);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
unregisterPackage: (packageName) => {
|
|
119
|
-
// Use the official @objectstack/objectql 1.1.0 API for object cleanup
|
|
120
|
-
if (typeof objectql_1.SchemaRegistry.unregisterObjectsByPackage === 'function') {
|
|
121
|
-
objectql_1.SchemaRegistry.unregisterObjectsByPackage(packageName);
|
|
122
|
-
}
|
|
123
|
-
// Also clean up non-object metadata items by package
|
|
124
|
-
const metadata = objectql_1.SchemaRegistry.metadata;
|
|
125
|
-
if (metadata && metadata instanceof Map) {
|
|
126
|
-
for (const [type, collection] of metadata.entries()) {
|
|
127
|
-
if (collection instanceof Map) {
|
|
128
|
-
for (const [key, item] of collection.entries()) {
|
|
129
|
-
if (item.package === packageName) {
|
|
130
|
-
collection.delete(key);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
62
|
+
this.pendingDrivers = [];
|
|
63
|
+
this.syncMetadataToRegistry();
|
|
64
|
+
return super.init();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Sync all filesystem-loaded metadata into the upstream SchemaRegistry.
|
|
68
|
+
* Called automatically by init(), but can also be called manually.
|
|
69
|
+
*/
|
|
70
|
+
syncMetadataToRegistry() {
|
|
71
|
+
// Bridge filesystem-loaded objects → upstream SchemaRegistry
|
|
72
|
+
const objects = this.metadata.list('object');
|
|
73
|
+
for (const obj of objects) {
|
|
74
|
+
if (obj && obj.name) {
|
|
75
|
+
// Only register if not already in SchemaRegistry
|
|
76
|
+
if (!objectql_1.SchemaRegistry.getObject(obj.name)) {
|
|
77
|
+
super.registerObject(obj, '__filesystem__');
|
|
135
78
|
}
|
|
136
79
|
}
|
|
137
|
-
};
|
|
138
|
-
const kernelHooks = this.kernel.hooks || {};
|
|
139
|
-
Object.assign(kernelHooks, {
|
|
140
|
-
register: (event, objectName, handler, packageName) => {
|
|
141
|
-
this.hookManager.registerHook(event, objectName, handler, packageName);
|
|
142
|
-
},
|
|
143
|
-
removePackage: (packageName) => {
|
|
144
|
-
this.hookManager.removePackage(packageName);
|
|
145
|
-
},
|
|
146
|
-
trigger: async (event, objectName, ctx) => {
|
|
147
|
-
await this.hookManager.runHooks(event, objectName, ctx);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
if (!this.kernel.hooks) {
|
|
151
|
-
this.kernel.hooks = kernelHooks;
|
|
152
80
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (handler._package === packageName) {
|
|
162
|
-
this.localActions.delete(key);
|
|
81
|
+
// Bridge filesystem-loaded hooks → upstream hook system
|
|
82
|
+
const hooks = this.metadata.list('hook');
|
|
83
|
+
for (const hookEntry of hooks) {
|
|
84
|
+
if (hookEntry && typeof hookEntry === 'object') {
|
|
85
|
+
const objectName = hookEntry.id || hookEntry.objectName;
|
|
86
|
+
for (const [event, handler] of Object.entries(hookEntry)) {
|
|
87
|
+
if (typeof handler === 'function' && event !== 'id' && event !== 'objectName') {
|
|
88
|
+
this.registerHook(event, handler, { object: objectName });
|
|
163
89
|
}
|
|
164
90
|
}
|
|
165
|
-
},
|
|
166
|
-
execute: async (objectName, actionName, ctx) => {
|
|
167
|
-
const handler = this.localActions.get(`${objectName}:${actionName}`);
|
|
168
|
-
if (handler) {
|
|
169
|
-
return handler(ctx);
|
|
170
|
-
}
|
|
171
|
-
throw new Error(`Action '${actionName}' on object '${objectName}' not found`);
|
|
172
91
|
}
|
|
173
|
-
};
|
|
174
|
-
// Register initial metadata if provided
|
|
175
|
-
if (config.registry) {
|
|
176
|
-
// Copy metadata from provided registry to kernel's registry
|
|
177
|
-
for (const type of config.registry.getTypes()) {
|
|
178
|
-
const items = config.registry.list(type);
|
|
179
|
-
for (const item of items) {
|
|
180
|
-
// Safely extract the item's id/name
|
|
181
|
-
const itemId = typeof item === 'object' && item !== null
|
|
182
|
-
? item.name || item.id || 'unknown'
|
|
183
|
-
: 'unknown';
|
|
184
|
-
this.kernel.metadata.register(type, {
|
|
185
|
-
type,
|
|
186
|
-
id: itemId,
|
|
187
|
-
content: item
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
use(plugin) {
|
|
194
|
-
this.kernelPlugins.push(plugin);
|
|
195
|
-
if (this.kernel && this.kernel.use) {
|
|
196
|
-
this.kernel.use(plugin);
|
|
197
92
|
}
|
|
198
93
|
}
|
|
199
|
-
removePackage(name) {
|
|
200
|
-
// Delegate to kernel managers
|
|
201
|
-
this.kernel.metadata.unregisterPackage(name);
|
|
202
|
-
this.kernel.hooks.removePackage(name);
|
|
203
|
-
this.kernel.actions.removePackage(name);
|
|
204
|
-
}
|
|
205
|
-
on(event, objectName, handler, packageName) {
|
|
206
|
-
// Delegate to kernel hook manager
|
|
207
|
-
// We wrap the handler to bridge ObjectQL's rich context types with runtime's base types
|
|
208
|
-
// The runtime HookContext supports all fields via index signature, so this is safe
|
|
209
|
-
const wrappedHandler = handler;
|
|
210
|
-
this.kernel.hooks.register(event, objectName, wrappedHandler, packageName);
|
|
211
|
-
}
|
|
212
|
-
async triggerHook(event, objectName, ctx) {
|
|
213
|
-
// Delegate to kernel hook manager
|
|
214
|
-
// Runtime HookContext supports ObjectQL-specific fields via index signature
|
|
215
|
-
await this.kernel.hooks.trigger(event, objectName, ctx);
|
|
216
|
-
}
|
|
217
|
-
registerAction(objectName, actionName, handler, packageName) {
|
|
218
|
-
// Delegate to kernel action manager
|
|
219
|
-
// We wrap the handler to bridge ObjectQL's rich context types with runtime's base types
|
|
220
|
-
// The runtime ActionContext supports all fields via index signature, so this is safe
|
|
221
|
-
const wrappedHandler = handler;
|
|
222
|
-
this.kernel.actions.register(objectName, actionName, wrappedHandler, packageName);
|
|
223
|
-
}
|
|
224
|
-
async executeAction(objectName, actionName, ctx) {
|
|
225
|
-
// Delegate to kernel action manager
|
|
226
|
-
// Runtime ActionContext supports ObjectQL-specific fields via index signature
|
|
227
|
-
return await this.kernel.actions.execute(objectName, actionName, ctx);
|
|
228
|
-
}
|
|
229
|
-
createContext(options) {
|
|
230
|
-
const ctx = {
|
|
231
|
-
userId: options.userId,
|
|
232
|
-
spaceId: options.spaceId,
|
|
233
|
-
roles: options.roles || [],
|
|
234
|
-
isSystem: options.isSystem,
|
|
235
|
-
object: (name) => {
|
|
236
|
-
return new repository_1.ObjectRepository(name, ctx, this);
|
|
237
|
-
},
|
|
238
|
-
transaction: async (callback) => {
|
|
239
|
-
const driver = this.datasources['default'];
|
|
240
|
-
if (!driver || !driver.beginTransaction) {
|
|
241
|
-
return callback(ctx);
|
|
242
|
-
}
|
|
243
|
-
let trx;
|
|
244
|
-
try {
|
|
245
|
-
trx = await driver.beginTransaction();
|
|
246
|
-
}
|
|
247
|
-
catch (e) {
|
|
248
|
-
throw e;
|
|
249
|
-
}
|
|
250
|
-
const trxCtx = {
|
|
251
|
-
...ctx,
|
|
252
|
-
transactionHandle: trx,
|
|
253
|
-
transaction: async (cb) => cb(trxCtx)
|
|
254
|
-
};
|
|
255
|
-
try {
|
|
256
|
-
const result = await callback(trxCtx);
|
|
257
|
-
if (driver.commitTransaction)
|
|
258
|
-
await driver.commitTransaction(trx);
|
|
259
|
-
return result;
|
|
260
|
-
}
|
|
261
|
-
catch (error) {
|
|
262
|
-
if (driver.rollbackTransaction)
|
|
263
|
-
await driver.rollbackTransaction(trx);
|
|
264
|
-
throw error;
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
sudo: () => {
|
|
268
|
-
return this.createContext({ ...options, isSystem: true });
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
return ctx;
|
|
272
|
-
}
|
|
273
94
|
/**
|
|
274
|
-
* Get
|
|
275
|
-
*
|
|
276
|
-
* This provides access to the kernel for advanced usage scenarios
|
|
277
|
-
* where you need direct access to the plugin architecture.
|
|
95
|
+
* Get an object definition by name.
|
|
278
96
|
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
97
|
+
* Checks the upstream SchemaRegistry first, then falls back to the
|
|
98
|
+
* local MetadataRegistry for objects loaded via ObjectLoader but
|
|
99
|
+
* not yet synced (i.e., init() hasn't been called yet).
|
|
281
100
|
*/
|
|
282
|
-
getKernel() {
|
|
283
|
-
if (!this.kernel) {
|
|
284
|
-
throw new Error('Kernel not initialized. Call init() first.');
|
|
285
|
-
}
|
|
286
|
-
return this.kernel;
|
|
287
|
-
}
|
|
288
|
-
registerObject(object) {
|
|
289
|
-
// Normalize fields
|
|
290
|
-
if (object.fields) {
|
|
291
|
-
for (const [key, field] of Object.entries(object.fields)) {
|
|
292
|
-
if (field && !field.name) {
|
|
293
|
-
field.name = key;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
this.kernel.metadata.register('object', object);
|
|
298
|
-
}
|
|
299
|
-
unregisterObject(name) {
|
|
300
|
-
this.kernel.metadata.unregister('object', name);
|
|
301
|
-
}
|
|
302
101
|
getObject(name) {
|
|
303
|
-
|
|
304
|
-
|
|
102
|
+
// Check upstream SchemaRegistry first (call parent)
|
|
103
|
+
const upstream = super.getObject(name);
|
|
104
|
+
if (upstream)
|
|
105
|
+
return upstream;
|
|
106
|
+
// Fallback: check local MetadataRegistry (pre-init)
|
|
107
|
+
return this.metadata.get('object', name);
|
|
305
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Get all registered object configs as a name→config map.
|
|
111
|
+
*
|
|
112
|
+
* Merges results from the upstream SchemaRegistry with the
|
|
113
|
+
* local MetadataRegistry (for pre-init objects).
|
|
114
|
+
*/
|
|
306
115
|
getConfigs() {
|
|
307
|
-
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
116
|
+
// Get upstream objects first (call parent)
|
|
117
|
+
const result = super.getConfigs();
|
|
118
|
+
// Merge local MetadataRegistry entries not yet synced upstream
|
|
119
|
+
const localObjects = this.metadata.list('object');
|
|
120
|
+
for (const obj of localObjects) {
|
|
121
|
+
if (obj && obj.name && !result[obj.name]) {
|
|
122
|
+
result[obj.name] = obj;
|
|
313
123
|
}
|
|
314
124
|
}
|
|
315
125
|
return result;
|
|
316
126
|
}
|
|
317
|
-
datasource(name) {
|
|
318
|
-
const driver = this.datasources[name];
|
|
319
|
-
if (!driver) {
|
|
320
|
-
throw new Error(`Datasource '${name}' not found`);
|
|
321
|
-
}
|
|
322
|
-
return driver;
|
|
323
|
-
}
|
|
324
127
|
/**
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
*
|
|
328
|
-
* @param datasourceName - The name of the datasource to introspect (default: 'default')
|
|
329
|
-
* @param options - Optional configuration for schema conversion
|
|
330
|
-
* @returns Array of registered ObjectConfig
|
|
128
|
+
* Remove all hooks, actions, and objects contributed by a package.
|
|
129
|
+
* Also cleans up the local MetadataRegistry.
|
|
331
130
|
*/
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
throw new Error(`Driver for datasource '${datasourceName}' does not support schema introspection`);
|
|
336
|
-
}
|
|
337
|
-
this.logger.info(`Introspecting datasource '${datasourceName}'...`);
|
|
338
|
-
const introspectedSchema = await driver.introspectSchema();
|
|
339
|
-
// Convert introspected schema to ObjectQL objects
|
|
340
|
-
const objects = (0, util_1.convertIntrospectedSchemaToObjects)(introspectedSchema, options);
|
|
341
|
-
this.logger.info(`Discovered ${objects.length} table(s), registering as objects...`);
|
|
342
|
-
// Register each discovered object
|
|
343
|
-
for (const obj of objects) {
|
|
344
|
-
this.registerObject(obj);
|
|
345
|
-
}
|
|
346
|
-
return objects;
|
|
347
|
-
}
|
|
348
|
-
async close() {
|
|
349
|
-
for (const [name, driver] of Object.entries(this.datasources)) {
|
|
350
|
-
if (driver.disconnect) {
|
|
351
|
-
this.logger.debug(`Closing driver '${name}'...`);
|
|
352
|
-
await driver.disconnect();
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
async init() {
|
|
357
|
-
this.logger.info('Initializing with ObjectKernel...');
|
|
358
|
-
// Start the kernel - this will install and start all plugins
|
|
359
|
-
if (this.kernel.start) {
|
|
360
|
-
await this.kernel.start();
|
|
361
|
-
}
|
|
362
|
-
else if (this.kernel.bootstrap) {
|
|
363
|
-
await this.kernel.bootstrap();
|
|
364
|
-
}
|
|
365
|
-
else {
|
|
366
|
-
this.logger.warn('ObjectKernel does not have start() or bootstrap() method');
|
|
367
|
-
// Manually initialize plugins if kernel doesn't support lifecycle
|
|
368
|
-
for (const plugin of this.kernelPlugins) {
|
|
369
|
-
try {
|
|
370
|
-
if (typeof plugin.init === 'function') {
|
|
371
|
-
await plugin.init(this.kernel);
|
|
372
|
-
}
|
|
373
|
-
if (typeof plugin.start === 'function') {
|
|
374
|
-
await plugin.start(this.kernel);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
catch (error) {
|
|
378
|
-
this.logger.error(`Failed to initialize plugin ${plugin.name || 'unknown'}`, error);
|
|
379
|
-
// Continue with other plugins even if one fails
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
// TEMPORARY: Set driver for backward compatibility during migration
|
|
384
|
-
// This allows the kernel mock to delegate to the driver
|
|
385
|
-
const defaultDriver = this.datasources['default'];
|
|
386
|
-
if (typeof this.kernel.setDriver === 'function') {
|
|
387
|
-
if (defaultDriver) {
|
|
388
|
-
this.kernel.setDriver(defaultDriver);
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
// TEMPORARY: Patch kernel with CRUD methods dynamically if missing
|
|
392
|
-
// This ensures the repository can delegate to the kernel even if using the new @objectstack/core kernel
|
|
393
|
-
if (typeof this.kernel.create !== 'function' && defaultDriver) {
|
|
394
|
-
this.kernel.create = (object, doc, options) => defaultDriver.create(object, doc, options);
|
|
395
|
-
this.kernel.update = (object, id, doc, options) => defaultDriver.update(object, id, doc, options);
|
|
396
|
-
this.kernel.delete = (object, id, options) => defaultDriver.delete(object, id, options);
|
|
397
|
-
this.kernel.find = async (object, query, options) => {
|
|
398
|
-
const res = await defaultDriver.find(object, query, options);
|
|
399
|
-
return { value: res || [], count: (res || []).length };
|
|
400
|
-
};
|
|
401
|
-
this.kernel.findOne = (object, id, options) => defaultDriver.findOne(object, id, options);
|
|
402
|
-
this.kernel.get = (object, id) => defaultDriver.findOne(object, id);
|
|
403
|
-
this.kernel.count = (object, query, options) => defaultDriver.count(object, query, options);
|
|
404
|
-
}
|
|
405
|
-
// Load In-Memory Objects (Dynamic Layer)
|
|
406
|
-
if (this.config.objects) {
|
|
407
|
-
for (const [key, obj] of Object.entries(this.config.objects)) {
|
|
408
|
-
this.registerObject(obj);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
const registryItems = this.kernel.metadata.list('object');
|
|
412
|
-
const objects = (registryItems || []).map((item) => item.content || item);
|
|
413
|
-
// Init Datasources
|
|
414
|
-
// Let's pass all objects to all configured drivers.
|
|
415
|
-
for (const [name, driver] of Object.entries(this.datasources)) {
|
|
416
|
-
if (driver.init) {
|
|
417
|
-
this.logger.debug(`Initializing driver '${name}'...`);
|
|
418
|
-
await driver.init(objects);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
// Process Initial Data
|
|
422
|
-
await this.processInitialData();
|
|
423
|
-
this.logger.info('Initialization complete');
|
|
424
|
-
}
|
|
425
|
-
async processInitialData() {
|
|
426
|
-
const dataEntries = this.kernel.metadata.list('data');
|
|
427
|
-
if (dataEntries.length === 0)
|
|
428
|
-
return;
|
|
429
|
-
this.logger.info(`Processing ${dataEntries.length} initial data files...`);
|
|
430
|
-
// We need a system context to write data
|
|
431
|
-
const ctx = this.createContext({ isSystem: true });
|
|
432
|
-
for (const entry of dataEntries) {
|
|
433
|
-
// Unwrapping metadata content if present
|
|
434
|
-
const dataContent = entry.content || entry;
|
|
435
|
-
// Expected format:
|
|
436
|
-
// 1. { object: 'User', records: [...] }
|
|
437
|
-
// 2. [ record1, record2 ] (with name property added by loader inferred from filename)
|
|
438
|
-
let objectName = dataContent.object;
|
|
439
|
-
let records = dataContent.records;
|
|
440
|
-
if (Array.isArray(dataContent)) {
|
|
441
|
-
records = dataContent;
|
|
442
|
-
if (!objectName && dataContent.name) {
|
|
443
|
-
objectName = dataContent.name;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
if (!objectName || !records || !Array.isArray(records)) {
|
|
447
|
-
this.logger.warn('Skipping invalid data entry', { entry: String(entry) });
|
|
448
|
-
continue;
|
|
449
|
-
}
|
|
450
|
-
const repo = ctx.object(objectName);
|
|
451
|
-
for (const record of records) {
|
|
452
|
-
try {
|
|
453
|
-
// Check existence if a unique key is provided?
|
|
454
|
-
// For now, let's assume if it has an ID, we check it.
|
|
455
|
-
// Or we could try to find existing record by some key matching logic.
|
|
456
|
-
// Simple approach: create. If it fails (constraint), ignore.
|
|
457
|
-
// Actually, a better approach for initial data is "upsert" or "create if not exists".
|
|
458
|
-
// But without unique keys defined in data, we can't reliably dedup.
|
|
459
|
-
// Let's try to 'create' and catch errors.
|
|
460
|
-
await repo.create(record);
|
|
461
|
-
this.logger.debug(`Initialized record for ${objectName}`);
|
|
462
|
-
}
|
|
463
|
-
catch (e) {
|
|
464
|
-
// Ignore duplicate key errors silently-ish
|
|
465
|
-
this.logger.warn(`Failed to insert initial data for ${objectName}: ${e.message}`);
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
}
|
|
131
|
+
removePackage(packageId) {
|
|
132
|
+
super.removePackage(packageId);
|
|
133
|
+
this.metadata.unregisterPackage(packageId);
|
|
469
134
|
}
|
|
470
135
|
}
|
|
471
136
|
exports.ObjectQL = ObjectQL;
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|