@objectstack/objectql 0.6.0 → 0.7.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @objectstack/objectql
2
2
 
3
+ ## 0.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Patch release for maintenance and stability improvements
8
+ - Updated dependencies
9
+ - @objectstack/spec@0.7.1
10
+ - @objectstack/types@0.7.1
11
+ - @objectstack/core@0.7.1
12
+
13
+ ## 0.6.1
14
+
15
+ ### Patch Changes
16
+
17
+ - Patch release for maintenance and stability improvements
18
+ - Updated dependencies
19
+ - @objectstack/spec@0.6.1
20
+ - @objectstack/types@0.6.1
21
+ - @objectstack/core@0.6.1
22
+
3
23
  ## 0.6.0
4
24
 
5
25
  ### Minor Changes
package/README.md CHANGED
@@ -69,7 +69,8 @@ When building full applications, use the `ObjectKernel` to manage plugins and co
69
69
 
70
70
  ```typescript
71
71
  import { ObjectKernel } from '@objectstack/core';
72
- import { ObjectQLPlugin, DriverPlugin } from '@objectstack/runtime';
72
+ import { DriverPlugin } from '@objectstack/runtime';
73
+ import { ObjectQLPlugin } from '@objectstack/objectql';
73
74
  import { InMemoryDriver } from '@objectstack/driver-memory';
74
75
 
75
76
  const kernel = new ObjectKernel();
@@ -0,0 +1,286 @@
1
+ import { HookContext } from '@objectstack/spec/data';
2
+ import { DataEngineQueryOptions, DataEngineInsertOptions, DataEngineUpdateOptions, DataEngineDeleteOptions, DataEngineAggregateOptions, DataEngineCountOptions } from '@objectstack/spec/data';
3
+ import { DriverInterface, IDataEngine, Logger } from '@objectstack/core';
4
+ export type HookHandler = (context: HookContext) => Promise<void> | void;
5
+ /**
6
+ * Host Context provided to plugins (Internal ObjectQL Plugin System)
7
+ */
8
+ export interface ObjectQLHostContext {
9
+ ql: ObjectQL;
10
+ logger: Logger;
11
+ [key: string]: any;
12
+ }
13
+ /**
14
+ * ObjectQL Engine
15
+ *
16
+ * Implements the IDataEngine interface for data persistence.
17
+ */
18
+ export declare class ObjectQL implements IDataEngine {
19
+ private drivers;
20
+ private defaultDriver;
21
+ private logger;
22
+ private hooks;
23
+ private hostContext;
24
+ constructor(hostContext?: Record<string, any>);
25
+ /**
26
+ * Load and Register a Plugin
27
+ */
28
+ use(manifestPart: any, runtimePart?: any): Promise<void>;
29
+ /**
30
+ * Register a hook
31
+ * @param event The event name (e.g. 'beforeFind', 'afterInsert')
32
+ * @param handler The handler function
33
+ */
34
+ registerHook(event: string, handler: HookHandler): void;
35
+ triggerHooks(event: string, context: HookContext): Promise<void>;
36
+ /**
37
+ * Register contribution (Manifest)
38
+ */
39
+ registerApp(manifest: any): void;
40
+ /**
41
+ * Register a new storage driver
42
+ */
43
+ registerDriver(driver: DriverInterface, isDefault?: boolean): void;
44
+ /**
45
+ * Helper to get object definition
46
+ */
47
+ getSchema(objectName: string): {
48
+ fields: Record<string, {
49
+ type: "number" | "boolean" | "code" | "date" | "lookup" | "text" | "textarea" | "email" | "url" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "master_detail" | "tree" | "image" | "file" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "json" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "tags" | "vector";
50
+ required: boolean;
51
+ searchable: boolean;
52
+ multiple: boolean;
53
+ unique: boolean;
54
+ deleteBehavior: "set_null" | "cascade" | "restrict";
55
+ auditTrail: boolean;
56
+ hidden: boolean;
57
+ readonly: boolean;
58
+ encryption: boolean;
59
+ index: boolean;
60
+ externalId: boolean;
61
+ options?: {
62
+ value: string;
63
+ label: string;
64
+ color?: string | undefined;
65
+ default?: boolean | undefined;
66
+ }[] | undefined;
67
+ expression?: string | undefined;
68
+ defaultValue?: any;
69
+ min?: number | undefined;
70
+ max?: number | undefined;
71
+ language?: string | undefined;
72
+ encryptionConfig?: {
73
+ enabled: boolean;
74
+ algorithm: "aes-256-gcm" | "aes-256-cbc" | "chacha20-poly1305";
75
+ keyManagement: {
76
+ provider: "local" | "aws-kms" | "azure-key-vault" | "gcp-kms" | "hashicorp-vault";
77
+ keyId?: string | undefined;
78
+ rotationPolicy?: {
79
+ enabled: boolean;
80
+ frequencyDays: number;
81
+ retainOldVersions: number;
82
+ autoRotate: boolean;
83
+ } | undefined;
84
+ };
85
+ scope: "table" | "field" | "database" | "record";
86
+ deterministicEncryption: boolean;
87
+ searchableEncryption: boolean;
88
+ } | undefined;
89
+ formula?: string | undefined;
90
+ label?: string | undefined;
91
+ precision?: number | undefined;
92
+ name?: string | undefined;
93
+ description?: string | undefined;
94
+ format?: string | undefined;
95
+ maxLength?: number | undefined;
96
+ minLength?: number | undefined;
97
+ scale?: number | undefined;
98
+ reference?: string | undefined;
99
+ referenceFilters?: string[] | undefined;
100
+ writeRequiresMasterRead?: boolean | undefined;
101
+ summaryOperations?: {
102
+ object: string;
103
+ function: "count" | "sum" | "avg" | "min" | "max";
104
+ field: string;
105
+ } | undefined;
106
+ theme?: string | undefined;
107
+ lineNumbers?: boolean | undefined;
108
+ maxRating?: number | undefined;
109
+ allowHalf?: boolean | undefined;
110
+ displayMap?: boolean | undefined;
111
+ allowGeocoding?: boolean | undefined;
112
+ addressFormat?: "us" | "uk" | "international" | undefined;
113
+ colorFormat?: "hex" | "rgb" | "rgba" | "hsl" | undefined;
114
+ allowAlpha?: boolean | undefined;
115
+ presetColors?: string[] | undefined;
116
+ step?: number | undefined;
117
+ showValue?: boolean | undefined;
118
+ marks?: Record<string, string> | undefined;
119
+ barcodeFormat?: "qr" | "ean13" | "ean8" | "code128" | "code39" | "upca" | "upce" | undefined;
120
+ qrErrorCorrection?: "L" | "M" | "Q" | "H" | undefined;
121
+ displayValue?: boolean | undefined;
122
+ allowScanning?: boolean | undefined;
123
+ currencyConfig?: {
124
+ precision: number;
125
+ currencyMode: "dynamic" | "fixed";
126
+ defaultCurrency: string;
127
+ } | undefined;
128
+ vectorConfig?: {
129
+ dimensions: number;
130
+ distanceMetric: "cosine" | "euclidean" | "dotProduct" | "manhattan";
131
+ normalized: boolean;
132
+ indexed: boolean;
133
+ indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
134
+ } | undefined;
135
+ fileAttachmentConfig?: {
136
+ virusScan: boolean;
137
+ virusScanOnUpload: boolean;
138
+ quarantineOnThreat: boolean;
139
+ allowMultiple: boolean;
140
+ allowReplace: boolean;
141
+ allowDelete: boolean;
142
+ requireUpload: boolean;
143
+ extractMetadata: boolean;
144
+ extractText: boolean;
145
+ versioningEnabled: boolean;
146
+ publicRead: boolean;
147
+ presignedUrlExpiry: number;
148
+ minSize?: number | undefined;
149
+ maxSize?: number | undefined;
150
+ allowedTypes?: string[] | undefined;
151
+ blockedTypes?: string[] | undefined;
152
+ allowedMimeTypes?: string[] | undefined;
153
+ blockedMimeTypes?: string[] | undefined;
154
+ virusScanProvider?: "custom" | "clamav" | "virustotal" | "metadefender" | undefined;
155
+ storageProvider?: string | undefined;
156
+ storageBucket?: string | undefined;
157
+ storagePrefix?: string | undefined;
158
+ imageValidation?: {
159
+ autoRotate: boolean;
160
+ generateThumbnails: boolean;
161
+ preserveMetadata: boolean;
162
+ minWidth?: number | undefined;
163
+ maxWidth?: number | undefined;
164
+ minHeight?: number | undefined;
165
+ maxHeight?: number | undefined;
166
+ aspectRatio?: string | undefined;
167
+ thumbnailSizes?: {
168
+ name: string;
169
+ width: number;
170
+ height: number;
171
+ crop: boolean;
172
+ }[] | undefined;
173
+ } | undefined;
174
+ maxVersions?: number | undefined;
175
+ } | undefined;
176
+ maskingRule?: {
177
+ field: string;
178
+ strategy: "partial" | "hash" | "redact" | "tokenize" | "randomize" | "nullify" | "substitute";
179
+ preserveFormat: boolean;
180
+ preserveLength: boolean;
181
+ pattern?: string | undefined;
182
+ roles?: string[] | undefined;
183
+ exemptRoles?: string[] | undefined;
184
+ } | undefined;
185
+ dependencies?: string[] | undefined;
186
+ cached?: {
187
+ enabled: boolean;
188
+ ttl: number;
189
+ invalidateOn: string[];
190
+ } | undefined;
191
+ dataQuality?: {
192
+ uniqueness: boolean;
193
+ completeness: number;
194
+ accuracy?: {
195
+ source: string;
196
+ threshold: number;
197
+ } | undefined;
198
+ } | undefined;
199
+ }>;
200
+ name: string;
201
+ active: boolean;
202
+ isSystem: boolean;
203
+ abstract: boolean;
204
+ datasource: string;
205
+ search?: {
206
+ fields: string[];
207
+ displayFields?: string[] | undefined;
208
+ filters?: string[] | undefined;
209
+ } | undefined;
210
+ tags?: string[] | undefined;
211
+ label?: string | undefined;
212
+ description?: string | undefined;
213
+ pluralLabel?: string | undefined;
214
+ icon?: string | undefined;
215
+ tableName?: string | undefined;
216
+ indexes?: {
217
+ type: "hash" | "btree" | "gin" | "gist" | "fulltext";
218
+ fields: string[];
219
+ unique: boolean;
220
+ partial?: string | undefined;
221
+ name?: string | undefined;
222
+ }[] | undefined;
223
+ tenancy?: {
224
+ enabled: boolean;
225
+ strategy: "shared" | "isolated" | "hybrid";
226
+ tenantField: string;
227
+ crossTenantAccess: boolean;
228
+ } | undefined;
229
+ softDelete?: {
230
+ enabled: boolean;
231
+ field: string;
232
+ cascadeDelete: boolean;
233
+ } | undefined;
234
+ versioning?: {
235
+ enabled: boolean;
236
+ strategy: "snapshot" | "delta" | "event-sourcing";
237
+ versionField: string;
238
+ retentionDays?: number | undefined;
239
+ } | undefined;
240
+ partitioning?: {
241
+ enabled: boolean;
242
+ strategy: "hash" | "range" | "list";
243
+ key: string;
244
+ interval?: string | undefined;
245
+ } | undefined;
246
+ cdc?: {
247
+ enabled: boolean;
248
+ events: ("insert" | "update" | "delete")[];
249
+ destination: string;
250
+ } | undefined;
251
+ validations?: any[] | undefined;
252
+ titleFormat?: string | undefined;
253
+ compactLayout?: string[] | undefined;
254
+ enable?: {
255
+ searchable: boolean;
256
+ trackHistory: boolean;
257
+ apiEnabled: boolean;
258
+ files: boolean;
259
+ feeds: boolean;
260
+ activities: boolean;
261
+ trash: boolean;
262
+ mru: boolean;
263
+ clone: boolean;
264
+ apiMethods?: ("search" | "update" | "delete" | "get" | "list" | "create" | "upsert" | "bulk" | "aggregate" | "history" | "restore" | "purge" | "import" | "export")[] | undefined;
265
+ } | undefined;
266
+ } | undefined;
267
+ /**
268
+ * Helper to get the target driver
269
+ */
270
+ private getDriver;
271
+ /**
272
+ * Initialize the engine and all registered drivers
273
+ */
274
+ init(): Promise<void>;
275
+ destroy(): Promise<void>;
276
+ private toQueryAST;
277
+ find(object: string, query?: DataEngineQueryOptions): Promise<any[]>;
278
+ findOne(objectName: string, query?: DataEngineQueryOptions): Promise<any>;
279
+ insert(object: string, data: any | any[], options?: DataEngineInsertOptions): Promise<any>;
280
+ update(object: string, data: any, options?: DataEngineUpdateOptions): Promise<any>;
281
+ delete(object: string, options?: DataEngineDeleteOptions): Promise<any>;
282
+ count(object: string, query?: DataEngineCountOptions): Promise<number>;
283
+ aggregate(object: string, query: DataEngineAggregateOptions): Promise<any[]>;
284
+ execute(command: any, options?: Record<string, any>): Promise<any>;
285
+ }
286
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}