@objectstack/objectql 0.8.1 → 0.8.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 +16 -0
- package/dist/engine.d.ts +5 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +6 -0
- package/dist/protocol.d.ts +1 -20
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -59
- package/package.json +4 -4
- package/src/engine.ts +7 -0
- package/src/protocol.ts +1 -72
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @objectstack/objectql
|
|
2
2
|
|
|
3
|
+
## 0.8.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 555e6a7: Refactor: Deprecated View Storage protocol in favor of Metadata Views.
|
|
8
|
+
|
|
9
|
+
- **BREAKING**: Removed `view-storage.zod.ts` and `ViewStorage` related types from `@objectstack/spec`.
|
|
10
|
+
- **BREAKING**: Removed `createView`, `updateView`, `deleteView`, `listViews` from `ObjectStackProtocol` interface.
|
|
11
|
+
- **BREAKING**: Removed in-memory View Storage implementation from `@objectstack/objectql`.
|
|
12
|
+
- **UPDATE**: `@objectstack/plugin-msw` now dynamically loads `@objectstack/objectql` to avoid hard dependencies.
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [555e6a7]
|
|
15
|
+
- @objectstack/spec@0.8.2
|
|
16
|
+
- @objectstack/core@0.8.2
|
|
17
|
+
- @objectstack/types@0.8.2
|
|
18
|
+
|
|
3
19
|
## 0.8.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HookContext } from '@objectstack/spec/data';
|
|
2
2
|
import { DataEngineQueryOptions, DataEngineInsertOptions, DataEngineUpdateOptions, DataEngineDeleteOptions, DataEngineAggregateOptions, DataEngineCountOptions } from '@objectstack/spec/data';
|
|
3
3
|
import { DriverInterface, IDataEngine, Logger } from '@objectstack/core';
|
|
4
|
+
import { SchemaRegistry } from './registry.js';
|
|
4
5
|
export type HookHandler = (context: HookContext) => Promise<void> | void;
|
|
5
6
|
/**
|
|
6
7
|
* Host Context provided to plugins (Internal ObjectQL Plugin System)
|
|
@@ -22,6 +23,10 @@ export declare class ObjectQL implements IDataEngine {
|
|
|
22
23
|
private hooks;
|
|
23
24
|
private hostContext;
|
|
24
25
|
constructor(hostContext?: Record<string, any>);
|
|
26
|
+
/**
|
|
27
|
+
* Expose the SchemaRegistry for plugins to register metadata
|
|
28
|
+
*/
|
|
29
|
+
get registry(): typeof SchemaRegistry;
|
|
25
30
|
/**
|
|
26
31
|
* Load and Register a Plugin
|
|
27
32
|
*/
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAgB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -23,6 +23,12 @@ export class ObjectQL {
|
|
|
23
23
|
this.logger = hostContext.logger || createLogger({ level: 'info', format: 'pretty' });
|
|
24
24
|
this.logger.info('ObjectQL Engine Instance Created');
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Expose the SchemaRegistry for plugins to register metadata
|
|
28
|
+
*/
|
|
29
|
+
get registry() {
|
|
30
|
+
return SchemaRegistry;
|
|
31
|
+
}
|
|
26
32
|
/**
|
|
27
33
|
* Load and Register a Plugin
|
|
28
34
|
*/
|
package/dist/protocol.d.ts
CHANGED
|
@@ -2,10 +2,8 @@ import { ObjectStackProtocol } from '@objectstack/spec/api';
|
|
|
2
2
|
import { IDataEngine } from '@objectstack/core';
|
|
3
3
|
import type { BatchUpdateRequest, BatchUpdateResponse, UpdateManyDataRequest, DeleteManyDataRequest } from '@objectstack/spec/api';
|
|
4
4
|
import type { MetadataCacheRequest, MetadataCacheResponse } from '@objectstack/spec/api';
|
|
5
|
-
import type { CreateViewRequest, UpdateViewRequest, ListViewsRequest, ViewResponse, ListViewsResponse } from '@objectstack/spec/api';
|
|
6
5
|
export declare class ObjectStackProtocolImplementation implements ObjectStackProtocol {
|
|
7
6
|
private engine;
|
|
8
|
-
private viewStorage;
|
|
9
7
|
constructor(engine: IDataEngine);
|
|
10
8
|
getDiscovery(_request: {}): Promise<{
|
|
11
9
|
version: string;
|
|
@@ -33,11 +31,7 @@ export declare class ObjectStackProtocolImplementation implements ObjectStackPro
|
|
|
33
31
|
getUiView(request: {
|
|
34
32
|
object: string;
|
|
35
33
|
type: 'list' | 'form';
|
|
36
|
-
}): Promise<
|
|
37
|
-
object: string;
|
|
38
|
-
type: "list" | "form";
|
|
39
|
-
view: any;
|
|
40
|
-
}>;
|
|
34
|
+
}): Promise<any>;
|
|
41
35
|
findData(request: {
|
|
42
36
|
object: string;
|
|
43
37
|
query?: any;
|
|
@@ -96,18 +90,5 @@ export declare class ObjectStackProtocolImplementation implements ObjectStackPro
|
|
|
96
90
|
}): Promise<any>;
|
|
97
91
|
updateManyData(_request: UpdateManyDataRequest): Promise<any>;
|
|
98
92
|
deleteManyData(request: DeleteManyDataRequest): Promise<any>;
|
|
99
|
-
createView(request: CreateViewRequest): Promise<ViewResponse>;
|
|
100
|
-
getView(request: {
|
|
101
|
-
id: string;
|
|
102
|
-
}): Promise<ViewResponse>;
|
|
103
|
-
listViews(request: ListViewsRequest): Promise<ListViewsResponse>;
|
|
104
|
-
updateView(request: UpdateViewRequest): Promise<ViewResponse>;
|
|
105
|
-
deleteView(request: {
|
|
106
|
-
id: string;
|
|
107
|
-
}): Promise<{
|
|
108
|
-
success: boolean;
|
|
109
|
-
object: string;
|
|
110
|
-
id: string;
|
|
111
|
-
}>;
|
|
112
93
|
}
|
|
113
94
|
//# sourceMappingURL=protocol.d.ts.map
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EACR,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EACR,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAmBzF,qBAAa,iCAAkC,YAAW,mBAAmB;IACzE,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAIzB,YAAY,CAAC,QAAQ,EAAE,EAAE;;;;;;IASzB,YAAY,CAAC,QAAQ,EAAE,EAAE;;;IAMzB,YAAY,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;;;;IAOtC,WAAW,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;;;;;IAQnD,SAAS,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;IA+B5D,QAAQ,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,GAAG,CAAA;KAAE;;;;;;;IAsBjD,OAAO,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;;;;;IAc/C,UAAU,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;;;;;IASjD,UAAU,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE;;;;;IAU7D,UAAU,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;;;;;IAclD,iBAAiB,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA4C/H,SAAS,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQlG,cAAc,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IASzE,cAAc,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAK7D,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;CAQrE"}
|
package/dist/protocol.js
CHANGED
|
@@ -15,7 +15,6 @@ function simpleHash(str) {
|
|
|
15
15
|
}
|
|
16
16
|
export class ObjectStackProtocolImplementation {
|
|
17
17
|
constructor(engine) {
|
|
18
|
-
this.viewStorage = new Map();
|
|
19
18
|
this.engine = engine;
|
|
20
19
|
}
|
|
21
20
|
async getDiscovery(_request) {
|
|
@@ -73,11 +72,7 @@ export class ObjectStackProtocolImplementation {
|
|
|
73
72
|
]
|
|
74
73
|
};
|
|
75
74
|
}
|
|
76
|
-
return
|
|
77
|
-
object: request.object,
|
|
78
|
-
type: request.type,
|
|
79
|
-
view
|
|
80
|
-
};
|
|
75
|
+
return view;
|
|
81
76
|
}
|
|
82
77
|
async findData(request) {
|
|
83
78
|
// TODO: Normalize query from HTTP Query params (string values) to DataEngineQueryOptions (typed)
|
|
@@ -209,57 +204,4 @@ export class ObjectStackProtocolImplementation {
|
|
|
209
204
|
...request.options
|
|
210
205
|
});
|
|
211
206
|
}
|
|
212
|
-
// ==========================================
|
|
213
|
-
// View Storage (Mock Implementation for now)
|
|
214
|
-
// ==========================================
|
|
215
|
-
async createView(request) {
|
|
216
|
-
const id = Math.random().toString(36).substring(7);
|
|
217
|
-
// Cast to unknown then SavedView to bypass strict type checks for the mock
|
|
218
|
-
const view = {
|
|
219
|
-
id,
|
|
220
|
-
...request,
|
|
221
|
-
createdAt: new Date().toISOString(),
|
|
222
|
-
updatedAt: new Date().toISOString(),
|
|
223
|
-
createdBy: 'system',
|
|
224
|
-
updatedBy: 'system'
|
|
225
|
-
};
|
|
226
|
-
this.viewStorage.set(id, view);
|
|
227
|
-
return { success: true, data: view };
|
|
228
|
-
}
|
|
229
|
-
async getView(request) {
|
|
230
|
-
const view = this.viewStorage.get(request.id);
|
|
231
|
-
if (!view)
|
|
232
|
-
throw new Error(`View ${request.id} not found`);
|
|
233
|
-
return { success: true, data: view };
|
|
234
|
-
}
|
|
235
|
-
async listViews(request) {
|
|
236
|
-
const views = Array.from(this.viewStorage.values())
|
|
237
|
-
.filter(v => !request?.object || v.object === request.object);
|
|
238
|
-
return {
|
|
239
|
-
success: true,
|
|
240
|
-
data: views,
|
|
241
|
-
pagination: {
|
|
242
|
-
total: views.length,
|
|
243
|
-
limit: request.limit || 50,
|
|
244
|
-
offset: request.offset || 0,
|
|
245
|
-
hasMore: false
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
async updateView(request) {
|
|
250
|
-
const view = this.viewStorage.get(request.id);
|
|
251
|
-
if (!view)
|
|
252
|
-
throw new Error(`View ${request.id} not found`);
|
|
253
|
-
const { id, ...updates } = request;
|
|
254
|
-
// Cast to unknown then SavedView to bypass strict type checks for the mock
|
|
255
|
-
const updated = { ...view, ...updates, updatedAt: new Date().toISOString() };
|
|
256
|
-
this.viewStorage.set(request.id, updated);
|
|
257
|
-
return { success: true, data: updated };
|
|
258
|
-
}
|
|
259
|
-
async deleteView(request) {
|
|
260
|
-
const deleted = this.viewStorage.delete(request.id);
|
|
261
|
-
if (!deleted)
|
|
262
|
-
throw new Error(`View ${request.id} not found`);
|
|
263
|
-
return { success: true, object: 'view', id: request.id };
|
|
264
|
-
}
|
|
265
207
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectstack/objectql",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"description": "Isomorphic ObjectQL Engine for ObjectStack",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@objectstack/core": "0.8.
|
|
9
|
-
"@objectstack/spec": "0.8.
|
|
10
|
-
"@objectstack/types": "0.8.
|
|
8
|
+
"@objectstack/core": "0.8.2",
|
|
9
|
+
"@objectstack/spec": "0.8.2",
|
|
10
|
+
"@objectstack/types": "0.8.2"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"typescript": "^5.0.0",
|
package/src/engine.ts
CHANGED
|
@@ -50,6 +50,13 @@ export class ObjectQL implements IDataEngine {
|
|
|
50
50
|
this.logger.info('ObjectQL Engine Instance Created');
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Expose the SchemaRegistry for plugins to register metadata
|
|
55
|
+
*/
|
|
56
|
+
get registry() {
|
|
57
|
+
return SchemaRegistry;
|
|
58
|
+
}
|
|
59
|
+
|
|
53
60
|
/**
|
|
54
61
|
* Load and Register a Plugin
|
|
55
62
|
*/
|
package/src/protocol.ts
CHANGED
|
@@ -7,14 +7,6 @@ import type {
|
|
|
7
7
|
DeleteManyDataRequest
|
|
8
8
|
} from '@objectstack/spec/api';
|
|
9
9
|
import type { MetadataCacheRequest, MetadataCacheResponse } from '@objectstack/spec/api';
|
|
10
|
-
import type {
|
|
11
|
-
CreateViewRequest,
|
|
12
|
-
UpdateViewRequest,
|
|
13
|
-
ListViewsRequest,
|
|
14
|
-
ViewResponse,
|
|
15
|
-
ListViewsResponse,
|
|
16
|
-
SavedView
|
|
17
|
-
} from '@objectstack/spec/api';
|
|
18
10
|
|
|
19
11
|
// We import SchemaRegistry directly since this class lives in the same package
|
|
20
12
|
import { SchemaRegistry } from './registry.js';
|
|
@@ -35,7 +27,6 @@ function simpleHash(str: string): string {
|
|
|
35
27
|
|
|
36
28
|
export class ObjectStackProtocolImplementation implements ObjectStackProtocol {
|
|
37
29
|
private engine: IDataEngine;
|
|
38
|
-
private viewStorage: Map<string, SavedView> = new Map();
|
|
39
30
|
|
|
40
31
|
constructor(engine: IDataEngine) {
|
|
41
32
|
this.engine = engine;
|
|
@@ -99,11 +90,7 @@ export class ObjectStackProtocolImplementation implements ObjectStackProtocol {
|
|
|
99
90
|
]
|
|
100
91
|
};
|
|
101
92
|
}
|
|
102
|
-
return
|
|
103
|
-
object: request.object,
|
|
104
|
-
type: request.type,
|
|
105
|
-
view
|
|
106
|
-
};
|
|
93
|
+
return view;
|
|
107
94
|
}
|
|
108
95
|
|
|
109
96
|
async findData(request: { object: string, query?: any }) {
|
|
@@ -249,62 +236,4 @@ export class ObjectStackProtocolImplementation implements ObjectStackProtocol {
|
|
|
249
236
|
});
|
|
250
237
|
}
|
|
251
238
|
|
|
252
|
-
// ==========================================
|
|
253
|
-
// View Storage (Mock Implementation for now)
|
|
254
|
-
// ==========================================
|
|
255
|
-
|
|
256
|
-
async createView(request: CreateViewRequest): Promise<ViewResponse> {
|
|
257
|
-
const id = Math.random().toString(36).substring(7);
|
|
258
|
-
// Cast to unknown then SavedView to bypass strict type checks for the mock
|
|
259
|
-
const view: SavedView = {
|
|
260
|
-
id,
|
|
261
|
-
...request,
|
|
262
|
-
createdAt: new Date().toISOString(),
|
|
263
|
-
updatedAt: new Date().toISOString(),
|
|
264
|
-
createdBy: 'system',
|
|
265
|
-
updatedBy: 'system'
|
|
266
|
-
} as unknown as SavedView;
|
|
267
|
-
|
|
268
|
-
this.viewStorage.set(id, view);
|
|
269
|
-
return { success: true, data: view };
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
async getView(request: { id: string }): Promise<ViewResponse> {
|
|
273
|
-
const view = this.viewStorage.get(request.id);
|
|
274
|
-
if (!view) throw new Error(`View ${request.id} not found`);
|
|
275
|
-
return { success: true, data: view };
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
async listViews(request: ListViewsRequest): Promise<ListViewsResponse> {
|
|
279
|
-
const views = Array.from(this.viewStorage.values())
|
|
280
|
-
.filter(v => !request?.object || v.object === request.object);
|
|
281
|
-
|
|
282
|
-
return {
|
|
283
|
-
success: true,
|
|
284
|
-
data: views,
|
|
285
|
-
pagination: {
|
|
286
|
-
total: views.length,
|
|
287
|
-
limit: request.limit || 50,
|
|
288
|
-
offset: request.offset || 0,
|
|
289
|
-
hasMore: false
|
|
290
|
-
}
|
|
291
|
-
};
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
async updateView(request: UpdateViewRequest): Promise<ViewResponse> {
|
|
295
|
-
const view = this.viewStorage.get(request.id);
|
|
296
|
-
if (!view) throw new Error(`View ${request.id} not found`);
|
|
297
|
-
|
|
298
|
-
const { id, ...updates } = request;
|
|
299
|
-
// Cast to unknown then SavedView to bypass strict type checks for the mock
|
|
300
|
-
const updated = { ...view, ...updates, updatedAt: new Date().toISOString() } as unknown as SavedView;
|
|
301
|
-
this.viewStorage.set(request.id, updated);
|
|
302
|
-
return { success: true, data: updated };
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
async deleteView(request: { id: string }): Promise<{ success: boolean, object: string, id: string }> {
|
|
306
|
-
const deleted = this.viewStorage.delete(request.id);
|
|
307
|
-
if (!deleted) throw new Error(`View ${request.id} not found`);
|
|
308
|
-
return { success: true, object: 'view', id: request.id };
|
|
309
|
-
}
|
|
310
239
|
}
|