@objectql/core 4.2.0 → 4.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +34 -0
  3. package/README.md +5 -2
  4. package/dist/app.d.ts +61 -52
  5. package/dist/app.js +100 -435
  6. package/dist/app.js.map +1 -1
  7. package/dist/index.d.ts +14 -20
  8. package/dist/index.js +21 -20
  9. package/dist/index.js.map +1 -1
  10. package/dist/kernel-factory.d.ts +38 -0
  11. package/dist/kernel-factory.js +38 -0
  12. package/dist/kernel-factory.js.map +1 -0
  13. package/dist/plugin.d.ts +9 -16
  14. package/dist/plugin.js +71 -48
  15. package/dist/plugin.js.map +1 -1
  16. package/dist/repository.d.ts +4 -31
  17. package/dist/repository.js +7 -283
  18. package/dist/repository.js.map +1 -1
  19. package/dist/util.js +4 -2
  20. package/dist/util.js.map +1 -1
  21. package/package.json +14 -12
  22. package/src/app.ts +156 -539
  23. package/src/index.ts +18 -42
  24. package/src/kernel-factory.ts +47 -0
  25. package/src/plugin.ts +77 -85
  26. package/src/repository.ts +4 -320
  27. package/src/util.ts +5 -3
  28. package/test/__mocks__/@objectstack/core.ts +250 -1
  29. package/test/__mocks__/@objectstack/objectql.ts +273 -0
  30. package/test/__mocks__/@objectstack/runtime.ts +14 -5
  31. package/test/introspection.test.ts +1 -1
  32. package/test/mock-driver.ts +5 -5
  33. package/test/optimizations.test.ts +2 -2
  34. package/test/plugin-integration.test.ts +1 -3
  35. package/test/utils.ts +6 -6
  36. package/tsconfig.json +3 -1
  37. package/tsconfig.tsbuildinfo +1 -1
  38. package/dist/ai/index.d.ts +0 -8
  39. package/dist/ai/index.js +0 -25
  40. package/dist/ai/index.js.map +0 -1
  41. package/dist/ai/registry.d.ts +0 -23
  42. package/dist/ai/registry.js +0 -78
  43. package/dist/ai/registry.js.map +0 -1
  44. package/dist/gateway.d.ts +0 -37
  45. package/dist/gateway.js +0 -93
  46. package/dist/gateway.js.map +0 -1
  47. package/dist/optimizations/CompiledHookManager.d.ts +0 -56
  48. package/dist/optimizations/CompiledHookManager.js +0 -170
  49. package/dist/optimizations/CompiledHookManager.js.map +0 -1
  50. package/dist/optimizations/DependencyGraph.d.ts +0 -82
  51. package/dist/optimizations/DependencyGraph.js +0 -211
  52. package/dist/optimizations/DependencyGraph.js.map +0 -1
  53. package/dist/optimizations/GlobalConnectionPool.d.ts +0 -89
  54. package/dist/optimizations/GlobalConnectionPool.js +0 -193
  55. package/dist/optimizations/GlobalConnectionPool.js.map +0 -1
  56. package/dist/optimizations/LazyMetadataLoader.d.ts +0 -75
  57. package/dist/optimizations/LazyMetadataLoader.js +0 -149
  58. package/dist/optimizations/LazyMetadataLoader.js.map +0 -1
  59. package/dist/optimizations/OptimizedMetadataRegistry.d.ts +0 -26
  60. package/dist/optimizations/OptimizedMetadataRegistry.js +0 -117
  61. package/dist/optimizations/OptimizedMetadataRegistry.js.map +0 -1
  62. package/dist/optimizations/OptimizedValidationEngine.d.ts +0 -73
  63. package/dist/optimizations/OptimizedValidationEngine.js +0 -141
  64. package/dist/optimizations/OptimizedValidationEngine.js.map +0 -1
  65. package/dist/optimizations/QueryCompiler.d.ts +0 -51
  66. package/dist/optimizations/QueryCompiler.js +0 -216
  67. package/dist/optimizations/QueryCompiler.js.map +0 -1
  68. package/dist/optimizations/SQLQueryOptimizer.d.ts +0 -96
  69. package/dist/optimizations/SQLQueryOptimizer.js +0 -265
  70. package/dist/optimizations/SQLQueryOptimizer.js.map +0 -1
  71. package/dist/optimizations/index.d.ts +0 -32
  72. package/dist/optimizations/index.js +0 -44
  73. package/dist/optimizations/index.js.map +0 -1
  74. package/dist/protocol.d.ts +0 -191
  75. package/dist/protocol.js +0 -272
  76. package/dist/protocol.js.map +0 -1
  77. package/dist/query/filter-translator.d.ts +0 -24
  78. package/dist/query/filter-translator.js +0 -38
  79. package/dist/query/filter-translator.js.map +0 -1
  80. package/dist/query/index.d.ts +0 -22
  81. package/dist/query/index.js +0 -39
  82. package/dist/query/index.js.map +0 -1
  83. package/dist/query/query-analyzer.d.ts +0 -186
  84. package/dist/query/query-analyzer.js +0 -348
  85. package/dist/query/query-analyzer.js.map +0 -1
  86. package/dist/query/query-builder.d.ts +0 -27
  87. package/dist/query/query-builder.js +0 -69
  88. package/dist/query/query-builder.js.map +0 -1
  89. package/dist/query/query-service.d.ts +0 -151
  90. package/dist/query/query-service.js +0 -272
  91. package/dist/query/query-service.js.map +0 -1
  92. package/src/ai/index.ts +0 -9
  93. package/src/ai/registry.ts +0 -81
  94. package/src/gateway.ts +0 -105
  95. package/src/optimizations/CompiledHookManager.ts +0 -193
  96. package/src/optimizations/DependencyGraph.ts +0 -255
  97. package/src/optimizations/GlobalConnectionPool.ts +0 -251
  98. package/src/optimizations/LazyMetadataLoader.ts +0 -180
  99. package/src/optimizations/OptimizedMetadataRegistry.ts +0 -132
  100. package/src/optimizations/OptimizedValidationEngine.ts +0 -172
  101. package/src/optimizations/QueryCompiler.ts +0 -242
  102. package/src/optimizations/SQLQueryOptimizer.ts +0 -329
  103. package/src/optimizations/index.ts +0 -34
  104. package/src/protocol.ts +0 -304
  105. package/src/query/filter-translator.ts +0 -41
  106. package/src/query/index.ts +0 -24
  107. package/src/query/query-analyzer.ts +0 -532
  108. package/src/query/query-builder.ts +0 -64
  109. package/src/query/query-service.ts +0 -397
  110. package/test/ai-registry.test.ts +0 -42
  111. package/test/app.test.ts +0 -578
  112. package/test/filter-syntax.test.ts +0 -233
  113. package/test/gateway.test.ts +0 -88
  114. package/test/protocol.test.ts +0 -143
  115. package/test/repository-validation.test.ts +0 -351
  116. package/test/repository.test.ts +0 -151
@@ -1,265 +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.SQLQueryOptimizer = void 0;
11
- /**
12
- * SQL Query Optimizer
13
- *
14
- * Improvement: SQL-aware optimization with index hints and join reordering.
15
- * Analyzes query patterns and schema to generate optimal SQL.
16
- *
17
- * Expected: 2-5x faster queries on large datasets
18
- */
19
- class SQLQueryOptimizer {
20
- constructor() {
21
- this.schemas = new Map();
22
- }
23
- /**
24
- * Register a schema with index information
25
- */
26
- registerSchema(schema) {
27
- this.schemas.set(schema.name, schema);
28
- }
29
- /**
30
- * Check if a field has an index
31
- */
32
- hasIndex(objectName, fieldName) {
33
- const schema = this.schemas.get(objectName);
34
- if (!schema || !schema.indexes)
35
- return false;
36
- return schema.indexes.some(index => index.fields.includes(fieldName));
37
- }
38
- /**
39
- * Get the best index for given filter fields
40
- */
41
- getBestIndex(objectName, filterFields) {
42
- const schema = this.schemas.get(objectName);
43
- if (!schema || !schema.indexes)
44
- return null;
45
- // Find indexes that cover the filter fields
46
- const candidateIndexes = schema.indexes.filter(index => {
47
- // Check if index covers any of the filter fields
48
- return filterFields.some(field => index.fields.includes(field));
49
- });
50
- if (candidateIndexes.length === 0)
51
- return null;
52
- // Prefer indexes that match more filter fields
53
- candidateIndexes.sort((a, b) => {
54
- const aMatches = a.fields.filter(f => filterFields.includes(f)).length;
55
- const bMatches = b.fields.filter(f => filterFields.includes(f)).length;
56
- return bMatches - aMatches;
57
- });
58
- return candidateIndexes[0];
59
- }
60
- /**
61
- * Extract filter fields from filter conditions
62
- */
63
- extractFilterFields(filters) {
64
- const fields = [];
65
- const extract = (obj) => {
66
- if (!obj || typeof obj !== 'object')
67
- return;
68
- for (const key of Object.keys(obj)) {
69
- if (!key.startsWith('$')) {
70
- fields.push(key);
71
- }
72
- if (typeof obj[key] === 'object') {
73
- extract(obj[key]);
74
- }
75
- }
76
- };
77
- extract(filters);
78
- return [...new Set(fields)]; // Remove duplicates
79
- }
80
- /**
81
- * Optimize join type based on query characteristics
82
- *
83
- * Note: This method expects filter fields in one of two formats:
84
- * 1. Table-prefixed: "tableName.fieldName" (e.g., "accounts.type")
85
- * 2. Simple field name: "fieldName" (checked against joined table schema)
86
- *
87
- * Multi-level qualification (e.g., "schema.table.field") is not currently supported.
88
- */
89
- optimizeJoinType(join, ast) {
90
- // If we're filtering on the joined table, we can use INNER JOIN
91
- if (ast.filters) {
92
- const filterFields = this.extractFilterFields(ast.filters);
93
- // Check if any filter field references the joined table
94
- const hasFilterOnJoinTable = filterFields.some(field => {
95
- // Handle table-prefixed fields like "accounts.type"
96
- if (field.includes('.')) {
97
- const parts = field.split('.');
98
- // Only consider the first part as table name for simplicity
99
- // This assumes format: "table.field" not "schema.table.field"
100
- if (parts.length === 2 && parts[0] === join.table) {
101
- return true;
102
- }
103
- // If more than 2 parts or table doesn't match, skip this field
104
- return false;
105
- }
106
- // Also check if the field exists in the joined table schema (non-prefixed)
107
- const schema = this.schemas.get(join.table);
108
- if (schema) {
109
- return schema.fields[field] !== undefined;
110
- }
111
- return false;
112
- });
113
- if (hasFilterOnJoinTable) {
114
- return 'inner'; // Convert LEFT to INNER for better performance
115
- }
116
- }
117
- return join.type;
118
- }
119
- /**
120
- * Optimize a query AST to SQL
121
- */
122
- optimize(ast) {
123
- const schema = this.schemas.get(ast.object);
124
- if (!schema) {
125
- // Fallback to basic SQL generation
126
- return this.generateBasicSQL(ast);
127
- }
128
- let sql = 'SELECT ';
129
- // Fields
130
- if (ast.fields && ast.fields.length > 0) {
131
- sql += ast.fields.join(', ');
132
- }
133
- else {
134
- sql += '*';
135
- }
136
- sql += ` FROM ${ast.object}`;
137
- // Index hints
138
- if (ast.filters) {
139
- const filterFields = this.extractFilterFields(ast.filters);
140
- const bestIndex = this.getBestIndex(ast.object, filterFields);
141
- if (bestIndex) {
142
- // Add index hint for MySQL/MariaDB
143
- sql += ` USE INDEX (${bestIndex.name})`;
144
- }
145
- }
146
- // Optimized joins
147
- if (ast.joins && ast.joins.length > 0) {
148
- for (const join of ast.joins) {
149
- const optimizedType = this.optimizeJoinType(join, ast);
150
- sql += ` ${optimizedType.toUpperCase()} JOIN ${join.table}`;
151
- // Simplified join condition
152
- if (typeof join.on === 'string') {
153
- sql += ` ON ${join.on}`;
154
- }
155
- }
156
- }
157
- // WHERE clause
158
- if (ast.filters) {
159
- sql += ' WHERE ' + this.filtersToSQL(ast.filters);
160
- }
161
- // ORDER BY
162
- if (ast.sort && ast.sort.length > 0) {
163
- sql += ' ORDER BY ';
164
- sql += ast.sort.map(s => `${s.field} ${s.order.toUpperCase()}`).join(', ');
165
- }
166
- // LIMIT and OFFSET
167
- if (ast.limit !== undefined) {
168
- sql += ` LIMIT ${ast.limit}`;
169
- }
170
- if (ast.offset !== undefined) {
171
- sql += ` OFFSET ${ast.offset}`;
172
- }
173
- return sql;
174
- }
175
- /**
176
- * Convert filter object to SQL WHERE clause
177
- */
178
- filtersToSQL(filters) {
179
- if (typeof filters === 'string') {
180
- return filters;
181
- }
182
- // Simplified filter conversion
183
- const conditions = [];
184
- for (const [key, value] of Object.entries(filters)) {
185
- if (key === '$and') {
186
- const subconditions = value.map(f => this.filtersToSQL(f));
187
- conditions.push(`(${subconditions.join(' AND ')})`);
188
- }
189
- else if (key === '$or') {
190
- const subconditions = value.map(f => this.filtersToSQL(f));
191
- conditions.push(`(${subconditions.join(' OR ')})`);
192
- }
193
- else if (!key.startsWith('$')) {
194
- // Field condition
195
- if (typeof value === 'object' && value !== null) {
196
- for (const [op, val] of Object.entries(value)) {
197
- switch (op) {
198
- case '$eq':
199
- conditions.push(`${key} = '${val}'`);
200
- break;
201
- case '$ne':
202
- conditions.push(`${key} != '${val}'`);
203
- break;
204
- case '$gt':
205
- conditions.push(`${key} > '${val}'`);
206
- break;
207
- case '$gte':
208
- conditions.push(`${key} >= '${val}'`);
209
- break;
210
- case '$lt':
211
- conditions.push(`${key} < '${val}'`);
212
- break;
213
- case '$lte':
214
- conditions.push(`${key} <= '${val}'`);
215
- break;
216
- case '$in':
217
- const inValues = val.map(v => `'${v}'`).join(', ');
218
- conditions.push(`${key} IN (${inValues})`);
219
- break;
220
- }
221
- }
222
- }
223
- else {
224
- conditions.push(`${key} = '${value}'`);
225
- }
226
- }
227
- }
228
- return conditions.join(' AND ');
229
- }
230
- /**
231
- * Fallback: generate basic SQL without optimizations
232
- */
233
- generateBasicSQL(ast) {
234
- let sql = 'SELECT ';
235
- if (ast.fields && ast.fields.length > 0) {
236
- sql += ast.fields.join(', ');
237
- }
238
- else {
239
- sql += '*';
240
- }
241
- sql += ` FROM ${ast.object}`;
242
- if (ast.filters) {
243
- sql += ' WHERE ' + this.filtersToSQL(ast.filters);
244
- }
245
- if (ast.sort && ast.sort.length > 0) {
246
- sql += ' ORDER BY ';
247
- sql += ast.sort.map(s => `${s.field} ${s.order.toUpperCase()}`).join(', ');
248
- }
249
- if (ast.limit !== undefined) {
250
- sql += ` LIMIT ${ast.limit}`;
251
- }
252
- if (ast.offset !== undefined) {
253
- sql += ` OFFSET ${ast.offset}`;
254
- }
255
- return sql;
256
- }
257
- /**
258
- * Clear all registered schemas
259
- */
260
- clearSchemas() {
261
- this.schemas.clear();
262
- }
263
- }
264
- exports.SQLQueryOptimizer = SQLQueryOptimizer;
265
- //# sourceMappingURL=SQLQueryOptimizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SQLQueryOptimizer.js","sourceRoot":"","sources":["../../src/optimizations/SQLQueryOptimizer.ts"],"names":[],"mappings":"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"}
@@ -1,32 +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
- * Kernel Optimizations Module
10
- *
11
- * This module contains 10 key optimizations for the ObjectQL kernel:
12
- *
13
- * 1. OptimizedMetadataRegistry - O(k) package uninstall with secondary indexes
14
- * 2. QueryCompiler - LRU cache for compiled query plans
15
- * 3. CompiledHookManager - Pre-compiled hook pipelines
16
- * 4. GlobalConnectionPool - Kernel-level connection pooling
17
- * 5. OptimizedValidationEngine - Compiled validation rules
18
- * 6. LazyMetadataLoader - On-demand metadata loading with predictive preload
19
- * 7. DependencyGraph - DAG-based dependency resolution
20
- * 8. SQLQueryOptimizer - SQL-aware query optimization with index hints
21
- *
22
- * Note: TypeScript type generation optimization (#7) and memory-mapped storage (#10)
23
- * are not included in this release for compatibility and complexity reasons.
24
- */
25
- export { OptimizedMetadataRegistry } from './OptimizedMetadataRegistry';
26
- export { QueryCompiler, type CompiledQuery } from './QueryCompiler';
27
- export { CompiledHookManager, type Hook } from './CompiledHookManager';
28
- export { GlobalConnectionPool, type Connection, type PoolLimits } from './GlobalConnectionPool';
29
- export { OptimizedValidationEngine, type ValidatorFunction, type ValidationSchema } from './OptimizedValidationEngine';
30
- export { LazyMetadataLoader, type ObjectMetadata, type MetadataLoader } from './LazyMetadataLoader';
31
- export { DependencyGraph, type DependencyEdge, type DependencyType } from './DependencyGraph';
32
- export { SQLQueryOptimizer, type IndexMetadata, type SchemaWithIndexes, type OptimizableQueryAST } from './SQLQueryOptimizer';
@@ -1,44 +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.SQLQueryOptimizer = exports.DependencyGraph = exports.LazyMetadataLoader = exports.OptimizedValidationEngine = exports.GlobalConnectionPool = exports.CompiledHookManager = exports.QueryCompiler = exports.OptimizedMetadataRegistry = void 0;
11
- /**
12
- * Kernel Optimizations Module
13
- *
14
- * This module contains 10 key optimizations for the ObjectQL kernel:
15
- *
16
- * 1. OptimizedMetadataRegistry - O(k) package uninstall with secondary indexes
17
- * 2. QueryCompiler - LRU cache for compiled query plans
18
- * 3. CompiledHookManager - Pre-compiled hook pipelines
19
- * 4. GlobalConnectionPool - Kernel-level connection pooling
20
- * 5. OptimizedValidationEngine - Compiled validation rules
21
- * 6. LazyMetadataLoader - On-demand metadata loading with predictive preload
22
- * 7. DependencyGraph - DAG-based dependency resolution
23
- * 8. SQLQueryOptimizer - SQL-aware query optimization with index hints
24
- *
25
- * Note: TypeScript type generation optimization (#7) and memory-mapped storage (#10)
26
- * are not included in this release for compatibility and complexity reasons.
27
- */
28
- var OptimizedMetadataRegistry_1 = require("./OptimizedMetadataRegistry");
29
- Object.defineProperty(exports, "OptimizedMetadataRegistry", { enumerable: true, get: function () { return OptimizedMetadataRegistry_1.OptimizedMetadataRegistry; } });
30
- var QueryCompiler_1 = require("./QueryCompiler");
31
- Object.defineProperty(exports, "QueryCompiler", { enumerable: true, get: function () { return QueryCompiler_1.QueryCompiler; } });
32
- var CompiledHookManager_1 = require("./CompiledHookManager");
33
- Object.defineProperty(exports, "CompiledHookManager", { enumerable: true, get: function () { return CompiledHookManager_1.CompiledHookManager; } });
34
- var GlobalConnectionPool_1 = require("./GlobalConnectionPool");
35
- Object.defineProperty(exports, "GlobalConnectionPool", { enumerable: true, get: function () { return GlobalConnectionPool_1.GlobalConnectionPool; } });
36
- var OptimizedValidationEngine_1 = require("./OptimizedValidationEngine");
37
- Object.defineProperty(exports, "OptimizedValidationEngine", { enumerable: true, get: function () { return OptimizedValidationEngine_1.OptimizedValidationEngine; } });
38
- var LazyMetadataLoader_1 = require("./LazyMetadataLoader");
39
- Object.defineProperty(exports, "LazyMetadataLoader", { enumerable: true, get: function () { return LazyMetadataLoader_1.LazyMetadataLoader; } });
40
- var DependencyGraph_1 = require("./DependencyGraph");
41
- Object.defineProperty(exports, "DependencyGraph", { enumerable: true, get: function () { return DependencyGraph_1.DependencyGraph; } });
42
- var SQLQueryOptimizer_1 = require("./SQLQueryOptimizer");
43
- Object.defineProperty(exports, "SQLQueryOptimizer", { enumerable: true, get: function () { return SQLQueryOptimizer_1.SQLQueryOptimizer; } });
44
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/optimizations/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,iDAAoE;AAA3D,8GAAA,aAAa,OAAA;AACtB,6DAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,+DAAgG;AAAvF,4HAAA,oBAAoB,OAAA;AAC7B,yEAAuH;AAA9G,sIAAA,yBAAyB,OAAA;AAClC,2DAAoG;AAA3F,wHAAA,kBAAkB,OAAA;AAC3B,qDAA8F;AAArF,kHAAA,eAAe,OAAA;AACxB,yDAA8H;AAArH,sHAAA,iBAAiB,OAAA"}
@@ -1,191 +0,0 @@
1
- /**
2
- * ObjectStack Protocol Implementation
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 { ObjectStackProtocol } from '@objectstack/spec/api';
9
- import { IObjectQL } from '@objectql/types';
10
- /**
11
- * Bridges the ObjectStack Protocol (Specification) to the ObjectQL Engine (Implementation)
12
- */
13
- export declare class ObjectStackProtocolImplementation implements ObjectStackProtocol {
14
- private engine;
15
- constructor(engine: IObjectQL);
16
- /**
17
- * Get API Discovery Document
18
- */
19
- getDiscovery(args: any): Promise<any>;
20
- /**
21
- * Get Metadata Types (e.g., ['object', 'action'])
22
- */
23
- getMetaTypes(args: any): Promise<{
24
- types: string[];
25
- }>;
26
- /**
27
- * Get Metadata Items for a Type
28
- */
29
- getMetaItems(args: {
30
- type: string;
31
- }): Promise<{
32
- type: string;
33
- items: any[];
34
- }>;
35
- /**
36
- * Get Metadata Item
37
- */
38
- getMetaItem(args: {
39
- type: string;
40
- name: string;
41
- }): Promise<any>;
42
- /**
43
- * Get Cached Metadata Item
44
- */
45
- getMetaItemCached(args: {
46
- type: string;
47
- name: string;
48
- }): Promise<any>;
49
- /**
50
- * Save Metadata Item
51
- */
52
- saveMetaItem(args: {
53
- type: string;
54
- name: string;
55
- item?: any;
56
- }): Promise<{
57
- success: boolean;
58
- message?: string;
59
- }>;
60
- /**
61
- * Get UI View
62
- */
63
- getUiView(args: {
64
- object: string;
65
- type: 'list' | 'form';
66
- }): Promise<any>;
67
- /**
68
- * Find Data Records
69
- */
70
- findData(args: {
71
- object: string;
72
- query?: any;
73
- }): Promise<any>;
74
- /**
75
- * Count Data Records
76
- */
77
- countData(args: {
78
- object: string;
79
- query?: any;
80
- }): Promise<number>;
81
- /**
82
- * Get Single Data Record
83
- */
84
- getData(args: {
85
- object: string;
86
- id: string;
87
- }): Promise<any>;
88
- /**
89
- * Create Data Record
90
- */
91
- createData(args: {
92
- object: string;
93
- data: any;
94
- }): Promise<any>;
95
- /**
96
- * Update Data Record
97
- */
98
- updateData(args: {
99
- object: string;
100
- id: string;
101
- data: any;
102
- }): Promise<any>;
103
- /**
104
- * Delete Data Record
105
- */
106
- deleteData(args: {
107
- object: string;
108
- id: string;
109
- }): Promise<{
110
- object: string;
111
- id: string;
112
- success: boolean;
113
- }>;
114
- /**
115
- * Create Many Data Records
116
- */
117
- createManyData(args: {
118
- object: string;
119
- records: any[];
120
- options?: any;
121
- }): Promise<any>;
122
- /**
123
- * Update Many Data Records
124
- */
125
- updateManyData(args: {
126
- object: string;
127
- records: {
128
- id: string;
129
- data: any;
130
- }[];
131
- options?: any;
132
- }): Promise<any>;
133
- /**
134
- * Delete Many Data Records
135
- */
136
- deleteManyData(args: {
137
- object: string;
138
- ids: string[];
139
- options?: any;
140
- }): Promise<any>;
141
- /**
142
- * Batch Operations
143
- */
144
- batchData(args: {
145
- object: string;
146
- request: {
147
- operation: 'create' | 'update' | 'delete' | 'upsert';
148
- records: any[];
149
- };
150
- }): Promise<any>;
151
- /**
152
- * Execute Action/Operation
153
- */
154
- performAction(args: {
155
- object: string;
156
- id?: string;
157
- action: string;
158
- args?: any;
159
- }): Promise<any>;
160
- /**
161
- * Analytics Query - Execute analytics query
162
- */
163
- analyticsQuery(args: any): Promise<any>;
164
- /**
165
- * Get Analytics Metadata
166
- */
167
- getAnalyticsMeta(args: any): Promise<any>;
168
- /**
169
- * Trigger Automation
170
- */
171
- triggerAutomation(args: {
172
- trigger: string;
173
- payload: Record<string, any>;
174
- }): Promise<{
175
- success: boolean;
176
- jobId?: string;
177
- result?: any;
178
- }>;
179
- /**
180
- * List Spaces (Hub/Workspace Management)
181
- */
182
- listSpaces(args: any): Promise<any>;
183
- /**
184
- * Create Space (Hub/Workspace Management)
185
- */
186
- createSpace(args: any): Promise<any>;
187
- /**
188
- * Install Plugin (Hub/Extension Management)
189
- */
190
- installPlugin(args: any): Promise<any>;
191
- }