@objectql/core 4.0.5 → 4.1.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.
@@ -10,41 +10,13 @@ export declare class ObjectRepository {
10
10
  private objectName;
11
11
  private context;
12
12
  private app;
13
- private queryBuilder;
14
- private static queryCompiler;
15
13
  constructor(objectName: string, context: ObjectQLContext, app: IObjectQL);
16
- /**
17
- * Get validator instance from kernel (via plugin)
18
- * Falls back to creating a new instance if not available
19
- */
20
- private getValidator;
21
- /**
22
- * Get formula engine instance from kernel (via plugin)
23
- * Falls back to creating a new instance if not available
24
- */
25
- private getFormulaEngine;
26
14
  private getDriver;
27
15
  private getKernel;
28
16
  private getOptions;
29
- /**
30
- * Translates ObjectQL UnifiedQuery to ObjectStack QueryAST format
31
- * Uses query compiler for caching and optimization
32
- */
33
- private buildQueryAST;
34
17
  getSchema(): ObjectConfig;
35
18
  private getHookAPI;
36
19
  private getUserFromContext;
37
- /**
38
- * Validates a record against field-level and object-level validation rules.
39
- * For updates, only fields present in the update payload are validated at the field level,
40
- * while object-level rules use the merged record (previousRecord + updates).
41
- */
42
- private validateRecord;
43
- /**
44
- * Evaluate formula fields for a record
45
- * Adds computed formula field values to the record
46
- */
47
- private evaluateFormulas;
48
20
  find(query?: UnifiedQuery): Promise<any[]>;
49
21
  findOne(idOrQuery: string | number | UnifiedQuery): Promise<any>;
50
22
  count(filters: any): Promise<number>;
@@ -8,41 +8,11 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.ObjectRepository = void 0;
11
- const types_1 = require("@objectql/types");
12
- const plugin_validator_1 = require("@objectql/plugin-validator");
13
- const plugin_formula_1 = require("@objectql/plugin-formula");
14
- const query_1 = require("./query");
15
- const QueryCompiler_1 = require("./optimizations/QueryCompiler");
16
11
  class ObjectRepository {
17
12
  constructor(objectName, context, app) {
18
13
  this.objectName = objectName;
19
14
  this.context = context;
20
15
  this.app = app;
21
- this.queryBuilder = new query_1.QueryBuilder();
22
- }
23
- /**
24
- * Get validator instance from kernel (via plugin)
25
- * Falls back to creating a new instance if not available
26
- */
27
- getValidator() {
28
- const kernel = this.getKernel();
29
- if (kernel.validator) {
30
- return kernel.validator;
31
- }
32
- // Fallback for backward compatibility
33
- return new plugin_validator_1.Validator();
34
- }
35
- /**
36
- * Get formula engine instance from kernel (via plugin)
37
- * Falls back to creating a new instance if not available
38
- */
39
- getFormulaEngine() {
40
- const kernel = this.getKernel();
41
- if (kernel.formulaEngine) {
42
- return kernel.formulaEngine;
43
- }
44
- // Fallback for backward compatibility
45
- return new plugin_formula_1.FormulaEngine();
46
16
  }
47
17
  getDriver() {
48
18
  const obj = this.getSchema();
@@ -58,16 +28,6 @@ class ObjectRepository {
58
28
  ...extra
59
29
  };
60
30
  }
61
- /**
62
- * Translates ObjectQL UnifiedQuery to ObjectStack QueryAST format
63
- * Uses query compiler for caching and optimization
64
- */
65
- buildQueryAST(query) {
66
- const ast = this.queryBuilder.build(this.objectName, query);
67
- // Use query compiler to cache and optimize the AST
68
- const compiled = ObjectRepository.queryCompiler.compile(this.objectName, ast);
69
- return compiled.ast;
70
- }
71
31
  getSchema() {
72
32
  const obj = this.app.getObject(this.objectName);
73
33
  if (!obj) {
@@ -97,120 +57,6 @@ class ObjectRepository {
97
57
  isSystem: this.context.isSystem
98
58
  };
99
59
  }
100
- /**
101
- * Validates a record against field-level and object-level validation rules.
102
- * For updates, only fields present in the update payload are validated at the field level,
103
- * while object-level rules use the merged record (previousRecord + updates).
104
- */
105
- async validateRecord(operation, record, previousRecord) {
106
- var _a;
107
- const schema = this.getSchema();
108
- const allResults = [];
109
- // 1. Validate field-level rules
110
- // For updates, only validate fields that are present in the update payload
111
- for (const [fieldName, fieldConfig] of Object.entries(schema.fields)) {
112
- // Skip field validation for updates if the field is not in the update payload
113
- if (operation === 'update' && !(fieldName in record)) {
114
- continue;
115
- }
116
- const value = record[fieldName];
117
- const fieldResults = await this.getValidator().validateField(fieldName, fieldConfig, value, {
118
- record,
119
- previousRecord,
120
- operation,
121
- user: this.getUserFromContext(),
122
- api: this.getHookAPI(),
123
- });
124
- allResults.push(...fieldResults);
125
- }
126
- // 2. Validate object-level validation rules
127
- if (((_a = schema.validation) === null || _a === void 0 ? void 0 : _a.rules) && schema.validation.rules.length > 0) {
128
- // For updates, merge the update data with previous record to get the complete final state
129
- const mergedRecord = operation === 'update' && previousRecord
130
- ? { ...previousRecord, ...record }
131
- : record;
132
- // Track which fields changed (using shallow comparison for performance)
133
- // IMPORTANT: Shallow comparison does not detect changes in nested objects/arrays.
134
- // If your validation rules rely on detecting changes in complex nested structures,
135
- // you may need to implement custom change tracking in hooks.
136
- const changedFields = previousRecord
137
- ? Object.keys(record).filter(key => record[key] !== previousRecord[key])
138
- : undefined;
139
- const validationContext = {
140
- record: mergedRecord,
141
- previousRecord,
142
- operation,
143
- user: this.getUserFromContext(),
144
- api: this.getHookAPI(),
145
- changedFields,
146
- };
147
- const result = await this.getValidator().validate(schema.validation.rules, validationContext);
148
- allResults.push(...result.results);
149
- }
150
- // 3. Collect errors and throw if any
151
- const errors = allResults.filter(r => !r.valid && r.severity === 'error');
152
- if (errors.length > 0) {
153
- const errorMessage = errors.map(e => e.message).join('; ');
154
- throw new types_1.ValidationError(errorMessage, errors);
155
- }
156
- }
157
- /**
158
- * Evaluate formula fields for a record
159
- * Adds computed formula field values to the record
160
- */
161
- evaluateFormulas(record) {
162
- var _a;
163
- const schema = this.getSchema();
164
- const now = new Date();
165
- // Build formula context
166
- const formulaContext = {
167
- record,
168
- system: {
169
- today: new Date(now.getFullYear(), now.getMonth(), now.getDate()),
170
- now: now,
171
- year: now.getFullYear(),
172
- month: now.getMonth() + 1,
173
- day: now.getDate(),
174
- hour: now.getHours(),
175
- minute: now.getMinutes(),
176
- second: now.getSeconds(),
177
- },
178
- current_user: {
179
- id: this.context.userId || '',
180
- // TODO: Retrieve actual user name from user object if available
181
- name: undefined,
182
- email: undefined,
183
- role: (_a = this.context.roles) === null || _a === void 0 ? void 0 : _a[0],
184
- },
185
- is_new: false,
186
- record_id: record._id || record.id,
187
- };
188
- // Evaluate each formula field
189
- for (const [fieldName, fieldConfig] of Object.entries(schema.fields)) {
190
- const formulaExpression = fieldConfig.expression;
191
- if (fieldConfig.type === 'formula' && formulaExpression) {
192
- const result = this.getFormulaEngine().evaluate(formulaExpression, formulaContext, fieldConfig.data_type || 'text', { strict: true });
193
- if (result.success) {
194
- record[fieldName] = result.value;
195
- }
196
- else {
197
- // In case of error, set to null and log for diagnostics
198
- record[fieldName] = null;
199
- // Formula evaluation should not throw here, but we need observability
200
- // This logging is intentionally minimal and side-effect free
201
- console.error('[ObjectQL][FormulaEngine] Formula evaluation failed', {
202
- objectName: this.objectName,
203
- fieldName,
204
- recordId: formulaContext.record_id,
205
- expression: formulaExpression,
206
- error: result.error,
207
- stack: result.stack,
208
- });
209
- }
210
- }
211
- }
212
- return record;
213
- }
214
60
  async find(query = {}) {
215
61
  const hookCtx = {
216
62
  ...this.context,
@@ -222,13 +68,11 @@ class ObjectRepository {
222
68
  query
223
69
  };
224
70
  await this.app.triggerHook('beforeFind', this.objectName, hookCtx);
225
- // Build QueryAST and execute via kernel
226
- const ast = this.buildQueryAST(hookCtx.query || {});
227
- const kernelResult = await this.getKernel().find(this.objectName, ast);
71
+ // Execute via kernel (delegates to QueryService)
72
+ const kernelResult = await this.getKernel().find(this.objectName, hookCtx.query || {});
228
73
  const results = kernelResult.value;
229
- // Evaluate formulas for each result
230
- const resultsWithFormulas = results.map((record) => this.evaluateFormulas(record));
231
- hookCtx.result = resultsWithFormulas;
74
+ // Formula evaluation moved to FormulaPlugin hook
75
+ hookCtx.result = results;
232
76
  await this.app.triggerHook('afterFind', this.objectName, hookCtx);
233
77
  return hookCtx.result;
234
78
  }
@@ -246,9 +90,8 @@ class ObjectRepository {
246
90
  await this.app.triggerHook('beforeFind', this.objectName, hookCtx);
247
91
  // Use kernel.get() for direct ID lookup
248
92
  const result = await this.getKernel().get(this.objectName, String(idOrQuery));
249
- // Evaluate formulas if result exists
250
- const resultWithFormulas = result ? this.evaluateFormulas(result) : result;
251
- hookCtx.result = resultWithFormulas;
93
+ // Formula evaluation moved to FormulaPlugin hook
94
+ hookCtx.result = result;
252
95
  await this.app.triggerHook('afterFind', this.objectName, hookCtx);
253
96
  return hookCtx.result;
254
97
  }
@@ -286,10 +129,8 @@ class ObjectRepository {
286
129
  query
287
130
  };
288
131
  await this.app.triggerHook('beforeCount', this.objectName, hookCtx);
289
- // Build QueryAST and execute via kernel to get count
290
- const ast = this.buildQueryAST(hookCtx.query || {});
291
- const kernelResult = await this.getKernel().find(this.objectName, ast);
292
- const result = kernelResult.count;
132
+ // Execute via kernel (delegates to QueryService)
133
+ const result = await this.getKernel().count(this.objectName, hookCtx.query || {});
293
134
  hookCtx.result = result;
294
135
  await this.app.triggerHook('afterCount', this.objectName, hookCtx);
295
136
  return hookCtx.result;
@@ -310,8 +151,7 @@ class ObjectRepository {
310
151
  finalDoc.created_by = this.context.userId;
311
152
  if (this.context.spaceId)
312
153
  finalDoc.space_id = this.context.spaceId;
313
- // Validate the record before creating
314
- await this.validateRecord('create', finalDoc);
154
+ // Validation moved to ValidatorPlugin hook
315
155
  // Execute via kernel
316
156
  const result = await this.getKernel().create(this.objectName, finalDoc, this.getOptions());
317
157
  hookCtx.result = result;
@@ -333,8 +173,7 @@ class ObjectRepository {
333
173
  isModified: (field) => hookCtx.data ? Object.prototype.hasOwnProperty.call(hookCtx.data, field) : false
334
174
  };
335
175
  await this.app.triggerHook('beforeUpdate', this.objectName, hookCtx);
336
- // Validate the update
337
- await this.validateRecord('update', hookCtx.data, previousData);
176
+ // Validation moved to ValidatorPlugin hook
338
177
  // Execute via kernel
339
178
  const result = await this.getKernel().update(this.objectName, String(id), hookCtx.data, this.getOptions());
340
179
  hookCtx.result = result;
@@ -437,6 +276,4 @@ class ObjectRepository {
437
276
  }
438
277
  }
439
278
  exports.ObjectRepository = ObjectRepository;
440
- // Shared query compiler for caching compiled queries
441
- ObjectRepository.queryCompiler = new QueryCompiler_1.QueryCompiler(1000);
442
279
  //# sourceMappingURL=repository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,2CAAyQ;AAKzQ,iEAAuD;AACvD,6DAAyD;AACzD,mCAAuC;AACvC,iEAA8D;AAgB9D,MAAa,gBAAgB;IAKzB,YACY,UAAkB,EAClB,OAAwB,EACxB,GAAc;QAFd,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAiB;QACxB,QAAG,GAAH,GAAG,CAAW;QAEtB,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAY,EAAE,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACK,YAAY;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAoB,CAAC;QAClD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,SAAS,CAAC;QAC5B,CAAC;QACD,sCAAsC;QACtC,OAAO,IAAI,4BAAS,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAoB,CAAC;QAClD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,aAAa,CAAC;QAChC,CAAC;QACD,sCAAsC;QACtC,OAAO,IAAI,8BAAa,EAAE,CAAC;IAC/B,CAAC;IAEO,SAAS;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IAEO,SAAS;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAEO,UAAU,CAAC,QAAiC,EAAE;QAClD,OAAO;YACH,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;YAC3C,GAAG,KAAK;SACX,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,KAAmB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC5D,mDAAmD;QACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,GAAG,CAAC;IACxB,CAAC;IAED,SAAS;QACL,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,UAAU,aAAa,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,UAAU;QACd,OAAO;YACH,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5D,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;YACpE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;SAC3D,CAAC;IACN,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,oEAAoE;QACpE,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;SAClC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc,CACxB,SAA8B,EAC9B,MAAW,EACX,cAAoB;;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,UAAU,GAA2B,EAAE,CAAC;QAE9C,gCAAgC;QAChC,2EAA2E;QAC3E,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,8EAA8E;YAC9E,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;gBACnD,SAAS;YACb,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CACxD,SAAS,EACT,WAAW,EACX,KAAK,EACL;gBACI,MAAM;gBACN,cAAc;gBACd,SAAS;gBACT,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBAC/B,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;aACzB,CACJ,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QACrC,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAA,MAAA,MAAM,CAAC,UAAU,0CAAE,KAAK,KAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,0FAA0F;YAC1F,MAAM,YAAY,GAAG,SAAS,KAAK,QAAQ,IAAI,cAAc;gBACzD,CAAC,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE;gBAClC,CAAC,CAAC,MAAM,CAAC;YAEb,wEAAwE;YACxE,kFAAkF;YAClF,mFAAmF;YACnF,6DAA6D;YAC7D,MAAM,aAAa,GAAG,cAAc;gBAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,GAAG,CAAC,CAAC;gBACxE,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,iBAAiB,GAAsB;gBACzC,MAAM,EAAE,YAAY;gBACpB,cAAc;gBACd,SAAS;gBACT,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBAC/B,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;gBACtB,aAAa;aAChB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YAC9F,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,IAAI,uBAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,MAAW;;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,wBAAwB;QACxB,MAAM,cAAc,GAAmB;YACnC,MAAM;YACN,MAAM,EAAE;gBACJ,KAAK,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjE,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE;gBACvB,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC;gBACzB,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE;gBAClB,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE;gBACpB,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE;gBACxB,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE;aAC3B;YACD,YAAY,EAAE;gBACV,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;gBAC7B,gEAAgE;gBAChE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,KAAK,0CAAG,CAAC,CAAC;aAChC;YACD,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;SACrC,CAAC;QAEF,8BAA8B;QAC9B,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC;YAEjD,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAC3C,iBAAiB,EACjB,cAAc,EACd,WAAW,CAAC,SAAS,IAAI,MAAM,EAC/B,EAAE,MAAM,EAAE,IAAI,EAAE,CACnB,CAAC;gBAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACJ,wDAAwD;oBACxD,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;oBACzB,sEAAsE;oBACtE,6DAA6D;oBAE7D,OAAO,CAAC,KAAK,CACT,qDAAqD,EACrD;wBACI,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,SAAS;wBACT,QAAQ,EAAE,cAAc,CAAC,SAAS;wBAClC,UAAU,EAAE,iBAAiB;wBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACtB,CACJ,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAsB,EAAE;QAC/B,MAAM,OAAO,GAAyB;YAClC,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,MAAM;YACjB,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC/B,KAAK,EAAE,EAAE;YACT,KAAK;SACR,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnE,wCAAwC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAO,IAAI,CAAC,SAAS,EAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC;QAEnC,oCAAoC;QACpC,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAExF,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC;QACrC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAElE,OAAO,OAAO,CAAC,MAAe,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAyC;QACnD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACjE,MAAM,OAAO,GAAyB;gBAClC,GAAG,IAAI,CAAC,OAAO;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,MAAM;gBACjB,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;gBACtB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;gBAC/B,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;aAC5B,CAAC;YACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEnE,wCAAwC;YACxC,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,SAAS,EAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAEvF,qCAAqC;YACrC,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAE3E,OAAO,CAAC,MAAM,GAAG,kBAAkB,CAAC;YACpC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,OAAO,CAAC,MAAM,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAY;QACpB,2CAA2C;QAC3C,oDAAoD;QACpD,4FAA4F;QAC5F,IAAI,KAAmB,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;aAAM,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YACtJ,qCAAqC;YACrC,KAAK,GAAG,OAAO,CAAC;QACpB,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACjB,oCAAoC;YACpC,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,EAAE,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAyB;YAClC,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,OAAO;YAClB,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC/B,KAAK,EAAE,EAAE;YACT,KAAK;SACR,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEpE,qDAAqD;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAO,IAAI,CAAC,SAAS,EAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;QAElC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,OAAO,CAAC,MAAgB,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAQ;QACjB,MAAM,OAAO,GAAwB;YACjC,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC/B,IAAI,EAAE,GAAG;SACZ,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QAEnE,sCAAsC;QACtC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE9C,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,SAAS,EAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEpG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAmB,EAAE,GAAQ,EAAE,OAAa;QACrD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAsB;YAC/B,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC/B,EAAE;YACF,IAAI,EAAE,GAAG;YACT,YAAY;YACZ,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;SAC1G,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAErE,sBAAsB;QACtB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAEhE,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,SAAS,EAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEpH,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAmB;QAC5B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAwB;YACjC,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAC/B,EAAE;YACF,YAAY;SACf,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAErE,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,SAAS,EAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEtG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAU;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAE5E,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,OAAa;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAE1E,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAY,EAAE,MAAW,EAAE,OAAa;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1F,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAW;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,kEAAkE;QAClE,+DAA+D;QAC/D,qEAAqE;QACrE,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAY,EAAE,IAAS;QACpC,yDAAyD;QACzD,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACpC,KAAK,EAAE,CAAC;YACZ,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAY;QACzB,yDAAyD;QACzD,+BAA+B;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9B,KAAK,EAAE,CAAC;YACZ,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,EAA+B,EAAE,MAAW;QAC1E,MAAM,GAAG,GAAY;YACjB,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5D,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;YACpE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;SAC3D,CAAC;QAEF,MAAM,GAAG,GAAkB;YACvB,GAAG,IAAI,CAAC,OAAO;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU;YACV,EAAE;YACF,KAAK,EAAE,MAAM;YACb,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE;SAClC,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAC1E,CAAC;;AA3eL,4CA4eC;AA1eG,qDAAqD;AACtC,8BAAa,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
package/jest.config.js CHANGED
@@ -12,6 +12,9 @@ module.exports = {
12
12
  testMatch: ['**/test/**/*.test.ts'],
13
13
  moduleNameMapper: {
14
14
  '^@objectql/(.*)$': '<rootDir>/../$1/src',
15
+ '^@objectstack/core$': '<rootDir>/test/__mocks__/@objectstack/core.ts',
16
+ '^@objectstack/objectql$': '<rootDir>/test/__mocks__/@objectstack/objectql.ts',
17
+ '^@objectstack/runtime$': '<rootDir>/test/__mocks__/@objectstack/runtime.ts',
15
18
  },
16
19
  transform: {
17
20
  '^.+\\.(t|j)sx?$': ['ts-jest', {
@@ -23,7 +26,4 @@ module.exports = {
23
26
  }
24
27
  }],
25
28
  },
26
- transformIgnorePatterns: [
27
- "/node_modules/(?!(@objectstack|.pnpm))"
28
- ],
29
29
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectql/core",
3
- "version": "4.0.5",
3
+ "version": "4.1.0",
4
4
  "description": "Universal runtime engine for ObjectQL - AI-native metadata-driven ORM with validation, repository pattern, and driver orchestration",
5
5
  "keywords": [
6
6
  "objectql",
@@ -18,14 +18,14 @@
18
18
  "main": "dist/index.js",
19
19
  "types": "dist/index.d.ts",
20
20
  "dependencies": {
21
- "@objectstack/core": "^0.8.2",
22
- "@objectstack/objectql": "^0.8.2",
23
- "@objectstack/runtime": "^0.8.2",
24
- "@objectstack/spec": "^0.8.2",
21
+ "@objectstack/core": "^1.0.0",
22
+ "@objectstack/objectql": "^1.0.0",
23
+ "@objectstack/runtime": "^1.0.0",
24
+ "@objectstack/spec": "^1.0.0",
25
25
  "js-yaml": "^4.1.0",
26
- "@objectql/plugin-formula": "4.0.5",
27
- "@objectql/plugin-validator": "4.0.5",
28
- "@objectql/types": "4.0.5"
26
+ "@objectql/plugin-formula": "4.1.0",
27
+ "@objectql/plugin-validator": "4.1.0",
28
+ "@objectql/types": "4.1.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/js-yaml": "^4.0.5",
package/src/app.ts CHANGED
@@ -22,8 +22,10 @@ import {
22
22
  ActionContext,
23
23
  LoaderPlugin
24
24
  } from '@objectql/types';
25
- import { ObjectKernel, type Plugin } from '@objectstack/core';
25
+ import { ObjectKernel, type Plugin } from '@objectstack/runtime';
26
26
  import { ObjectQL as RuntimeObjectQL, SchemaRegistry } from '@objectstack/objectql';
27
+ import { ValidatorPlugin } from '@objectql/plugin-validator';
28
+ import { FormulaPlugin } from '@objectql/plugin-formula';
27
29
  import { ObjectRepository } from './repository';
28
30
  import { convertIntrospectedSchemaToObjects } from './util';
29
31
  import { CompiledHookManager } from './optimizations/CompiledHookManager';
@@ -81,10 +83,27 @@ export class ObjectQL implements IObjectQL {
81
83
  }
82
84
  }
83
85
 
86
+ // Ensure default plugins are present
87
+ if (!this.kernelPlugins.some(p => p.name === 'validator')) {
88
+ this.use(new ValidatorPlugin());
89
+ }
90
+ if (!this.kernelPlugins.some(p => p.name === 'formula')) {
91
+ this.use(new FormulaPlugin());
92
+ }
93
+
84
94
  // Create the kernel with registered plugins
85
- this.kernel = new (ObjectKernel as any)();
95
+ this.kernel = new (ObjectKernel as any)(this.kernelPlugins);
86
96
  for (const plugin of this.kernelPlugins) {
97
+ // Fallback for kernels that support .use() but maybe didn't take them in constructor or if we need to support both
98
+ // NOTE: Modern ObjectKernel takes plugins in constructor.
87
99
  if ((this.kernel as any).use) {
100
+ // Try to avoid double registration if the kernel is smart, but since we don't know the kernel logic perfectly:
101
+ // Ideally check if already added. But for now, we leave this for backward compat
102
+ // if ObjectKernel DOESN't take constructor args but HAS use().
103
+
104
+ // However, we just instantiated it.
105
+ // Let's assume constructor is the way if available.
106
+ // But we keep this check for .use() just in case the constructor signature is different (e.g. empty)
88
107
  (this.kernel as any).use(plugin);
89
108
  }
90
109
  }
@@ -110,18 +129,24 @@ export class ObjectQL implements IObjectQL {
110
129
  return items.map(unwrapContent);
111
130
  },
112
131
  unregister: (type: string, name: string) => {
113
- // Access private static storage using any cast
114
- const metadata = (SchemaRegistry as any).metadata;
115
- if (metadata instanceof Map) {
116
- const collection = metadata.get(type);
117
- if (collection instanceof Map) {
118
- collection.delete(name);
132
+ // Use the official unregisterItem API when available (added in @objectstack/objectql v0.9.2)
133
+ // Fallback to direct metadata access for older versions or test mocks
134
+ if (typeof SchemaRegistry.unregisterItem === 'function') {
135
+ SchemaRegistry.unregisterItem(type, name);
136
+ } else {
137
+ // Fallback: try to access metadata Map directly
138
+ const metadata = (SchemaRegistry as any).metadata;
139
+ if (metadata && metadata instanceof Map) {
140
+ const collection = metadata.get(type);
141
+ if (collection && collection instanceof Map) {
142
+ collection.delete(name);
143
+ }
119
144
  }
120
145
  }
121
146
  },
122
147
  unregisterPackage: (packageName: string) => {
123
148
  const metadata = (SchemaRegistry as any).metadata;
124
- if (metadata instanceof Map) {
149
+ if (metadata && metadata instanceof Map) {
125
150
  for (const [type, collection] of metadata.entries()) {
126
151
  if (collection instanceof Map) {
127
152
  for (const [key, item] of collection.entries()) {
@@ -395,6 +420,21 @@ export class ObjectQL implements IObjectQL {
395
420
  await (this.kernel as any).bootstrap();
396
421
  } else {
397
422
  console.warn('ObjectKernel does not have start() or bootstrap() method');
423
+
424
+ // Manually initialize plugins if kernel doesn't support lifecycle
425
+ for (const plugin of this.kernelPlugins) {
426
+ try {
427
+ if (typeof (plugin as any).init === 'function') {
428
+ await (plugin as any).init(this.kernel);
429
+ }
430
+ if (typeof (plugin as any).start === 'function') {
431
+ await (plugin as any).start(this.kernel);
432
+ }
433
+ } catch (error) {
434
+ console.error(`Failed to initialize plugin ${(plugin as any).name || 'unknown'}:`, error);
435
+ // Continue with other plugins even if one fails
436
+ }
437
+ }
398
438
  }
399
439
 
400
440
  // TEMPORARY: Set driver for backward compatibility during migration
package/src/gateway.ts ADDED
@@ -0,0 +1,101 @@
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
+ import { ApiRequest, ApiResponse, GatewayProtocol } from '@objectql/types';
10
+
11
+ export type RequestTransformer = (request: ApiRequest) => Promise<ApiRequest>;
12
+ export type ResponseTransformer = (response: ApiResponse) => Promise<ApiResponse>;
13
+
14
+ /**
15
+ * Unified API Gateway
16
+ * Routtes generic API requests to specific protocol implementations
17
+ */
18
+ export class ObjectGateway {
19
+ private protocols: GatewayProtocol[] = [];
20
+ private requestTransforms: RequestTransformer[] = [];
21
+ private responseTransforms: ResponseTransformer[] = [];
22
+
23
+ constructor(protocols: GatewayProtocol[] = []) {
24
+ this.protocols = protocols;
25
+ }
26
+
27
+ /**
28
+ * Register a new protocol handler
29
+ */
30
+ registerProtocol(protocol: GatewayProtocol) {
31
+ this.protocols.push(protocol);
32
+ }
33
+
34
+ /**
35
+ * Add a request transformer (middleware)
36
+ */
37
+ addRequestTransform(transformer: RequestTransformer) {
38
+ this.requestTransforms.push(transformer);
39
+ }
40
+
41
+ /**
42
+ * Add a response transformer (middleware)
43
+ */
44
+ addResponseTransform(transformer: ResponseTransformer) {
45
+ this.responseTransforms.push(transformer);
46
+ }
47
+
48
+ /**
49
+ * Handle an incoming API request
50
+ */
51
+ async handle(request: ApiRequest): Promise<ApiResponse> {
52
+ let req = request;
53
+
54
+ // 1. Apply Request Transforms
55
+ for (const transform of this.requestTransforms) {
56
+ req = await transform(req);
57
+ }
58
+
59
+ // 2. Find matching protocol
60
+ const protocol = this.protocols.find(p => p.route(req));
61
+
62
+ if (!protocol) {
63
+ return {
64
+ status: 404,
65
+ headers: { 'Content-Type': 'application/json' },
66
+ body: {
67
+ error: {
68
+ code: 'PROTOCOL_NOT_FOUND',
69
+ message: `No protocol found to handle path: ${req.path}`
70
+ }
71
+ }
72
+ };
73
+ }
74
+
75
+ let response: ApiResponse;
76
+
77
+ // 3. Delegate to protocol
78
+ try {
79
+ response = await protocol.handle(req);
80
+ } catch (error: any) {
81
+ console.error(`[ObjectGateway] Error in ${protocol.name}:`, error);
82
+ response = {
83
+ status: 500,
84
+ headers: { 'Content-Type': 'application/json' },
85
+ body: {
86
+ error: {
87
+ code: 'INTERNAL_ERROR',
88
+ message: error.message || 'Internal Gateway Error'
89
+ }
90
+ }
91
+ };
92
+ }
93
+
94
+ // 4. Apply Response Transforms
95
+ for (const transform of this.responseTransforms) {
96
+ response = await transform(response);
97
+ }
98
+
99
+ return response;
100
+ }
101
+ }
package/src/index.ts CHANGED
@@ -19,6 +19,8 @@ export type QueryAST = Data.QueryAST;
19
19
  export type DriverInterface = Data.DriverInterface;
20
20
  export type DriverOptions = Data.DriverOptions;
21
21
 
22
+ export * from './gateway';
23
+
22
24
  // Export our enhanced runtime components (actual implementations)
23
25
  export * from './repository';
24
26
  export * from './app';
package/src/plugin.ts CHANGED
@@ -246,6 +246,16 @@ export class ObjectQLPlugin implements RuntimePlugin {
246
246
  };
247
247
 
248
248
  kernel.find = async (objectName: string, query: any): Promise<{ value: any[]; count: number }> => {
249
+ // Use QueryService if available for advanced query processing (AST, optimizations)
250
+ if ((kernel as any).queryService) {
251
+ const result = await (kernel as any).queryService.find(objectName, query);
252
+ return {
253
+ value: result.value,
254
+ count: result.count !== undefined ? result.count : result.value.length
255
+ };
256
+ }
257
+
258
+ // Fallback to direct driver call
249
259
  const driver = getDriver(objectName);
250
260
  const value = await driver.find(objectName, query);
251
261
  const count = value.length;
@@ -253,11 +263,25 @@ export class ObjectQLPlugin implements RuntimePlugin {
253
263
  };
254
264
 
255
265
  kernel.get = async (objectName: string, id: string): Promise<any> => {
266
+ // Use QueryService if available
267
+ if ((kernel as any).queryService) {
268
+ const result = await (kernel as any).queryService.findOne(objectName, id);
269
+ return result.value;
270
+ }
271
+
256
272
  const driver = getDriver(objectName);
257
273
  return await driver.findOne(objectName, id);
258
274
  };
259
275
 
260
276
  kernel.count = async (objectName: string, filters?: any): Promise<number> => {
277
+ // Use QueryService if available
278
+ if ((kernel as any).queryService) {
279
+ // QueryService.count expects a UnifiedQuery filter or just filter object?
280
+ // Looking at QueryService.count signature: count(objectName: string, where?: Filter, options?: QueryOptions)
281
+ const result = await (kernel as any).queryService.count(objectName, filters);
282
+ return result.value;
283
+ }
284
+
261
285
  const driver = getDriver(objectName);
262
286
  return await driver.count(objectName, filters || {}, {});
263
287
  };