@objectql/core 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/action.d.ts +7 -0
  3. package/dist/action.js +23 -0
  4. package/dist/action.js.map +1 -0
  5. package/dist/app.d.ts +28 -0
  6. package/dist/app.js +211 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/driver.d.ts +2 -0
  9. package/dist/driver.js +55 -0
  10. package/dist/driver.js.map +1 -0
  11. package/dist/hook.d.ts +8 -0
  12. package/dist/hook.js +25 -0
  13. package/dist/hook.js.map +1 -0
  14. package/dist/index.d.ts +7 -27
  15. package/dist/index.js +7 -328
  16. package/dist/index.js.map +1 -1
  17. package/dist/loader.d.ts +3 -16
  18. package/dist/loader.js +9 -4
  19. package/dist/loader.js.map +1 -1
  20. package/dist/object.d.ts +3 -0
  21. package/dist/object.js +28 -0
  22. package/dist/object.js.map +1 -0
  23. package/dist/plugin.d.ts +2 -0
  24. package/dist/plugin.js +56 -0
  25. package/dist/plugin.js.map +1 -0
  26. package/dist/remote.d.ts +8 -0
  27. package/dist/remote.js +43 -0
  28. package/dist/remote.js.map +1 -0
  29. package/package.json +3 -2
  30. package/src/action.ts +40 -0
  31. package/src/app.ts +257 -0
  32. package/src/driver.ts +54 -0
  33. package/src/hook.ts +42 -0
  34. package/src/index.ts +7 -377
  35. package/src/loader.ts +15 -24
  36. package/src/object.ts +26 -0
  37. package/src/plugin.ts +53 -0
  38. package/src/remote.ts +50 -0
  39. package/test/action.test.ts +1 -1
  40. package/test/dynamic.test.ts +34 -0
  41. package/test/fixtures/project.action.js +8 -0
  42. package/test/fixtures/project.object.yml +41 -0
  43. package/test/hook.test.ts +1 -1
  44. package/test/loader.test.ts +15 -0
  45. package/test/metadata.test.ts +49 -0
  46. package/test/mock-driver.ts +86 -0
  47. package/test/remote.test.ts +119 -0
  48. package/test/repository.test.ts +143 -0
  49. package/tsconfig.json +4 -1
  50. package/tsconfig.tsbuildinfo +1 -1
package/dist/index.js CHANGED
@@ -14,334 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ObjectQL = void 0;
18
- const types_1 = require("@objectql/types");
19
- const loader_1 = require("./loader");
20
17
  __exportStar(require("./loader"), exports);
21
- const repository_1 = require("./repository");
22
- class ObjectQL {
23
- constructor(config) {
24
- this.datasources = {};
25
- this.hooks = {};
26
- this.actions = {};
27
- this.pluginsList = [];
28
- this.metadata = config.registry || new types_1.ObjectRegistry();
29
- this.loader = new loader_1.ObjectLoader(this.metadata);
30
- this.datasources = config.datasources || {};
31
- if (config.connection) {
32
- this.loadDriverFromConnection(config.connection);
33
- }
34
- // 1. Load Presets/Packages first (Base Layer)
35
- if (config.packages) {
36
- for (const name of config.packages) {
37
- this.addPackage(name);
38
- }
39
- }
40
- if (config.presets) {
41
- for (const name of config.presets) {
42
- this.addPackage(name);
43
- }
44
- }
45
- if (config.plugins) {
46
- for (const plugin of config.plugins) {
47
- if (typeof plugin === 'string') {
48
- this.loadPluginFromPackage(plugin);
49
- }
50
- else {
51
- this.use(plugin);
52
- }
53
- }
54
- }
55
- // 2. Load Local Sources (Application Layer - can override presets)
56
- if (config.source) {
57
- const sources = Array.isArray(config.source) ? config.source : [config.source];
58
- for (const src of sources) {
59
- this.loader.load(src);
60
- }
61
- }
62
- // 3. Load In-Memory Objects (Dynamic Layer - highest priority)
63
- if (config.objects) {
64
- for (const [key, obj] of Object.entries(config.objects)) {
65
- this.registerObject(obj);
66
- }
67
- }
68
- }
69
- loadPluginFromPackage(packageName) {
70
- let mod;
71
- try {
72
- const modulePath = require.resolve(packageName, { paths: [process.cwd()] });
73
- mod = require(modulePath);
74
- }
75
- catch (e) {
76
- throw new Error(`Failed to resolve plugin '${packageName}': ${e}`);
77
- }
78
- // Helper to find plugin instance
79
- const findPlugin = (candidate) => {
80
- if (!candidate)
81
- return undefined;
82
- // 1. Try treating as Class
83
- if (typeof candidate === 'function') {
84
- try {
85
- const inst = new candidate();
86
- if (inst && typeof inst.setup === 'function') {
87
- return inst; // Found it!
88
- }
89
- }
90
- catch (e) {
91
- // Not a constructor or instantiation failed
92
- }
93
- }
94
- // 2. Try treating as Instance
95
- if (candidate && typeof candidate.setup === 'function') {
96
- if (candidate.name)
97
- return candidate;
98
- }
99
- return undefined;
100
- };
101
- // Search in default, module root, and all named exports
102
- let instance = findPlugin(mod.default) || findPlugin(mod);
103
- if (!instance && mod && typeof mod === 'object') {
104
- for (const key of Object.keys(mod)) {
105
- if (key === 'default')
106
- continue;
107
- instance = findPlugin(mod[key]);
108
- if (instance)
109
- break;
110
- }
111
- }
112
- if (instance) {
113
- instance._packageName = packageName;
114
- this.use(instance);
115
- }
116
- else {
117
- console.error(`[PluginLoader] Failed to find ObjectQLPlugin in '${packageName}'. Exports:`, Object.keys(mod));
118
- throw new Error(`Plugin '${packageName}' must export a class or object implementing ObjectQLPlugin.`);
119
- }
120
- }
121
- addPackage(name) {
122
- this.loader.loadPackage(name);
123
- }
124
- use(plugin) {
125
- this.pluginsList.push(plugin);
126
- }
127
- removePackage(name) {
128
- this.metadata.unregisterPackage(name);
129
- // Remove hooks
130
- for (const event of Object.keys(this.hooks)) {
131
- this.hooks[event] = this.hooks[event].filter(h => h.packageName !== name);
132
- }
133
- // Remove actions
134
- for (const key of Object.keys(this.actions)) {
135
- if (this.actions[key].packageName === name) {
136
- delete this.actions[key];
137
- }
138
- }
139
- }
140
- on(event, objectName, handler, packageName) {
141
- if (!this.hooks[event]) {
142
- this.hooks[event] = [];
143
- }
144
- this.hooks[event].push({ objectName, handler, packageName });
145
- }
146
- async triggerHook(event, objectName, ctx) {
147
- // 1. Registry Hooks (File-based)
148
- const fileHooks = this.metadata.get('hook', objectName);
149
- if (fileHooks && typeof fileHooks[event] === 'function') {
150
- await fileHooks[event](ctx);
151
- }
152
- // 2. Programmatic Hooks
153
- const hooks = this.hooks[event] || [];
154
- for (const hook of hooks) {
155
- if (hook.objectName === '*' || hook.objectName === objectName) {
156
- await hook.handler(ctx);
157
- }
158
- }
159
- }
160
- registerAction(objectName, actionName, handler, packageName) {
161
- const key = `${objectName}:${actionName}`;
162
- this.actions[key] = { handler, packageName };
163
- }
164
- async executeAction(objectName, actionName, ctx) {
165
- // 1. Programmatic
166
- const key = `${objectName}:${actionName}`;
167
- const actionEntry = this.actions[key];
168
- if (actionEntry) {
169
- return await actionEntry.handler(ctx);
170
- }
171
- // 2. Registry (File-based)
172
- const fileActions = this.metadata.get('action', objectName);
173
- if (fileActions && typeof fileActions[actionName] === 'function') {
174
- return await fileActions[actionName](ctx);
175
- }
176
- throw new Error(`Action '${actionName}' not found for object '${objectName}'`);
177
- }
178
- loadFromDirectory(dir, packageName) {
179
- this.loader.load(dir, packageName);
180
- }
181
- createContext(options) {
182
- const ctx = {
183
- userId: options.userId,
184
- spaceId: options.spaceId,
185
- roles: options.roles || [],
186
- isSystem: options.isSystem,
187
- object: (name) => {
188
- return new repository_1.ObjectRepository(name, ctx, this);
189
- },
190
- transaction: async (callback) => {
191
- const driver = this.datasources['default'];
192
- if (!driver || !driver.beginTransaction) {
193
- return callback(ctx);
194
- }
195
- let trx;
196
- try {
197
- trx = await driver.beginTransaction();
198
- }
199
- catch (e) {
200
- throw e;
201
- }
202
- const trxCtx = {
203
- ...ctx,
204
- transactionHandle: trx,
205
- transaction: async (cb) => cb(trxCtx)
206
- };
207
- try {
208
- const result = await callback(trxCtx);
209
- if (driver.commitTransaction)
210
- await driver.commitTransaction(trx);
211
- return result;
212
- }
213
- catch (error) {
214
- if (driver.rollbackTransaction)
215
- await driver.rollbackTransaction(trx);
216
- throw error;
217
- }
218
- },
219
- sudo: () => {
220
- return this.createContext({ ...options, isSystem: true });
221
- }
222
- };
223
- return ctx;
224
- }
225
- registerObject(object) {
226
- // Normalize fields
227
- if (object.fields) {
228
- for (const [key, field] of Object.entries(object.fields)) {
229
- if (!field.name) {
230
- field.name = key;
231
- }
232
- }
233
- }
234
- this.metadata.register('object', {
235
- type: 'object',
236
- id: object.name,
237
- content: object
238
- });
239
- }
240
- unregisterObject(name) {
241
- this.metadata.unregister('object', name);
242
- }
243
- getObject(name) {
244
- return this.metadata.get('object', name);
245
- }
246
- getConfigs() {
247
- const result = {};
248
- const objects = this.metadata.list('object');
249
- for (const obj of objects) {
250
- result[obj.name] = obj;
251
- }
252
- return result;
253
- }
254
- datasource(name) {
255
- const driver = this.datasources[name];
256
- if (!driver) {
257
- throw new Error(`Datasource '${name}' not found`);
258
- }
259
- return driver;
260
- }
261
- async init() {
262
- // 0. Init Plugins
263
- for (const plugin of this.pluginsList) {
264
- console.log(`Initializing plugin '${plugin.name}'...`);
265
- let app = this;
266
- const pkgName = plugin._packageName;
267
- if (pkgName) {
268
- app = new Proxy(this, {
269
- get(target, prop) {
270
- if (prop === 'on') {
271
- return (event, obj, handler) => target.on(event, obj, handler, pkgName);
272
- }
273
- if (prop === 'registerAction') {
274
- return (obj, act, handler) => target.registerAction(obj, act, handler, pkgName);
275
- }
276
- const value = target[prop];
277
- return typeof value === 'function' ? value.bind(target) : value;
278
- }
279
- });
280
- }
281
- await plugin.setup(app);
282
- }
283
- const objects = this.metadata.list('object');
284
- // 1. Init Drivers (e.g. Sync Schema)
285
- // Let's pass all objects to all configured drivers.
286
- for (const [name, driver] of Object.entries(this.datasources)) {
287
- if (driver.init) {
288
- console.log(`Initializing driver '${name}'...`);
289
- await driver.init(objects);
290
- }
291
- }
292
- }
293
- loadDriverFromConnection(connection) {
294
- let driverPackage = '';
295
- let driverClass = '';
296
- let driverConfig = {};
297
- if (connection.startsWith('mongodb://')) {
298
- driverPackage = '@objectql/driver-mongo';
299
- driverClass = 'MongoDriver';
300
- driverConfig = { url: connection };
301
- }
302
- else if (connection.startsWith('sqlite://')) {
303
- driverPackage = '@objectql/driver-knex';
304
- driverClass = 'KnexDriver';
305
- const filename = connection.replace('sqlite://', '');
306
- driverConfig = {
307
- client: 'sqlite3',
308
- connection: { filename },
309
- useNullAsDefault: true
310
- };
311
- }
312
- else if (connection.startsWith('postgres://') || connection.startsWith('postgresql://')) {
313
- driverPackage = '@objectql/driver-knex';
314
- driverClass = 'KnexDriver';
315
- driverConfig = {
316
- client: 'pg',
317
- connection: connection
318
- };
319
- }
320
- else if (connection.startsWith('mysql://')) {
321
- driverPackage = '@objectql/driver-knex';
322
- driverClass = 'KnexDriver';
323
- driverConfig = {
324
- client: 'mysql2',
325
- connection: connection
326
- };
327
- }
328
- else {
329
- throw new Error(`Unsupported connection protocol: ${connection}`);
330
- }
331
- try {
332
- // eslint-disable-next-line @typescript-eslint/no-var-requires
333
- const pkg = require(driverPackage);
334
- const DriverClass = pkg[driverClass];
335
- if (!DriverClass) {
336
- throw new Error(`${driverClass} not found in ${driverPackage}`);
337
- }
338
- this.datasources['default'] = new DriverClass(driverConfig);
339
- }
340
- catch (e) {
341
- throw new Error(`Failed to load driver ${driverPackage}. Please install it: npm install ${driverPackage}. Error: ${e.message}`);
342
- }
343
- }
344
- }
345
- exports.ObjectQL = ObjectQL;
346
18
  __exportStar(require("./repository"), exports);
19
+ __exportStar(require("./app"), exports);
20
+ __exportStar(require("./plugin"), exports);
21
+ __exportStar(require("./driver"), exports);
22
+ __exportStar(require("./remote"), exports);
23
+ __exportStar(require("./action"), exports);
24
+ __exportStar(require("./hook"), exports);
25
+ __exportStar(require("./object"), exports);
347
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,wCAAsB;AACtB,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB"}
package/dist/loader.d.ts CHANGED
@@ -1,21 +1,8 @@
1
- import { ObjectRegistry, ObjectConfig } from '@objectql/types';
2
- export interface LoaderHandlerContext {
3
- file: string;
4
- content: string;
5
- registry: ObjectRegistry;
6
- packageName?: string;
7
- }
8
- export type LoaderHandler = (ctx: LoaderHandlerContext) => void;
9
- export interface LoaderPlugin {
10
- name: string;
11
- glob: string[];
12
- handler: LoaderHandler;
13
- options?: any;
14
- }
1
+ import { MetadataRegistry, ObjectConfig, LoaderPlugin } from '@objectql/types';
15
2
  export declare class ObjectLoader {
16
- protected registry: ObjectRegistry;
3
+ protected registry: MetadataRegistry;
17
4
  private plugins;
18
- constructor(registry: ObjectRegistry);
5
+ constructor(registry: MetadataRegistry);
19
6
  private registerBuiltinPlugins;
20
7
  use(plugin: LoaderPlugin): void;
21
8
  load(dir: string, packageName?: string): void;
package/dist/loader.js CHANGED
@@ -110,9 +110,6 @@ class ObjectLoader {
110
110
  const objectName = basename.replace(/\.action\.(ts|js)$/, '');
111
111
  try {
112
112
  const mod = require(ctx.file);
113
- // Action file exports multiple actions
114
- // export const approve = { ... };
115
- // export const reject = { ... };
116
113
  const actions = {};
117
114
  for (const [key, value] of Object.entries(mod)) {
118
115
  if (key === 'default')
@@ -204,9 +201,17 @@ function registerObject(registry, obj, file, packageName) {
204
201
  });
205
202
  }
206
203
  function loadObjectConfigs(dir) {
207
- const registry = new types_1.ObjectRegistry();
204
+ const registry = new types_1.MetadataRegistry();
208
205
  const loader = new ObjectLoader(registry);
209
206
  loader.load(dir);
207
+ // Merge actions into objects
208
+ const actions = registry.list('action');
209
+ for (const act of actions) {
210
+ const obj = registry.get('object', act.id);
211
+ if (obj) {
212
+ obj.actions = act.content;
213
+ }
214
+ }
210
215
  const result = {};
211
216
  for (const obj of registry.list('object')) {
212
217
  result[obj.name] = obj;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ObjectConfig, MetadataRegistry } from '@objectql/types';
2
+ export declare function registerObjectHelper(metadata: MetadataRegistry, object: ObjectConfig): void;
3
+ export declare function getConfigsHelper(metadata: MetadataRegistry): Record<string, ObjectConfig>;
package/dist/object.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerObjectHelper = registerObjectHelper;
4
+ exports.getConfigsHelper = getConfigsHelper;
5
+ function registerObjectHelper(metadata, object) {
6
+ // Normalize fields
7
+ if (object.fields) {
8
+ for (const [key, field] of Object.entries(object.fields)) {
9
+ if (!field.name) {
10
+ field.name = key;
11
+ }
12
+ }
13
+ }
14
+ metadata.register('object', {
15
+ type: 'object',
16
+ id: object.name,
17
+ content: object
18
+ });
19
+ }
20
+ function getConfigsHelper(metadata) {
21
+ const result = {};
22
+ const objects = metadata.list('object');
23
+ for (const obj of objects) {
24
+ result[obj.name] = obj;
25
+ }
26
+ return result;
27
+ }
28
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":";;AAEA,oDAcC;AAED,4CAOC;AAvBD,SAAgB,oBAAoB,CAAC,QAA0B,EAAE,MAAoB;IACjF,mBAAmB;IACnB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YACrB,CAAC;QACL,CAAC;IACL,CAAC;IACD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,EAAE,QAAQ;QACd,EAAE,EAAE,MAAM,CAAC,IAAI;QACf,OAAO,EAAE,MAAM;KAClB,CAAC,CAAC;AACP,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAA0B;IACvD,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAe,QAAQ,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ObjectQLPlugin } from '@objectql/types';
2
+ export declare function loadPlugin(packageName: string): ObjectQLPlugin;
package/dist/plugin.js ADDED
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadPlugin = loadPlugin;
4
+ function loadPlugin(packageName) {
5
+ let mod;
6
+ try {
7
+ const modulePath = require.resolve(packageName, { paths: [process.cwd()] });
8
+ mod = require(modulePath);
9
+ }
10
+ catch (e) {
11
+ throw new Error(`Failed to resolve plugin '${packageName}': ${e}`);
12
+ }
13
+ // Helper to find plugin instance
14
+ const findPlugin = (candidate) => {
15
+ if (!candidate)
16
+ return undefined;
17
+ // 1. Try treating as Class
18
+ if (typeof candidate === 'function') {
19
+ try {
20
+ const inst = new candidate();
21
+ if (inst && typeof inst.setup === 'function') {
22
+ return inst; // Found it!
23
+ }
24
+ }
25
+ catch (e) {
26
+ // Not a constructor or instantiation failed
27
+ }
28
+ }
29
+ // 2. Try treating as Instance
30
+ if (candidate && typeof candidate.setup === 'function') {
31
+ if (candidate.name)
32
+ return candidate;
33
+ }
34
+ return undefined;
35
+ };
36
+ // Search in default, module root, and all named exports
37
+ let instance = findPlugin(mod.default) || findPlugin(mod);
38
+ if (!instance && mod && typeof mod === 'object') {
39
+ for (const key of Object.keys(mod)) {
40
+ if (key === 'default')
41
+ continue;
42
+ instance = findPlugin(mod[key]);
43
+ if (instance)
44
+ break;
45
+ }
46
+ }
47
+ if (instance) {
48
+ instance._packageName = packageName;
49
+ return instance;
50
+ }
51
+ else {
52
+ console.error(`[PluginLoader] Failed to find ObjectQLPlugin in '${packageName}'. Exports:`, Object.keys(mod));
53
+ throw new Error(`Plugin '${packageName}' must export a class or object implementing ObjectQLPlugin.`);
54
+ }
55
+ }
56
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":";;AAEA,gCAkDC;AAlDD,SAAgB,UAAU,CAAC,WAAmB;IAC1C,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5E,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,MAAM,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,SAAc,EAA8B,EAAE;QAC1D,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAC;QAEjC,2BAA2B;QAC3B,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC7B,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;oBAC3C,OAAO,IAAI,CAAC,CAAC,YAAY;gBAC7B,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,4CAA4C;YAChD,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACrD,IAAI,SAAS,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;QACzC,CAAC;QACD,OAAO,SAAS,CAAC;IACzB,CAAC,CAAC;IAEF,wDAAwD;IACxD,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAE1D,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS;YAChC,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,IAAI,QAAQ;gBAAE,MAAM;QACxB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACV,QAAgB,CAAC,YAAY,GAAG,WAAW,CAAC;QAC7C,OAAO,QAAQ,CAAC;IACpB,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,KAAK,CAAC,oDAAoD,WAAW,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9G,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,8DAA8D,CAAC,CAAC;IAC1G,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { RemoteDriver } from '@objectql/driver-remote';
2
+ import { ObjectConfig } from '@objectql/types';
3
+ export interface RemoteLoadResult {
4
+ driverName: string;
5
+ driver: RemoteDriver;
6
+ objects: ObjectConfig[];
7
+ }
8
+ export declare function loadRemoteFromUrl(url: string): Promise<RemoteLoadResult | null>;
package/dist/remote.js ADDED
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadRemoteFromUrl = loadRemoteFromUrl;
4
+ const driver_remote_1 = require("@objectql/driver-remote");
5
+ async function loadRemoteFromUrl(url) {
6
+ try {
7
+ const baseUrl = url.replace(/\/$/, '');
8
+ const metadataUrl = `${baseUrl}/api/metadata/objects`;
9
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
+ // @ts-ignore - Fetch is available in Node 18+
11
+ const res = await fetch(metadataUrl);
12
+ if (!res.ok) {
13
+ console.warn(`[ObjectQL] Remote ${url} returned ${res.status}`);
14
+ return null;
15
+ }
16
+ const data = await res.json();
17
+ if (!data || !data.objects)
18
+ return null;
19
+ const driverName = `remote:${baseUrl}`;
20
+ const driver = new driver_remote_1.RemoteDriver(baseUrl);
21
+ const objects = [];
22
+ await Promise.all(data.objects.map(async (summary) => {
23
+ try {
24
+ // @ts-ignore
25
+ const detailRes = await fetch(`${metadataUrl}/${summary.name}`);
26
+ if (detailRes.ok) {
27
+ const config = await detailRes.json();
28
+ config.datasource = driverName;
29
+ objects.push(config);
30
+ }
31
+ }
32
+ catch (e) {
33
+ console.warn(`[ObjectQL] Failed to load object ${summary.name} from ${url}`);
34
+ }
35
+ }));
36
+ return { driverName, driver, objects };
37
+ }
38
+ catch (e) {
39
+ console.warn(`[ObjectQL] Remote connection error ${url}: ${e.message}`);
40
+ return null;
41
+ }
42
+ }
43
+ //# sourceMappingURL=remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":";;AASA,8CAwCC;AAjDD,2DAAuD;AAShD,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,GAAG,OAAO,uBAAuB,CAAC;QAEtD,6DAA6D;QAC7D,8CAA8C;QAC9C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,qBAAqB,GAAG,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QACrC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAExC,MAAM,UAAU,GAAG,UAAU,OAAO,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;YACtD,IAAI,CAAC;gBACD,aAAa;gBACb,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAChE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAkB,CAAC;oBACtD,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,oCAAoC,OAAO,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC;YACjF,CAAC;QACL,CAAC,CAAC,CAAC,CAAC;QAEJ,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAE3C,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACjB,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@objectql/core",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "dependencies": {
7
7
  "fast-glob": "^3.3.2",
8
8
  "js-yaml": "^4.1.1",
9
- "@objectql/types": "1.2.0"
9
+ "@objectql/types": "1.3.0",
10
+ "@objectql/driver-remote": "0.1.1"
10
11
  },
11
12
  "devDependencies": {
12
13
  "typescript": "^5.3.0"