@objectstack/objectql 0.6.1 → 0.7.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @objectstack/objectql
2
2
 
3
+ ## 0.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - fb41cc0: Patch release: Updated documentation and JSON schemas
8
+ - Updated dependencies [fb41cc0]
9
+ - @objectstack/spec@0.7.2
10
+ - @objectstack/core@0.7.2
11
+ - @objectstack/types@0.7.2
12
+
13
+ ## 0.7.1
14
+
15
+ ### Patch Changes
16
+
17
+ - Patch release for maintenance and stability improvements
18
+ - Updated dependencies
19
+ - @objectstack/spec@0.7.1
20
+ - @objectstack/types@0.7.1
21
+ - @objectstack/core@0.7.1
22
+
3
23
  ## 0.6.1
4
24
 
5
25
  ### Patch Changes
package/dist/engine.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import { HookContext } from '@objectstack/spec/data';
2
- import { DriverOptions } from '@objectstack/spec/system';
3
- import { DriverInterface, IDataEngine, DataEngineQueryOptions } from '@objectstack/core';
2
+ import { DataEngineQueryOptions, DataEngineInsertOptions, DataEngineUpdateOptions, DataEngineDeleteOptions, DataEngineAggregateOptions, DataEngineCountOptions } from '@objectstack/spec/data';
3
+ import { DriverInterface, IDataEngine, Logger } from '@objectstack/core';
4
4
  export type HookHandler = (context: HookContext) => Promise<void> | void;
5
5
  /**
6
6
  * Host Context provided to plugins (Internal ObjectQL Plugin System)
7
7
  */
8
8
  export interface ObjectQLHostContext {
9
9
  ql: ObjectQL;
10
- logger: Console;
10
+ logger: Logger;
11
11
  [key: string]: any;
12
12
  }
13
13
  /**
@@ -18,6 +18,7 @@ export interface ObjectQLHostContext {
18
18
  export declare class ObjectQL implements IDataEngine {
19
19
  private drivers;
20
20
  private defaultDriver;
21
+ private logger;
21
22
  private hooks;
22
23
  private hostContext;
23
24
  constructor(hostContext?: Record<string, any>);
@@ -32,7 +33,10 @@ export declare class ObjectQL implements IDataEngine {
32
33
  */
33
34
  registerHook(event: string, handler: HookHandler): void;
34
35
  triggerHooks(event: string, context: HookContext): Promise<void>;
35
- registerApp(manifestPart: any): void;
36
+ /**
37
+ * Register contribution (Manifest)
38
+ */
39
+ registerApp(manifest: any): void;
36
40
  /**
37
41
  * Register a new storage driver
38
42
  */
@@ -42,12 +46,13 @@ export declare class ObjectQL implements IDataEngine {
42
46
  */
43
47
  getSchema(objectName: string): {
44
48
  fields: Record<string, {
45
- type: "number" | "boolean" | "code" | "date" | "text" | "textarea" | "email" | "url" | "phone" | "password" | "markdown" | "html" | "richtext" | "currency" | "percent" | "datetime" | "time" | "toggle" | "select" | "multiselect" | "radio" | "checkboxes" | "lookup" | "master_detail" | "tree" | "image" | "file" | "avatar" | "video" | "audio" | "formula" | "summary" | "autonumber" | "location" | "address" | "json" | "color" | "rating" | "slider" | "signature" | "qrcode" | "progress" | "tags" | "vector";
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";
46
50
  required: boolean;
47
51
  searchable: boolean;
48
52
  multiple: boolean;
49
53
  unique: boolean;
50
54
  deleteBehavior: "set_null" | "cascade" | "restrict";
55
+ auditTrail: boolean;
51
56
  hidden: boolean;
52
57
  readonly: boolean;
53
58
  encryption: boolean;
@@ -59,28 +64,45 @@ export declare class ObjectQL implements IDataEngine {
59
64
  color?: string | undefined;
60
65
  default?: boolean | undefined;
61
66
  }[] | undefined;
67
+ expression?: string | undefined;
68
+ defaultValue?: any;
62
69
  min?: number | undefined;
63
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;
64
89
  formula?: string | undefined;
65
90
  label?: string | undefined;
66
91
  precision?: number | undefined;
67
92
  name?: string | undefined;
68
93
  description?: string | undefined;
69
94
  format?: string | undefined;
70
- defaultValue?: any;
71
95
  maxLength?: number | undefined;
72
96
  minLength?: number | undefined;
73
97
  scale?: number | undefined;
74
98
  reference?: string | undefined;
75
99
  referenceFilters?: string[] | undefined;
76
100
  writeRequiresMasterRead?: boolean | undefined;
77
- expression?: string | undefined;
78
101
  summaryOperations?: {
79
102
  object: string;
80
103
  function: "count" | "sum" | "avg" | "min" | "max";
81
104
  field: string;
82
105
  } | undefined;
83
- language?: string | undefined;
84
106
  theme?: string | undefined;
85
107
  lineNumbers?: boolean | undefined;
86
108
  maxRating?: number | undefined;
@@ -110,29 +132,122 @@ export declare class ObjectQL implements IDataEngine {
110
132
  indexed: boolean;
111
133
  indexType?: "flat" | "hnsw" | "ivfflat" | undefined;
112
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;
113
199
  }>;
114
200
  name: string;
115
201
  active: boolean;
116
202
  isSystem: boolean;
117
203
  abstract: boolean;
118
204
  datasource: string;
119
- tags?: string[] | undefined;
120
- label?: string | undefined;
121
- description?: string | undefined;
122
205
  search?: {
123
206
  fields: string[];
124
207
  displayFields?: string[] | undefined;
125
208
  filters?: string[] | undefined;
126
209
  } | undefined;
210
+ tags?: string[] | undefined;
211
+ label?: string | undefined;
212
+ description?: string | undefined;
127
213
  pluralLabel?: string | undefined;
128
214
  icon?: string | undefined;
129
215
  tableName?: string | undefined;
130
216
  indexes?: {
217
+ type: "hash" | "btree" | "gin" | "gist" | "fulltext";
131
218
  fields: string[];
132
- type?: "hash" | "btree" | "gin" | "gist" | undefined;
219
+ unique: boolean;
220
+ partial?: string | undefined;
133
221
  name?: string | undefined;
134
- unique?: boolean | undefined;
135
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;
136
251
  validations?: any[] | undefined;
137
252
  titleFormat?: string | undefined;
138
253
  compactLayout?: string[] | undefined;
@@ -146,7 +261,7 @@ export declare class ObjectQL implements IDataEngine {
146
261
  trash: boolean;
147
262
  mru: boolean;
148
263
  clone: boolean;
149
- apiMethods?: ("update" | "delete" | "get" | "list" | "create" | "upsert" | "bulk" | "aggregate" | "history" | "search" | "restore" | "purge" | "import" | "export")[] | undefined;
264
+ apiMethods?: ("search" | "update" | "delete" | "get" | "list" | "create" | "upsert" | "bulk" | "aggregate" | "history" | "restore" | "purge" | "import" | "export")[] | undefined;
150
265
  } | undefined;
151
266
  } | undefined;
152
267
  /**
@@ -158,39 +273,14 @@ export declare class ObjectQL implements IDataEngine {
158
273
  */
159
274
  init(): Promise<void>;
160
275
  destroy(): Promise<void>;
161
- /**
162
- * Find records matching a query (IDataEngine interface)
163
- *
164
- * @param object - Object name
165
- * @param query - Query options (IDataEngine format)
166
- * @returns Promise resolving to array of records
167
- */
276
+ private toQueryAST;
168
277
  find(object: string, query?: DataEngineQueryOptions): Promise<any[]>;
169
- findOne(object: string, idOrQuery: string | any, options?: DriverOptions): Promise<any>;
170
- /**
171
- * Insert a new record (IDataEngine interface)
172
- *
173
- * @param object - Object name
174
- * @param data - Data to insert
175
- * @returns Promise resolving to the created record
176
- */
177
- insert(object: string, data: any): Promise<any>;
178
- /**
179
- * Update a record by ID (IDataEngine interface)
180
- *
181
- * @param object - Object name
182
- * @param id - Record ID
183
- * @param data - Updated data
184
- * @returns Promise resolving to the updated record
185
- */
186
- update(object: string, id: any, data: any): Promise<any>;
187
- /**
188
- * Delete a record by ID (IDataEngine interface)
189
- *
190
- * @param object - Object name
191
- * @param id - Record ID
192
- * @returns Promise resolving to true if deleted, false otherwise
193
- */
194
- delete(object: string, id: any): Promise<boolean>;
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>;
195
285
  }
196
286
  //# sourceMappingURL=engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}