@objectql/core 4.0.2 → 4.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/CHANGELOG.md +18 -0
  3. package/README.md +4 -4
  4. package/dist/app.d.ts +9 -6
  5. package/dist/app.js +151 -29
  6. package/dist/app.js.map +1 -1
  7. package/dist/index.d.ts +6 -9
  8. package/dist/index.js +2 -5
  9. package/dist/index.js.map +1 -1
  10. package/dist/optimizations/CompiledHookManager.d.ts +55 -0
  11. package/dist/optimizations/CompiledHookManager.js +164 -0
  12. package/dist/optimizations/CompiledHookManager.js.map +1 -0
  13. package/dist/optimizations/DependencyGraph.d.ts +82 -0
  14. package/dist/optimizations/DependencyGraph.js +211 -0
  15. package/dist/optimizations/DependencyGraph.js.map +1 -0
  16. package/dist/optimizations/GlobalConnectionPool.d.ts +89 -0
  17. package/dist/optimizations/GlobalConnectionPool.js +193 -0
  18. package/dist/optimizations/GlobalConnectionPool.js.map +1 -0
  19. package/dist/optimizations/LazyMetadataLoader.d.ts +75 -0
  20. package/dist/optimizations/LazyMetadataLoader.js +149 -0
  21. package/dist/optimizations/LazyMetadataLoader.js.map +1 -0
  22. package/dist/optimizations/OptimizedMetadataRegistry.d.ts +26 -0
  23. package/dist/optimizations/OptimizedMetadataRegistry.js +117 -0
  24. package/dist/optimizations/OptimizedMetadataRegistry.js.map +1 -0
  25. package/dist/optimizations/OptimizedValidationEngine.d.ts +73 -0
  26. package/dist/optimizations/OptimizedValidationEngine.js +141 -0
  27. package/dist/optimizations/OptimizedValidationEngine.js.map +1 -0
  28. package/dist/optimizations/QueryCompiler.d.ts +51 -0
  29. package/dist/optimizations/QueryCompiler.js +216 -0
  30. package/dist/optimizations/QueryCompiler.js.map +1 -0
  31. package/dist/optimizations/SQLQueryOptimizer.d.ts +96 -0
  32. package/dist/optimizations/SQLQueryOptimizer.js +265 -0
  33. package/dist/optimizations/SQLQueryOptimizer.js.map +1 -0
  34. package/dist/optimizations/index.d.ts +32 -0
  35. package/dist/optimizations/index.js +44 -0
  36. package/dist/optimizations/index.js.map +1 -0
  37. package/dist/plugin.d.ts +8 -7
  38. package/dist/plugin.js +57 -22
  39. package/dist/plugin.js.map +1 -1
  40. package/dist/query/query-analyzer.js.map +1 -1
  41. package/dist/query/query-builder.d.ts +6 -1
  42. package/dist/query/query-builder.js +21 -5
  43. package/dist/query/query-builder.js.map +1 -1
  44. package/dist/query/query-service.js.map +1 -1
  45. package/dist/repository.d.ts +2 -0
  46. package/dist/repository.js +15 -9
  47. package/dist/repository.js.map +1 -1
  48. package/jest.config.js +3 -3
  49. package/package.json +8 -5
  50. package/src/app.ts +173 -47
  51. package/src/index.ts +8 -9
  52. package/src/optimizations/CompiledHookManager.ts +185 -0
  53. package/src/optimizations/DependencyGraph.ts +255 -0
  54. package/src/optimizations/GlobalConnectionPool.ts +251 -0
  55. package/src/optimizations/LazyMetadataLoader.ts +180 -0
  56. package/src/optimizations/OptimizedMetadataRegistry.ts +132 -0
  57. package/src/optimizations/OptimizedValidationEngine.ts +172 -0
  58. package/src/optimizations/QueryCompiler.ts +242 -0
  59. package/src/optimizations/SQLQueryOptimizer.ts +329 -0
  60. package/src/optimizations/index.ts +34 -0
  61. package/src/plugin.ts +71 -28
  62. package/src/query/query-analyzer.ts +1 -1
  63. package/src/query/query-builder.ts +21 -7
  64. package/src/query/query-service.ts +1 -1
  65. package/src/repository.ts +25 -13
  66. package/test/__mocks__/@objectstack/runtime.ts +8 -8
  67. package/test/app.test.ts +9 -7
  68. package/test/optimizations.test.ts +440 -0
  69. package/test/plugin-integration.test.ts +30 -19
  70. package/tsconfig.json +4 -6
  71. package/tsconfig.tsbuildinfo +1 -1
  72. package/dist/ai-agent.d.ts +0 -176
  73. package/dist/ai-agent.js +0 -722
  74. package/dist/ai-agent.js.map +0 -1
  75. package/dist/formula-engine.d.ts +0 -102
  76. package/dist/formula-engine.js +0 -433
  77. package/dist/formula-engine.js.map +0 -1
  78. package/dist/formula-plugin.d.ts +0 -52
  79. package/dist/formula-plugin.js +0 -107
  80. package/dist/formula-plugin.js.map +0 -1
  81. package/dist/validator-plugin.d.ts +0 -56
  82. package/dist/validator-plugin.js +0 -106
  83. package/dist/validator-plugin.js.map +0 -1
  84. package/dist/validator.d.ts +0 -80
  85. package/dist/validator.js +0 -625
  86. package/dist/validator.js.map +0 -1
  87. package/src/ai-agent.ts +0 -868
  88. package/src/formula-engine.ts +0 -572
  89. package/src/formula-plugin.ts +0 -141
  90. package/src/validator-plugin.ts +0 -140
  91. package/src/validator.ts +0 -743
  92. package/test/formula-engine.test.ts +0 -725
  93. package/test/formula-integration.test.ts +0 -286
  94. package/test/formula-plugin.test.ts +0 -197
  95. package/test/formula-spec-compliance.test.ts +0 -258
  96. package/test/validation-spec-compliance.test.ts +0 -440
  97. package/test/validator-plugin.test.ts +0 -126
  98. package/test/validator.test.ts +0 -440
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-agent.js","sourceRoot":"","sources":["../src/ai-agent.ts"],"names":[],"mappings":"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"}
@@ -1,102 +0,0 @@
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
- * Formula Engine Implementation
10
- *
11
- * Evaluates formula expressions defined in object metadata.
12
- * Formulas are read-only calculated fields computed at query time.
13
- *
14
- * @see @objectql/types/formula for type definitions
15
- * @see docs/spec/formula.md for complete specification
16
- */
17
- import { FormulaContext, FormulaEvaluationResult, FormulaEvaluationOptions, FormulaDataType, FormulaMetadata, FormulaEngineConfig, FormulaCustomFunction } from '@objectql/types';
18
- /**
19
- * Formula Engine for evaluating JavaScript-style expressions
20
- *
21
- * Features:
22
- * - Field references (e.g., `quantity * unit_price`)
23
- * - System variables (e.g., `$today`, `$current_user.id`)
24
- * - Lookup chains (e.g., `account.owner.name`)
25
- * - Built-in functions (Math, String, Date methods)
26
- * - Conditional logic (ternary, if/else)
27
- * - Safe sandbox execution
28
- */
29
- export declare class FormulaEngine {
30
- private config;
31
- private customFunctions;
32
- constructor(config?: FormulaEngineConfig);
33
- /**
34
- * Evaluate a formula expression
35
- *
36
- * @param expression - The JavaScript expression to evaluate
37
- * @param context - Runtime context with record data, system variables, user context
38
- * @param dataType - Expected return data type
39
- * @param options - Evaluation options
40
- * @returns Evaluation result with value, type, success flag, and optional error
41
- */
42
- evaluate(expression: string, context: FormulaContext, dataType: FormulaDataType, options?: FormulaEvaluationOptions): FormulaEvaluationResult;
43
- /**
44
- * Build the evaluation context from FormulaContext
45
- * Creates a safe object with field values, system variables, and user context
46
- */
47
- private buildEvaluationContext;
48
- /**
49
- * Execute the expression in a sandboxed environment
50
- *
51
- * SECURITY NOTE: Uses Function constructor for dynamic evaluation.
52
- * While we check for blocked operations, this is not a complete security sandbox.
53
- * For production use with untrusted formulas, consider using a proper sandboxing library
54
- * like vm2 or implementing an AST-based evaluator.
55
- */
56
- private executeExpression;
57
- /**
58
- * Wrap expression to handle both expression and statement styles
59
- */
60
- private wrapExpression;
61
- /**
62
- * Execute function with timeout protection
63
- *
64
- * NOTE: This synchronous implementation **cannot** pre-emptively interrupt execution.
65
- * To avoid giving a false sense of safety, any positive finite timeout configuration
66
- * is rejected up-front. Callers must not rely on timeout-based protection in this
67
- * runtime; instead, formulas must be written to be fast and side-effect free.
68
- */
69
- private executeWithTimeout;
70
- /**
71
- * Coerce the result value to the expected data type
72
- */
73
- private coerceValue;
74
- /**
75
- * Extract metadata from a formula expression
76
- * Analyzes the expression to determine dependencies and complexity
77
- */
78
- extractMetadata(fieldName: string, expression: string, dataType: FormulaDataType): FormulaMetadata;
79
- /**
80
- * Check if identifier is a JavaScript keyword or built-in
81
- */
82
- private isJavaScriptKeyword;
83
- /**
84
- * Estimate formula complexity based on heuristics
85
- */
86
- private estimateComplexity;
87
- /**
88
- * Register a custom function for use in formulas
89
- */
90
- registerFunction(name: string, func: FormulaCustomFunction): void;
91
- /**
92
- * Validate a formula expression without executing it
93
- *
94
- * SECURITY NOTE: Uses Function constructor for syntax validation.
95
- * This doesn't execute the code but creates a function object.
96
- * For stricter validation, consider using a parser library like @babel/parser.
97
- */
98
- validate(expression: string): {
99
- valid: boolean;
100
- errors: string[];
101
- };
102
- }
@@ -1,433 +0,0 @@
1
- "use strict";
2
- /**
3
- * ObjectQL
4
- * Copyright (c) 2026-present ObjectStack Inc.
5
- *
6
- * This source code is licensed under the MIT license found in the
7
- * LICENSE file in the root directory of this source tree.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.FormulaEngine = void 0;
11
- /**
12
- * Formula Engine Implementation
13
- *
14
- * Evaluates formula expressions defined in object metadata.
15
- * Formulas are read-only calculated fields computed at query time.
16
- *
17
- * @see @objectql/types/formula for type definitions
18
- * @see docs/spec/formula.md for complete specification
19
- */
20
- const types_1 = require("@objectql/types");
21
- /**
22
- * Formula Engine for evaluating JavaScript-style expressions
23
- *
24
- * Features:
25
- * - Field references (e.g., `quantity * unit_price`)
26
- * - System variables (e.g., `$today`, `$current_user.id`)
27
- * - Lookup chains (e.g., `account.owner.name`)
28
- * - Built-in functions (Math, String, Date methods)
29
- * - Conditional logic (ternary, if/else)
30
- * - Safe sandbox execution
31
- */
32
- class FormulaEngine {
33
- constructor(config = {}) {
34
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
35
- this.config = {
36
- enable_cache: (_a = config.enable_cache) !== null && _a !== void 0 ? _a : false,
37
- cache_ttl: (_b = config.cache_ttl) !== null && _b !== void 0 ? _b : 300,
38
- max_execution_time: (_c = config.max_execution_time) !== null && _c !== void 0 ? _c : 0, // 0 means no timeout enforcement
39
- enable_monitoring: (_d = config.enable_monitoring) !== null && _d !== void 0 ? _d : false,
40
- custom_functions: (_e = config.custom_functions) !== null && _e !== void 0 ? _e : {},
41
- sandbox: {
42
- enabled: (_g = (_f = config.sandbox) === null || _f === void 0 ? void 0 : _f.enabled) !== null && _g !== void 0 ? _g : true,
43
- allowed_globals: (_j = (_h = config.sandbox) === null || _h === void 0 ? void 0 : _h.allowed_globals) !== null && _j !== void 0 ? _j : ['Math', 'String', 'Number', 'Boolean', 'Date', 'Array', 'Object'],
44
- blocked_operations: (_l = (_k = config.sandbox) === null || _k === void 0 ? void 0 : _k.blocked_operations) !== null && _l !== void 0 ? _l : ['eval', 'Function', 'require', 'import'],
45
- },
46
- };
47
- this.customFunctions = this.config.custom_functions || {};
48
- }
49
- /**
50
- * Evaluate a formula expression
51
- *
52
- * @param expression - The JavaScript expression to evaluate
53
- * @param context - Runtime context with record data, system variables, user context
54
- * @param dataType - Expected return data type
55
- * @param options - Evaluation options
56
- * @returns Evaluation result with value, type, success flag, and optional error
57
- */
58
- evaluate(expression, context, dataType, options = {}) {
59
- var _a, _b;
60
- const startTime = Date.now();
61
- const timeout = (_b = (_a = options.timeout) !== null && _a !== void 0 ? _a : this.config.max_execution_time) !== null && _b !== void 0 ? _b : 0;
62
- try {
63
- // Validate expression
64
- if (!expression || expression.trim() === '') {
65
- throw new types_1.FormulaError(types_1.FormulaErrorType.SYNTAX_ERROR, 'Formula expression cannot be empty', expression);
66
- }
67
- // Prepare evaluation context
68
- const evalContext = this.buildEvaluationContext(context);
69
- // Execute expression with timeout
70
- const value = this.executeExpression(expression, evalContext, timeout, options);
71
- // Validate and coerce result type
72
- const coercedValue = this.coerceValue(value, dataType, expression);
73
- const executionTime = Date.now() - startTime;
74
- return {
75
- value: coercedValue,
76
- type: dataType,
77
- success: true,
78
- execution_time: executionTime,
79
- };
80
- }
81
- catch (error) {
82
- const executionTime = Date.now() - startTime;
83
- if (error instanceof types_1.FormulaError) {
84
- return {
85
- value: null,
86
- type: dataType,
87
- success: false,
88
- error: error.message,
89
- stack: error.stack,
90
- execution_time: executionTime,
91
- };
92
- }
93
- // Wrap unknown errors
94
- return {
95
- value: null,
96
- type: dataType,
97
- success: false,
98
- error: error instanceof Error ? error.message : String(error),
99
- stack: error instanceof Error ? error.stack : undefined,
100
- execution_time: executionTime,
101
- };
102
- }
103
- }
104
- /**
105
- * Build the evaluation context from FormulaContext
106
- * Creates a safe object with field values, system variables, and user context
107
- */
108
- buildEvaluationContext(context) {
109
- const evalContext = {};
110
- // Add all record fields to context
111
- for (const [key, value] of Object.entries(context.record)) {
112
- evalContext[key] = value;
113
- }
114
- // Add system variables with $ prefix
115
- evalContext.$today = context.system.today;
116
- evalContext.$now = context.system.now;
117
- evalContext.$year = context.system.year;
118
- evalContext.$month = context.system.month;
119
- evalContext.$day = context.system.day;
120
- evalContext.$hour = context.system.hour;
121
- evalContext.$minute = context.system.minute;
122
- evalContext.$second = context.system.second;
123
- // Add current user context
124
- evalContext.$current_user = context.current_user;
125
- // Add record context flags
126
- evalContext.$is_new = context.is_new;
127
- evalContext.$record_id = context.record_id;
128
- // Add custom functions
129
- for (const [name, func] of Object.entries(this.customFunctions)) {
130
- evalContext[name] = func;
131
- }
132
- return evalContext;
133
- }
134
- /**
135
- * Execute the expression in a sandboxed environment
136
- *
137
- * SECURITY NOTE: Uses Function constructor for dynamic evaluation.
138
- * While we check for blocked operations, this is not a complete security sandbox.
139
- * For production use with untrusted formulas, consider using a proper sandboxing library
140
- * like vm2 or implementing an AST-based evaluator.
141
- */
142
- executeExpression(expression, context, timeout, options) {
143
- var _a;
144
- // Check for blocked operations
145
- // NOTE: This is a basic check using string matching. It will have false positives
146
- // (e.g., a field named 'evaluation' contains 'eval') and can be bypassed
147
- // (e.g., using this['eval'] or globalThis['eval']).
148
- // For production security with untrusted formulas, use AST parsing or vm2.
149
- if ((_a = this.config.sandbox) === null || _a === void 0 ? void 0 : _a.enabled) {
150
- const blockedOps = this.config.sandbox.blocked_operations || [];
151
- for (const op of blockedOps) {
152
- if (expression.includes(op)) {
153
- throw new types_1.FormulaError(types_1.FormulaErrorType.SECURITY_VIOLATION, `Blocked operation detected: ${op}`, expression);
154
- }
155
- }
156
- }
157
- try {
158
- // Create function parameters from context keys
159
- const paramNames = Object.keys(context);
160
- const paramValues = Object.values(context);
161
- // Wrap expression to handle both expression-style and statement-style formulas
162
- const wrappedExpression = this.wrapExpression(expression);
163
- // Create and execute function
164
- // eslint-disable-next-line @typescript-eslint/no-implied-eval
165
- const func = new Function(...paramNames, wrappedExpression);
166
- // Execute with timeout protection
167
- const result = this.executeWithTimeout(func, paramValues, timeout);
168
- return result;
169
- }
170
- catch (error) {
171
- if (error instanceof types_1.FormulaError) {
172
- throw error;
173
- }
174
- // Parse JavaScript errors
175
- const err = error;
176
- if (error instanceof ReferenceError) {
177
- throw new types_1.FormulaError(types_1.FormulaErrorType.FIELD_NOT_FOUND, `Referenced field not found: ${err.message}`, expression, { original_error: err.message });
178
- }
179
- if (error instanceof TypeError) {
180
- throw new types_1.FormulaError(types_1.FormulaErrorType.TYPE_ERROR, `Type error in formula: ${err.message}`, expression, { original_error: err.message });
181
- }
182
- if (error instanceof SyntaxError) {
183
- throw new types_1.FormulaError(types_1.FormulaErrorType.SYNTAX_ERROR, `Syntax error in formula: ${err.message}`, expression, { original_error: err.message });
184
- }
185
- throw new types_1.FormulaError(types_1.FormulaErrorType.RUNTIME_ERROR, `Runtime error: ${error instanceof Error ? err.message : String(error)}`, expression, { original_error: error instanceof Error ? err.message : String(error) });
186
- }
187
- }
188
- /**
189
- * Wrap expression to handle both expression and statement styles
190
- */
191
- wrapExpression(expression) {
192
- const trimmed = expression.trim();
193
- // If it contains a return statement or is a block, use as-is
194
- if (trimmed.includes('return ') || (trimmed.startsWith('{') && trimmed.endsWith('}'))) {
195
- return trimmed;
196
- }
197
- // If it's multi-line with if/else, wrap in a function body
198
- if (trimmed.includes('\n') || trimmed.match(/if\s*\(/)) {
199
- return trimmed;
200
- }
201
- // Otherwise, treat as expression and return it
202
- return `return (${trimmed});`;
203
- }
204
- /**
205
- * Execute function with timeout protection
206
- *
207
- * NOTE: This synchronous implementation **cannot** pre-emptively interrupt execution.
208
- * To avoid giving a false sense of safety, any positive finite timeout configuration
209
- * is rejected up-front. Callers must not rely on timeout-based protection in this
210
- * runtime; instead, formulas must be written to be fast and side-effect free.
211
- */
212
- executeWithTimeout(func, args, timeout) {
213
- // Reject any positive finite timeout to avoid misleading "protection" semantics.
214
- if (Number.isFinite(timeout) && timeout > 0) {
215
- throw new types_1.FormulaError(types_1.FormulaErrorType.TIMEOUT, 'Formula timeout enforcement is not supported for synchronous execution. ' +
216
- 'Remove the timeout configuration or migrate to an async/isolated runtime ' +
217
- 'that can safely interrupt long-running formulas.', '', { requestedTimeoutMs: timeout });
218
- }
219
- // No timeout configured (or non-positive/invalid value): execute directly.
220
- return func(...args);
221
- }
222
- /**
223
- * Coerce the result value to the expected data type
224
- */
225
- coerceValue(value, dataType, expression) {
226
- // Handle null/undefined
227
- if (value === null || value === undefined) {
228
- return null;
229
- }
230
- try {
231
- switch (dataType) {
232
- case 'number':
233
- case 'currency':
234
- case 'percent':
235
- if (typeof value === 'number') {
236
- // Check for division by zero result
237
- if (!isFinite(value)) {
238
- throw new types_1.FormulaError(types_1.FormulaErrorType.DIVISION_BY_ZERO, 'Formula resulted in Infinity or NaN (possible division by zero)', expression);
239
- }
240
- return value;
241
- }
242
- if (typeof value === 'string') {
243
- const num = Number(value);
244
- if (isNaN(num)) {
245
- throw new types_1.FormulaError(types_1.FormulaErrorType.TYPE_ERROR, `Cannot convert "${value}" to number`, expression);
246
- }
247
- return num;
248
- }
249
- if (typeof value === 'boolean') {
250
- return value ? 1 : 0;
251
- }
252
- throw new types_1.FormulaError(types_1.FormulaErrorType.TYPE_ERROR, `Expected number, got ${typeof value}`, expression);
253
- case 'text':
254
- return String(value);
255
- case 'boolean':
256
- return Boolean(value);
257
- case 'date':
258
- case 'datetime':
259
- if (value instanceof Date) {
260
- return value;
261
- }
262
- if (typeof value === 'string') {
263
- const date = new Date(value);
264
- if (isNaN(date.getTime())) {
265
- throw new types_1.FormulaError(types_1.FormulaErrorType.TYPE_ERROR, `Cannot convert "${value}" to date`, expression);
266
- }
267
- return date;
268
- }
269
- if (typeof value === 'number') {
270
- return new Date(value);
271
- }
272
- throw new types_1.FormulaError(types_1.FormulaErrorType.TYPE_ERROR, `Expected date, got ${typeof value}`, expression);
273
- default:
274
- return value;
275
- }
276
- }
277
- catch (error) {
278
- if (error instanceof types_1.FormulaError) {
279
- throw error;
280
- }
281
- throw new types_1.FormulaError(types_1.FormulaErrorType.TYPE_ERROR, `Type coercion failed: ${error instanceof Error ? error.message : String(error)}`, expression);
282
- }
283
- }
284
- /**
285
- * Extract metadata from a formula expression
286
- * Analyzes the expression to determine dependencies and complexity
287
- */
288
- extractMetadata(fieldName, expression, dataType) {
289
- const dependencies = [];
290
- const lookupChains = [];
291
- const systemVariables = [];
292
- const validationErrors = [];
293
- try {
294
- // Extract system variables (start with $)
295
- const systemVarPattern = /\$([a-z_][a-z0-9_]*)/gi;
296
- const systemMatches = Array.from(expression.matchAll(systemVarPattern));
297
- for (const match of systemMatches) {
298
- const sysVar = '$' + match[1];
299
- if (!systemVariables.includes(sysVar)) {
300
- systemVariables.push(sysVar);
301
- }
302
- }
303
- // Extract field references (but not system variables or keywords)
304
- const fieldPattern = /\b([a-z_][a-z0-9_]*)\b/gi;
305
- const matches = Array.from(expression.matchAll(fieldPattern));
306
- for (const match of matches) {
307
- const identifier = match[1];
308
- // Skip JavaScript keywords and built-ins
309
- if (this.isJavaScriptKeyword(identifier)) {
310
- continue;
311
- }
312
- // Field references
313
- if (!dependencies.includes(identifier)) {
314
- dependencies.push(identifier);
315
- }
316
- }
317
- // Extract lookup chains (e.g., account.owner.name)
318
- const lookupPattern = /\b([a-z_][a-z0-9_]*(?:\.[a-z_][a-z0-9_]*)+)\b/gi;
319
- const lookupMatches = Array.from(expression.matchAll(lookupPattern));
320
- for (const match of lookupMatches) {
321
- const chain = match[1];
322
- if (!lookupChains.includes(chain)) {
323
- lookupChains.push(chain);
324
- }
325
- }
326
- // Basic validation
327
- if (!expression.trim()) {
328
- validationErrors.push('Expression cannot be empty');
329
- }
330
- // Estimate complexity
331
- const complexity = this.estimateComplexity(expression);
332
- return {
333
- field_name: fieldName,
334
- expression,
335
- data_type: dataType,
336
- dependencies,
337
- lookup_chains: lookupChains,
338
- system_variables: systemVariables,
339
- is_valid: validationErrors.length === 0,
340
- validation_errors: validationErrors.length > 0 ? validationErrors : undefined,
341
- complexity,
342
- };
343
- }
344
- catch (error) {
345
- return {
346
- field_name: fieldName,
347
- expression,
348
- data_type: dataType,
349
- dependencies: [],
350
- lookup_chains: [],
351
- system_variables: [],
352
- is_valid: false,
353
- validation_errors: [
354
- error instanceof Error ? error.message : String(error),
355
- ],
356
- complexity: 'simple',
357
- };
358
- }
359
- }
360
- /**
361
- * Check if identifier is a JavaScript keyword or built-in
362
- */
363
- isJavaScriptKeyword(identifier) {
364
- const keywords = new Set([
365
- 'if', 'else', 'for', 'while', 'do', 'switch', 'case', 'break', 'continue',
366
- 'return', 'function', 'var', 'let', 'const', 'true', 'false', 'null',
367
- 'undefined', 'this', 'new', 'typeof', 'instanceof', 'in', 'of',
368
- 'Math', 'String', 'Number', 'Boolean', 'Date', 'Array', 'Object',
369
- 'parseInt', 'parseFloat', 'isNaN', 'isFinite',
370
- ]);
371
- return keywords.has(identifier);
372
- }
373
- /**
374
- * Estimate formula complexity based on heuristics
375
- */
376
- estimateComplexity(expression) {
377
- const lines = expression.split('\n').length;
378
- const hasConditionals = /if\s*\(|switch\s*\(|\?/.test(expression);
379
- const hasLoops = /for\s*\(|while\s*\(/.test(expression);
380
- const hasLookups = /\.[a-z_][a-z0-9_]*/.test(expression);
381
- if (lines > 20 || hasLoops) {
382
- return 'complex';
383
- }
384
- if (lines > 5 || hasConditionals || hasLookups) {
385
- return 'medium';
386
- }
387
- return 'simple';
388
- }
389
- /**
390
- * Register a custom function for use in formulas
391
- */
392
- registerFunction(name, func) {
393
- this.customFunctions[name] = func;
394
- }
395
- /**
396
- * Validate a formula expression without executing it
397
- *
398
- * SECURITY NOTE: Uses Function constructor for syntax validation.
399
- * This doesn't execute the code but creates a function object.
400
- * For stricter validation, consider using a parser library like @babel/parser.
401
- */
402
- validate(expression) {
403
- var _a;
404
- const errors = [];
405
- if (!expression || expression.trim() === '') {
406
- errors.push('Expression cannot be empty');
407
- return { valid: false, errors };
408
- }
409
- // Check for blocked operations
410
- if ((_a = this.config.sandbox) === null || _a === void 0 ? void 0 : _a.enabled) {
411
- const blockedOps = this.config.sandbox.blocked_operations || [];
412
- for (const op of blockedOps) {
413
- if (expression.includes(op)) {
414
- errors.push(`Blocked operation detected: ${op}`);
415
- }
416
- }
417
- }
418
- // Try to parse as JavaScript (basic syntax check)
419
- try {
420
- const wrappedExpression = this.wrapExpression(expression);
421
- new Function('', wrappedExpression);
422
- }
423
- catch (error) {
424
- errors.push(`Syntax error: ${error instanceof Error ? error.message : String(error)}`);
425
- }
426
- return {
427
- valid: errors.length === 0,
428
- errors,
429
- };
430
- }
431
- }
432
- exports.FormulaEngine = FormulaEngine;
433
- //# sourceMappingURL=formula-engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formula-engine.js","sourceRoot":"","sources":["../src/formula-engine.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * ObjectQL Formula Plugin
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
- import type { RuntimePlugin, RuntimeContext } from '@objectql/runtime';
9
- import { FormulaEngine } from './formula-engine';
10
- import type { FormulaEngineConfig } from '@objectql/types';
11
- /**
12
- * Configuration for the Formula Plugin
13
- */
14
- export interface FormulaPluginConfig extends FormulaEngineConfig {
15
- /**
16
- * Enable automatic formula evaluation on queries
17
- * @default true
18
- */
19
- autoEvaluateOnQuery?: boolean;
20
- }
21
- /**
22
- * Formula Plugin
23
- *
24
- * Wraps the ObjectQL Formula Engine as an ObjectStack plugin.
25
- * Registers formula evaluation capabilities into the kernel.
26
- */
27
- export declare class FormulaPlugin implements RuntimePlugin {
28
- name: string;
29
- version: string;
30
- private engine;
31
- private config;
32
- constructor(config?: FormulaPluginConfig);
33
- /**
34
- * Install the plugin into the kernel
35
- * Registers formula evaluation capabilities
36
- */
37
- install(ctx: RuntimeContext): Promise<void>;
38
- /**
39
- * Register the formula provider with the kernel
40
- * @private
41
- */
42
- private registerFormulaProvider;
43
- /**
44
- * Register formula evaluation middleware
45
- * @private
46
- */
47
- private registerFormulaMiddleware;
48
- /**
49
- * Get the formula engine instance for direct access
50
- */
51
- getEngine(): FormulaEngine;
52
- }