mongo-query-dsl 1.0.0

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 (59) hide show
  1. package/README.md +339 -0
  2. package/dist/examples/usage.d.ts +13 -0
  3. package/dist/examples/usage.d.ts.map +1 -0
  4. package/dist/examples/usage.js +162 -0
  5. package/dist/examples/usage.js.map +1 -0
  6. package/dist/src/__tests__/executor.test.d.ts +2 -0
  7. package/dist/src/__tests__/executor.test.d.ts.map +1 -0
  8. package/dist/src/__tests__/executor.test.js +602 -0
  9. package/dist/src/__tests__/executor.test.js.map +1 -0
  10. package/dist/src/__tests__/integration.test.d.ts +2 -0
  11. package/dist/src/__tests__/integration.test.d.ts.map +1 -0
  12. package/dist/src/__tests__/integration.test.js +320 -0
  13. package/dist/src/__tests__/integration.test.js.map +1 -0
  14. package/dist/src/__tests__/parser.test.d.ts +2 -0
  15. package/dist/src/__tests__/parser.test.d.ts.map +1 -0
  16. package/dist/src/__tests__/parser.test.js +320 -0
  17. package/dist/src/__tests__/parser.test.js.map +1 -0
  18. package/dist/src/__tests__/resolver.test.d.ts +2 -0
  19. package/dist/src/__tests__/resolver.test.d.ts.map +1 -0
  20. package/dist/src/__tests__/resolver.test.js +178 -0
  21. package/dist/src/__tests__/resolver.test.js.map +1 -0
  22. package/dist/src/errors.d.ts +26 -0
  23. package/dist/src/errors.d.ts.map +1 -0
  24. package/dist/src/errors.js +44 -0
  25. package/dist/src/errors.js.map +1 -0
  26. package/dist/src/executor.d.ts +32 -0
  27. package/dist/src/executor.d.ts.map +1 -0
  28. package/dist/src/executor.js +214 -0
  29. package/dist/src/executor.js.map +1 -0
  30. package/dist/src/index.d.ts +43 -0
  31. package/dist/src/index.d.ts.map +1 -0
  32. package/dist/src/index.js +120 -0
  33. package/dist/src/index.js.map +1 -0
  34. package/dist/src/parser.d.ts +42 -0
  35. package/dist/src/parser.d.ts.map +1 -0
  36. package/dist/src/parser.js +194 -0
  37. package/dist/src/parser.js.map +1 -0
  38. package/dist/src/resolver.d.ts +22 -0
  39. package/dist/src/resolver.d.ts.map +1 -0
  40. package/dist/src/resolver.js +55 -0
  41. package/dist/src/resolver.js.map +1 -0
  42. package/dist/src/types.d.ts +92 -0
  43. package/dist/src/types.d.ts.map +1 -0
  44. package/dist/src/types.js +3 -0
  45. package/dist/src/types.js.map +1 -0
  46. package/examples/usage.ts +190 -0
  47. package/jest.config.js +13 -0
  48. package/package.json +34 -0
  49. package/src/__tests__/executor.test.ts +694 -0
  50. package/src/__tests__/integration.test.ts +392 -0
  51. package/src/__tests__/parser.test.ts +377 -0
  52. package/src/__tests__/resolver.test.ts +218 -0
  53. package/src/errors.ts +47 -0
  54. package/src/executor.ts +276 -0
  55. package/src/index.ts +118 -0
  56. package/src/parser.ts +216 -0
  57. package/src/resolver.ts +58 -0
  58. package/src/types.ts +107 -0
  59. package/tsconfig.json +30 -0
@@ -0,0 +1,602 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executor_1 = require("../executor");
4
+ // Mock database provider
5
+ class MockDatabaseProvider {
6
+ constructor() {
7
+ this.mockData = new Map();
8
+ // Initialize with sample data
9
+ this.addData("myDb", "users", [
10
+ {
11
+ _id: "user_123",
12
+ name: "John Doe",
13
+ email: "john@example.com",
14
+ role: "admin",
15
+ },
16
+ {
17
+ _id: "user_456",
18
+ name: "Jane Smith",
19
+ email: "jane@example.com",
20
+ role: "user",
21
+ },
22
+ ]);
23
+ this.addData("myDb", "documents", [
24
+ {
25
+ _id: "doc_123",
26
+ title: "Document 1",
27
+ userId: "user_123",
28
+ content: "Sample content",
29
+ },
30
+ {
31
+ _id: "doc_456",
32
+ title: "Document 2",
33
+ userId: "user_456",
34
+ content: "Another content",
35
+ },
36
+ ]);
37
+ this.addData("myDb", "metadata", [
38
+ {
39
+ _id: "meta_123",
40
+ ownerId: "user_123",
41
+ ownerType: "users",
42
+ ownerSource: "myDb",
43
+ },
44
+ ]);
45
+ this.addData("permissions", "admin", [
46
+ { _id: "user_123", permissions: ["read", "write", "delete"] },
47
+ ]);
48
+ }
49
+ addData(db, collection, documents) {
50
+ if (!this.mockData.has(db)) {
51
+ this.mockData.set(db, new Map());
52
+ }
53
+ const dbMap = this.mockData.get(db);
54
+ dbMap.set(collection, documents);
55
+ }
56
+ async findOne(dbName, collectionName, query) {
57
+ const db = this.mockData.get(dbName);
58
+ if (!db)
59
+ return null;
60
+ const collection = db.get(collectionName);
61
+ if (!collection)
62
+ return null;
63
+ // Simple query matching
64
+ const doc = collection.find((doc) => {
65
+ return Object.entries(query).every(([key, value]) => doc[key] === value);
66
+ });
67
+ return doc || null;
68
+ }
69
+ async close() {
70
+ // Mock close
71
+ }
72
+ }
73
+ describe("QueryExecutor", () => {
74
+ let executor;
75
+ let mockProvider;
76
+ beforeEach(() => {
77
+ mockProvider = new MockDatabaseProvider();
78
+ executor = new executor_1.QueryExecutor(mockProvider);
79
+ });
80
+ describe("Basic query execution", () => {
81
+ it("should execute simple query with no steps", async () => {
82
+ const query = {
83
+ start: {
84
+ collection: "users",
85
+ db: "myDb",
86
+ where: { _id: "user_123" },
87
+ },
88
+ steps: [],
89
+ };
90
+ const result = await executor.execute(query);
91
+ expect(result.success).toBe(true);
92
+ expect(result.result).toEqual({
93
+ _id: "user_123",
94
+ name: "John Doe",
95
+ email: "john@example.com",
96
+ role: "admin",
97
+ });
98
+ });
99
+ it("should return error when document not found", async () => {
100
+ const query = {
101
+ start: {
102
+ collection: "users",
103
+ db: "myDb",
104
+ where: { _id: "nonexistent" },
105
+ },
106
+ steps: [],
107
+ };
108
+ const result = await executor.execute(query);
109
+ expect(result.success).toBe(false);
110
+ expect(result.error).toBeDefined();
111
+ expect(result.error).toContain("Document not found");
112
+ });
113
+ });
114
+ describe("GET step execution", () => {
115
+ it("should extract single field", async () => {
116
+ const query = {
117
+ output: "value",
118
+ start: {
119
+ collection: "users",
120
+ db: "myDb",
121
+ where: { _id: "user_123" },
122
+ },
123
+ steps: [{ type: "get", fields: ["name"] }],
124
+ };
125
+ const result = await executor.execute(query);
126
+ expect(result.success).toBe(true);
127
+ expect(result.result).toEqual({ name: "John Doe" });
128
+ });
129
+ it("should extract multiple fields", async () => {
130
+ const query = {
131
+ output: "value",
132
+ start: {
133
+ collection: "users",
134
+ db: "myDb",
135
+ where: { _id: "user_123" },
136
+ },
137
+ steps: [{ type: "get", fields: ["name", "email"] }],
138
+ };
139
+ const result = await executor.execute(query);
140
+ expect(result.success).toBe(true);
141
+ expect(result.result).toEqual({
142
+ name: "John Doe",
143
+ email: "john@example.com",
144
+ });
145
+ });
146
+ it("should return undefined for missing fields", async () => {
147
+ const query = {
148
+ start: {
149
+ collection: "users",
150
+ db: "myDb",
151
+ where: { _id: "user_123" },
152
+ },
153
+ steps: [{ type: "get", fields: ["name", "nonexistent"] }],
154
+ };
155
+ const result = await executor.execute(query);
156
+ expect(result.success).toBe(true);
157
+ expect(result.result).toEqual({
158
+ name: "John Doe",
159
+ nonexistent: undefined,
160
+ });
161
+ });
162
+ it("should support aliases and default values in GET", async () => {
163
+ const query = {
164
+ start: {
165
+ collection: "users",
166
+ db: "myDb",
167
+ where: { _id: "user_123" },
168
+ },
169
+ steps: [
170
+ {
171
+ type: "get",
172
+ fields: [
173
+ "name as fullName",
174
+ "email",
175
+ "missingField as fallbackCandidate",
176
+ ],
177
+ default: { fallbackCandidate: "N/A", source: "default" },
178
+ },
179
+ ],
180
+ };
181
+ const result = await executor.execute(query);
182
+ expect(result.success).toBe(true);
183
+ expect(result.result).toEqual({
184
+ source: "default",
185
+ fullName: "John Doe",
186
+ email: "john@example.com",
187
+ fallbackCandidate: undefined,
188
+ });
189
+ });
190
+ it("should resolve :field references from previous documents in GET", async () => {
191
+ const query = {
192
+ start: {
193
+ collection: "documents",
194
+ db: "myDb",
195
+ where: { _id: "doc_123" },
196
+ },
197
+ steps: [
198
+ { type: "get", fields: ["title", "userId"] },
199
+ { type: "lookup", collection: "users", db: "myDb", by: "userId" },
200
+ { type: "get", fields: ["name", ":title", ":userId"] },
201
+ ],
202
+ };
203
+ const result = await executor.execute(query);
204
+ expect(result.success).toBe(true);
205
+ expect(result.result).toEqual({
206
+ name: "John Doe",
207
+ title: "Document 1",
208
+ userId: "user_123",
209
+ });
210
+ });
211
+ it("should return single value for getOne step", async () => {
212
+ const query = {
213
+ start: {
214
+ collection: "users",
215
+ db: "myDb",
216
+ where: { _id: "user_123" },
217
+ },
218
+ steps: [{ type: "getOne", fields: "email" }],
219
+ };
220
+ const result = await executor.execute(query);
221
+ expect(result.success).toBe(true);
222
+ expect(result.result).toBe("john@example.com");
223
+ });
224
+ });
225
+ describe("LOOKUP step execution", () => {
226
+ it("should execute simple lookup", async () => {
227
+ const query = {
228
+ start: {
229
+ collection: "documents",
230
+ db: "myDb",
231
+ where: { _id: "doc_123" },
232
+ },
233
+ steps: [
234
+ { type: "lookup", collection: "users", db: "myDb", by: "userId" },
235
+ { type: "get", fields: ["name", "email"] },
236
+ ],
237
+ };
238
+ const result = await executor.execute(query);
239
+ expect(result.success).toBe(true);
240
+ expect(result.result).toEqual({
241
+ name: "John Doe",
242
+ email: "john@example.com",
243
+ });
244
+ });
245
+ it("should execute lookup with WHERE conditions", async () => {
246
+ const query = {
247
+ start: {
248
+ collection: "documents",
249
+ db: "myDb",
250
+ where: { _id: "doc_123" },
251
+ },
252
+ steps: [
253
+ {
254
+ type: "lookup",
255
+ collection: "users",
256
+ db: "myDb",
257
+ by: "userId",
258
+ where: { role: "admin" },
259
+ },
260
+ { type: "get", fields: ["name"] },
261
+ ],
262
+ };
263
+ const result = await executor.execute(query);
264
+ expect(result.success).toBe(true);
265
+ expect(result.result).toEqual({ name: "John Doe" });
266
+ });
267
+ it("should resolve dynamic values inside LOOKUP WHERE conditions", async () => {
268
+ const query = {
269
+ start: {
270
+ collection: "documents",
271
+ db: "myDb",
272
+ where: { _id: "doc_123" },
273
+ },
274
+ steps: [
275
+ { type: "get", fields: ["userId"], default: { role: "admin" } },
276
+ {
277
+ type: "lookup",
278
+ collection: "users",
279
+ db: "myDb",
280
+ by: "userId",
281
+ where: { role: ":role" },
282
+ },
283
+ { type: "get", fields: ["name", "role"] },
284
+ ],
285
+ };
286
+ const result = await executor.execute(query);
287
+ expect(result.success).toBe(true);
288
+ expect(result.result).toEqual({ name: "John Doe", role: "admin" });
289
+ });
290
+ it("should fail when lookup document not found", async () => {
291
+ const query = {
292
+ start: {
293
+ collection: "documents",
294
+ db: "myDb",
295
+ where: { _id: "doc_123" },
296
+ },
297
+ steps: [
298
+ {
299
+ type: "lookup",
300
+ collection: "users",
301
+ db: "myDb",
302
+ by: "userId",
303
+ where: { role: "superadmin" }, // No user with this role
304
+ },
305
+ ],
306
+ };
307
+ const result = await executor.execute(query);
308
+ expect(result.success).toBe(false);
309
+ expect(result.error).toContain("Document not found");
310
+ });
311
+ it("should fail when lookup field not found in document", async () => {
312
+ const query = {
313
+ start: {
314
+ collection: "documents",
315
+ db: "myDb",
316
+ where: { _id: "doc_123" },
317
+ },
318
+ steps: [
319
+ {
320
+ type: "lookup",
321
+ collection: "users",
322
+ db: "myDb",
323
+ by: "nonexistentField",
324
+ },
325
+ ],
326
+ };
327
+ const result = await executor.execute(query);
328
+ expect(result.success).toBe(false);
329
+ expect(result.error).toContain("not found in current document");
330
+ });
331
+ });
332
+ describe("Dynamic value resolution in LOOKUP", () => {
333
+ it("should resolve dynamic collection name", async () => {
334
+ const query = {
335
+ start: {
336
+ collection: "metadata",
337
+ db: "myDb",
338
+ where: { _id: "meta_123" },
339
+ },
340
+ steps: [
341
+ {
342
+ type: "lookup",
343
+ collection: ":ownerType",
344
+ db: "myDb",
345
+ by: "ownerId",
346
+ },
347
+ { type: "get", fields: ["name"] },
348
+ ],
349
+ };
350
+ const result = await executor.execute(query);
351
+ expect(result.success).toBe(true);
352
+ expect(result.result).toEqual({ name: "John Doe" });
353
+ });
354
+ it("should resolve dynamic database name", async () => {
355
+ const query = {
356
+ start: {
357
+ collection: "metadata",
358
+ db: "myDb",
359
+ where: { _id: "meta_123" },
360
+ },
361
+ steps: [
362
+ {
363
+ type: "lookup",
364
+ collection: "users",
365
+ db: ":ownerSource",
366
+ by: "ownerId",
367
+ },
368
+ { type: "get", fields: ["email"] },
369
+ ],
370
+ };
371
+ const result = await executor.execute(query);
372
+ expect(result.success).toBe(true);
373
+ expect(result.result).toEqual({ email: "john@example.com" });
374
+ });
375
+ it("should resolve both dynamic collection and database names", async () => {
376
+ const query = {
377
+ start: {
378
+ collection: "metadata",
379
+ db: "myDb",
380
+ where: { _id: "meta_123" },
381
+ },
382
+ steps: [
383
+ {
384
+ type: "lookup",
385
+ collection: ":ownerType",
386
+ db: ":ownerSource",
387
+ by: "ownerId",
388
+ },
389
+ { type: "get", fields: ["name", "role"] },
390
+ ],
391
+ };
392
+ const result = await executor.execute(query);
393
+ expect(result.success).toBe(true);
394
+ expect(result.result).toEqual({ name: "John Doe", role: "admin" });
395
+ });
396
+ });
397
+ describe("Output formats", () => {
398
+ it("should return value format by default", async () => {
399
+ const query = {
400
+ start: {
401
+ collection: "users",
402
+ db: "myDb",
403
+ where: { _id: "user_123" },
404
+ },
405
+ steps: [{ type: "get", fields: ["name"] }],
406
+ };
407
+ const result = await executor.execute(query);
408
+ expect(result.success).toBe(true);
409
+ expect(result.result).toEqual({ name: "John Doe" });
410
+ expect(result.trace).toBeUndefined();
411
+ });
412
+ it("should return value format when explicitly set", async () => {
413
+ const query = {
414
+ output: "value",
415
+ start: {
416
+ collection: "users",
417
+ db: "myDb",
418
+ where: { _id: "user_123" },
419
+ },
420
+ steps: [{ type: "get", fields: ["name"] }],
421
+ };
422
+ const result = await executor.execute(query);
423
+ expect(result.success).toBe(true);
424
+ expect(result.result).toEqual({ name: "John Doe" });
425
+ expect(result.trace).toBeUndefined();
426
+ });
427
+ it("should return document format", async () => {
428
+ const query = {
429
+ output: "document",
430
+ start: {
431
+ collection: "users",
432
+ db: "myDb",
433
+ where: { _id: "user_123" },
434
+ },
435
+ steps: [{ type: "get", fields: ["name"] }],
436
+ };
437
+ const result = await executor.execute(query);
438
+ expect(result.success).toBe(true);
439
+ expect(result.result).toEqual({ name: "John Doe" });
440
+ expect(result.trace).toBeUndefined();
441
+ });
442
+ it("should return trace format with execution trace", async () => {
443
+ const query = {
444
+ output: "trace",
445
+ start: {
446
+ collection: "users",
447
+ db: "myDb",
448
+ where: { _id: "user_123" },
449
+ },
450
+ steps: [{ type: "get", fields: ["name"] }],
451
+ };
452
+ const result = await executor.execute(query);
453
+ expect(result.success).toBe(true);
454
+ expect(result.result).toEqual({ name: "John Doe" });
455
+ expect(result.trace).toBeDefined();
456
+ expect(result.trace).toHaveLength(2); // start + get step
457
+ });
458
+ it("should include start step in trace", async () => {
459
+ const query = {
460
+ output: "trace",
461
+ start: {
462
+ collection: "users",
463
+ db: "myDb",
464
+ where: { _id: "user_123" },
465
+ },
466
+ steps: [],
467
+ };
468
+ const result = await executor.execute(query);
469
+ expect(result.trace).toBeDefined();
470
+ expect(result.trace[0]).toMatchObject({
471
+ stepNumber: 0,
472
+ stepType: "start",
473
+ collection: "users",
474
+ db: "myDb",
475
+ query: { _id: "user_123" },
476
+ });
477
+ expect(result.trace[0].documentFound).toBeDefined();
478
+ });
479
+ it("should include lookup step in trace", async () => {
480
+ const query = {
481
+ output: "trace",
482
+ start: {
483
+ collection: "documents",
484
+ db: "myDb",
485
+ where: { _id: "doc_123" },
486
+ },
487
+ steps: [
488
+ { type: "lookup", collection: "users", db: "myDb", by: "userId" },
489
+ ],
490
+ };
491
+ const result = await executor.execute(query);
492
+ expect(result.trace).toBeDefined();
493
+ expect(result.trace[1]).toMatchObject({
494
+ stepNumber: 1,
495
+ stepType: "lookup",
496
+ collection: "users",
497
+ db: "myDb",
498
+ });
499
+ });
500
+ it("should include get step in trace", async () => {
501
+ const query = {
502
+ output: "trace",
503
+ start: {
504
+ collection: "users",
505
+ db: "myDb",
506
+ where: { _id: "user_123" },
507
+ },
508
+ steps: [{ type: "get", fields: ["name", "email"] }],
509
+ };
510
+ const result = await executor.execute(query);
511
+ expect(result.trace).toBeDefined();
512
+ expect(result.trace[1]).toMatchObject({
513
+ stepNumber: 1,
514
+ stepType: "get",
515
+ fieldsExtracted: { name: "John Doe", email: "john@example.com" },
516
+ });
517
+ });
518
+ it("should include getOne step in trace", async () => {
519
+ const query = {
520
+ output: "trace",
521
+ start: {
522
+ collection: "users",
523
+ db: "myDb",
524
+ where: { _id: "user_123" },
525
+ },
526
+ steps: [{ type: "getOne", fields: "email" }],
527
+ };
528
+ const result = await executor.execute(query);
529
+ expect(result.success).toBe(true);
530
+ expect(result.result).toBe("john@example.com");
531
+ expect(result.trace).toBeDefined();
532
+ expect(result.trace[1]).toMatchObject({
533
+ stepType: "getOne",
534
+ fieldsExtracted: { email: "john@example.com" },
535
+ });
536
+ });
537
+ });
538
+ describe("Complex queries", () => {
539
+ it("should execute multi-step query", async () => {
540
+ const query = {
541
+ start: {
542
+ collection: "documents",
543
+ db: "myDb",
544
+ where: { _id: "doc_123" },
545
+ },
546
+ steps: [
547
+ { type: "get", fields: ["title", "userId"] },
548
+ { type: "lookup", collection: "users", db: "myDb", by: "userId" },
549
+ { type: "get", fields: ["name", "email"] },
550
+ ],
551
+ };
552
+ const result = await executor.execute(query);
553
+ expect(result.success).toBe(true);
554
+ expect(result.result).toEqual({
555
+ name: "John Doe",
556
+ email: "john@example.com",
557
+ });
558
+ });
559
+ it("should execute query with multiple lookups", async () => {
560
+ // Add proper test data for this scenario
561
+ mockProvider.addData("myDb", "roles", [
562
+ { _id: "admin", roleId: "role_admin", name: "Administrator" },
563
+ ]);
564
+ mockProvider.addData("permissions", "roles", [
565
+ { _id: "role_admin", permissions: ["read", "write", "delete"] },
566
+ ]);
567
+ const query = {
568
+ output: "trace",
569
+ start: {
570
+ collection: "metadata",
571
+ db: "myDb",
572
+ where: { _id: "meta_123" },
573
+ },
574
+ steps: [
575
+ {
576
+ type: "lookup",
577
+ collection: ":ownerType",
578
+ db: ":ownerSource",
579
+ by: "ownerId",
580
+ },
581
+ { type: "get", fields: ["role"] },
582
+ { type: "lookup", collection: "roles", db: "myDb", by: "role" },
583
+ { type: "get", fields: ["roleId"] },
584
+ {
585
+ type: "lookup",
586
+ collection: "roles",
587
+ db: "permissions",
588
+ by: "roleId",
589
+ },
590
+ { type: "get", fields: ["permissions"] },
591
+ ],
592
+ };
593
+ const result = await executor.execute(query);
594
+ expect(result.success).toBe(true);
595
+ expect(result.result).toEqual({
596
+ permissions: ["read", "write", "delete"],
597
+ });
598
+ expect(result.trace).toHaveLength(7); // start + 6 steps
599
+ });
600
+ });
601
+ });
602
+ //# sourceMappingURL=executor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../../src/__tests__/executor.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration.test.ts"],"names":[],"mappings":""}