@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.
Files changed (116) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +34 -0
  3. package/README.md +5 -2
  4. package/dist/app.d.ts +61 -52
  5. package/dist/app.js +100 -435
  6. package/dist/app.js.map +1 -1
  7. package/dist/index.d.ts +14 -20
  8. package/dist/index.js +21 -20
  9. package/dist/index.js.map +1 -1
  10. package/dist/kernel-factory.d.ts +38 -0
  11. package/dist/kernel-factory.js +38 -0
  12. package/dist/kernel-factory.js.map +1 -0
  13. package/dist/plugin.d.ts +9 -16
  14. package/dist/plugin.js +71 -48
  15. package/dist/plugin.js.map +1 -1
  16. package/dist/repository.d.ts +4 -31
  17. package/dist/repository.js +7 -283
  18. package/dist/repository.js.map +1 -1
  19. package/dist/util.js +4 -2
  20. package/dist/util.js.map +1 -1
  21. package/package.json +14 -12
  22. package/src/app.ts +156 -539
  23. package/src/index.ts +18 -42
  24. package/src/kernel-factory.ts +47 -0
  25. package/src/plugin.ts +77 -85
  26. package/src/repository.ts +4 -320
  27. package/src/util.ts +5 -3
  28. package/test/__mocks__/@objectstack/core.ts +250 -1
  29. package/test/__mocks__/@objectstack/objectql.ts +273 -0
  30. package/test/__mocks__/@objectstack/runtime.ts +14 -5
  31. package/test/introspection.test.ts +1 -1
  32. package/test/mock-driver.ts +5 -5
  33. package/test/optimizations.test.ts +2 -2
  34. package/test/plugin-integration.test.ts +1 -3
  35. package/test/utils.ts +6 -6
  36. package/tsconfig.json +3 -1
  37. package/tsconfig.tsbuildinfo +1 -1
  38. package/dist/ai/index.d.ts +0 -8
  39. package/dist/ai/index.js +0 -25
  40. package/dist/ai/index.js.map +0 -1
  41. package/dist/ai/registry.d.ts +0 -23
  42. package/dist/ai/registry.js +0 -78
  43. package/dist/ai/registry.js.map +0 -1
  44. package/dist/gateway.d.ts +0 -37
  45. package/dist/gateway.js +0 -93
  46. package/dist/gateway.js.map +0 -1
  47. package/dist/optimizations/CompiledHookManager.d.ts +0 -56
  48. package/dist/optimizations/CompiledHookManager.js +0 -170
  49. package/dist/optimizations/CompiledHookManager.js.map +0 -1
  50. package/dist/optimizations/DependencyGraph.d.ts +0 -82
  51. package/dist/optimizations/DependencyGraph.js +0 -211
  52. package/dist/optimizations/DependencyGraph.js.map +0 -1
  53. package/dist/optimizations/GlobalConnectionPool.d.ts +0 -89
  54. package/dist/optimizations/GlobalConnectionPool.js +0 -193
  55. package/dist/optimizations/GlobalConnectionPool.js.map +0 -1
  56. package/dist/optimizations/LazyMetadataLoader.d.ts +0 -75
  57. package/dist/optimizations/LazyMetadataLoader.js +0 -149
  58. package/dist/optimizations/LazyMetadataLoader.js.map +0 -1
  59. package/dist/optimizations/OptimizedMetadataRegistry.d.ts +0 -26
  60. package/dist/optimizations/OptimizedMetadataRegistry.js +0 -117
  61. package/dist/optimizations/OptimizedMetadataRegistry.js.map +0 -1
  62. package/dist/optimizations/OptimizedValidationEngine.d.ts +0 -73
  63. package/dist/optimizations/OptimizedValidationEngine.js +0 -141
  64. package/dist/optimizations/OptimizedValidationEngine.js.map +0 -1
  65. package/dist/optimizations/QueryCompiler.d.ts +0 -51
  66. package/dist/optimizations/QueryCompiler.js +0 -216
  67. package/dist/optimizations/QueryCompiler.js.map +0 -1
  68. package/dist/optimizations/SQLQueryOptimizer.d.ts +0 -96
  69. package/dist/optimizations/SQLQueryOptimizer.js +0 -265
  70. package/dist/optimizations/SQLQueryOptimizer.js.map +0 -1
  71. package/dist/optimizations/index.d.ts +0 -32
  72. package/dist/optimizations/index.js +0 -44
  73. package/dist/optimizations/index.js.map +0 -1
  74. package/dist/protocol.d.ts +0 -191
  75. package/dist/protocol.js +0 -272
  76. package/dist/protocol.js.map +0 -1
  77. package/dist/query/filter-translator.d.ts +0 -24
  78. package/dist/query/filter-translator.js +0 -38
  79. package/dist/query/filter-translator.js.map +0 -1
  80. package/dist/query/index.d.ts +0 -22
  81. package/dist/query/index.js +0 -39
  82. package/dist/query/index.js.map +0 -1
  83. package/dist/query/query-analyzer.d.ts +0 -186
  84. package/dist/query/query-analyzer.js +0 -348
  85. package/dist/query/query-analyzer.js.map +0 -1
  86. package/dist/query/query-builder.d.ts +0 -27
  87. package/dist/query/query-builder.js +0 -69
  88. package/dist/query/query-builder.js.map +0 -1
  89. package/dist/query/query-service.d.ts +0 -151
  90. package/dist/query/query-service.js +0 -272
  91. package/dist/query/query-service.js.map +0 -1
  92. package/src/ai/index.ts +0 -9
  93. package/src/ai/registry.ts +0 -81
  94. package/src/gateway.ts +0 -105
  95. package/src/optimizations/CompiledHookManager.ts +0 -193
  96. package/src/optimizations/DependencyGraph.ts +0 -255
  97. package/src/optimizations/GlobalConnectionPool.ts +0 -251
  98. package/src/optimizations/LazyMetadataLoader.ts +0 -180
  99. package/src/optimizations/OptimizedMetadataRegistry.ts +0 -132
  100. package/src/optimizations/OptimizedValidationEngine.ts +0 -172
  101. package/src/optimizations/QueryCompiler.ts +0 -242
  102. package/src/optimizations/SQLQueryOptimizer.ts +0 -329
  103. package/src/optimizations/index.ts +0 -34
  104. package/src/protocol.ts +0 -304
  105. package/src/query/filter-translator.ts +0 -41
  106. package/src/query/index.ts +0 -24
  107. package/src/query/query-analyzer.ts +0 -532
  108. package/src/query/query-builder.ts +0 -64
  109. package/src/query/query-service.ts +0 -397
  110. package/test/ai-registry.test.ts +0 -42
  111. package/test/app.test.ts +0 -578
  112. package/test/filter-syntax.test.ts +0 -233
  113. package/test/gateway.test.ts +0 -88
  114. package/test/protocol.test.ts +0 -143
  115. package/test/repository-validation.test.ts +0 -351
  116. 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
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
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 plugin_validator_1 = require("@objectql/plugin-validator");
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
- // Delegate to kernel for metadata, hooks, and actions
27
- get metadata() {
28
- return this.kernel.metadata;
29
- }
30
- constructor(config) {
31
- var _a;
32
- this.datasources = {};
33
- this.remotes = [];
34
- this.kernelPlugins = [];
35
- // Optimized managers
36
- this.hookManager = new CompiledHookManager_1.CompiledHookManager();
37
- this.localActions = new Map();
38
- this.config = config;
39
- this.datasources = config.datasources || {};
40
- this.logger = (_a = config.logger) !== null && _a !== void 0 ? _a : new types_1.ConsoleLogger({ name: '@objectql/core', level: 'info' });
41
- if (config.connection) {
42
- throw new Error("Connection strings are not supported in core directly. Use @objectql/platform-node's createDriverFromConnection or pass a driver instance to 'datasources'.");
43
- }
44
- // Use the imported RuntimeObjectQL, assuming it works as intended
45
- this.ql = new objectql_1.ObjectQL();
46
- // Note: ObjectQLPlugin removed as it now uses RuntimePlugin interface
47
- // which is incompatible with the legacy Plugin interface from @objectstack/core
48
- // For new code, use the microkernel pattern with RuntimePlugin directly
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
- // Ensure default plugins are present
61
- if (!this.kernelPlugins.some(p => p.name === 'validator')) {
62
- this.use(new plugin_validator_1.ValidatorPlugin());
63
- }
64
- if (!this.kernelPlugins.some(p => p.name === 'formula')) {
65
- this.use(new plugin_formula_1.FormulaPlugin());
66
- }
67
- // Create the kernel with registered plugins
68
- this.kernel = new runtime_1.ObjectKernel(this.kernelPlugins);
69
- for (const plugin of this.kernelPlugins) {
70
- // Fallback for kernels that support .use() but maybe didn't take them in constructor or if we need to support both
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
- // Helper to unwrap content property (matching MetadataRegistry behavior)
83
- const unwrapContent = (item) => {
84
- if (item && item.content) {
85
- return item.content;
86
- }
87
- return item;
88
- };
89
- // Stub legacy accessors
90
- this.kernel.metadata = {
91
- register: (type, item) => objectql_1.SchemaRegistry.registerItem(type, item, item.id ? 'id' : 'name'),
92
- get: (type, name) => {
93
- const item = objectql_1.SchemaRegistry.getItem(type, name);
94
- return unwrapContent(item);
95
- },
96
- getEntry: (type, name) => objectql_1.SchemaRegistry.getItem(type, name),
97
- list: (type) => {
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
- this.kernel.actions = {
154
- register: (objectName, actionName, handler, packageName) => {
155
- const key = `${objectName}:${actionName}`;
156
- handler._package = packageName;
157
- this.localActions.set(key, handler);
158
- },
159
- removePackage: (packageName) => {
160
- for (const [key, handler] of this.localActions.entries()) {
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 the underlying ObjectKernel instance
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
- * @returns The ObjectKernel instance
280
- * @throws Error if called before init()
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
- const item = this.kernel.metadata.get('object', name);
304
- return (item === null || item === void 0 ? void 0 : item.content) || item;
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
- const result = {};
308
- const items = this.kernel.metadata.list('object') || [];
309
- for (const item of items) {
310
- const config = item.content || item;
311
- if (config === null || config === void 0 ? void 0 : config.name) {
312
- result[config.name] = config;
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
- * Introspect the database schema and automatically register objects.
326
- * This allows connecting to an existing database without defining metadata.
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
- async introspectAndRegister(datasourceName = 'default', options) {
333
- const driver = this.datasource(datasourceName);
334
- if (!driver.introspectSchema) {
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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"}