@procedures/mongo 0.2.2 → 0.3.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 (53) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +74 -3
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/index.d.ts +2 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/module.d.ts.map +1 -1
  8. package/dist/module.js +9 -0
  9. package/dist/module.js.map +1 -1
  10. package/dist/procedures/documents.aggregate.d.ts +5 -0
  11. package/dist/procedures/documents.aggregate.d.ts.map +1 -1
  12. package/dist/procedures/documents.aggregate.js +36 -3
  13. package/dist/procedures/documents.aggregate.js.map +1 -1
  14. package/dist/procedures/documents.bulk.d.ts +42 -0
  15. package/dist/procedures/documents.bulk.d.ts.map +1 -0
  16. package/dist/procedures/documents.bulk.js +159 -0
  17. package/dist/procedures/documents.bulk.js.map +1 -0
  18. package/dist/procedures/documents.distinct.d.ts +22 -0
  19. package/dist/procedures/documents.distinct.d.ts.map +1 -0
  20. package/dist/procedures/documents.distinct.js +33 -0
  21. package/dist/procedures/documents.distinct.js.map +1 -0
  22. package/dist/procedures/documents.explain.d.ts +41 -0
  23. package/dist/procedures/documents.explain.d.ts.map +1 -0
  24. package/dist/procedures/documents.explain.js +111 -0
  25. package/dist/procedures/documents.explain.js.map +1 -0
  26. package/dist/procedures/index.d.ts +4 -0
  27. package/dist/procedures/index.d.ts.map +1 -1
  28. package/dist/procedures/index.js +5 -0
  29. package/dist/procedures/index.js.map +1 -1
  30. package/dist/procedures/watch.d.ts +59 -0
  31. package/dist/procedures/watch.d.ts.map +1 -0
  32. package/dist/procedures/watch.js +149 -0
  33. package/dist/procedures/watch.js.map +1 -0
  34. package/dist/procedures.types.d.ts +24 -3
  35. package/dist/procedures.types.d.ts.map +1 -1
  36. package/dist/storage/mongo-storage.d.ts +1 -0
  37. package/dist/storage/mongo-storage.d.ts.map +1 -1
  38. package/dist/storage/mongo-storage.js +4 -0
  39. package/dist/storage/mongo-storage.js.map +1 -1
  40. package/dist/types.d.ts +20 -2
  41. package/dist/types.d.ts.map +1 -1
  42. package/package.json +4 -4
  43. package/src/index.ts +10 -0
  44. package/src/module.ts +9 -0
  45. package/src/procedures/documents.aggregate.ts +34 -3
  46. package/src/procedures/documents.bulk.ts +192 -0
  47. package/src/procedures/documents.distinct.ts +57 -0
  48. package/src/procedures/documents.explain.ts +144 -0
  49. package/src/procedures/index.ts +6 -0
  50. package/src/procedures/watch.ts +184 -0
  51. package/src/procedures.types.ts +25 -0
  52. package/src/storage/mongo-storage.ts +5 -0
  53. package/src/types.ts +22 -2
@@ -14,6 +14,10 @@ export { updateProcedure } from "./documents.update.js";
14
14
  export { deleteProcedure } from "./documents.delete.js";
15
15
  export { countProcedure } from "./documents.count.js";
16
16
  export { aggregateProcedure } from "./documents.aggregate.js";
17
+ export { distinctProcedure } from "./documents.distinct.js";
18
+ export { bulkProcedure } from "./documents.bulk.js";
19
+ export { explainProcedure } from "./documents.explain.js";
20
+ export { watchProcedure } from "./watch.js";
17
21
  export { listIndexesProcedure } from "./indexes.list.js";
18
22
  export { createIndexProcedure } from "./indexes.create.js";
19
23
  export { dropIndexProcedure } from "./indexes.drop.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/procedures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/procedures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
@@ -17,6 +17,11 @@ export { updateProcedure } from "./documents.update.js";
17
17
  export { deleteProcedure } from "./documents.delete.js";
18
18
  export { countProcedure } from "./documents.count.js";
19
19
  export { aggregateProcedure } from "./documents.aggregate.js";
20
+ export { distinctProcedure } from "./documents.distinct.js";
21
+ export { bulkProcedure } from "./documents.bulk.js";
22
+ export { explainProcedure } from "./documents.explain.js";
23
+ // Change streams
24
+ export { watchProcedure } from "./watch.js";
20
25
  // Index procedures
21
26
  export { listIndexesProcedure } from "./indexes.list.js";
22
27
  export { createIndexProcedure } from "./indexes.create.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/procedures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,wBAAwB;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/procedures/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,wBAAwB;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,iBAAiB;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Procedure: mongo.watch (roadmap R44)
3
+ * The changes of a collection or of a database, as a stream (a change stream)
4
+ *
5
+ * The stream has no end (`metadata.stream: { unbounded: true }`). It stops when the reader stops
6
+ * or the signal of the call aborts: the procedure then closes the change stream. A change stream
7
+ * needs a replica set or a sharded cluster: a server without one refuses it.
8
+ */
9
+ import { type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
10
+ import type { Document } from "mongodb";
11
+ import { type ScopeInput } from "../scope.js";
12
+ type FullDocument = "default" | "updateLookup" | "whenAvailable" | "required";
13
+ interface WatchInput extends ScopeInput {
14
+ /** The stages after the change stream stage: $match, $project and the other stages it accepts */
15
+ pipeline?: Document[];
16
+ /** The full document of an update: "default" (none), "updateLookup", "whenAvailable" or "required" */
17
+ fullDocument?: FullDocument;
18
+ /** The resume token of an earlier change: the stream starts after it */
19
+ resumeAfter?: string;
20
+ }
21
+ /** One change: an item of the stream. */
22
+ interface WatchChange {
23
+ /** insert, update, replace, delete, drop, rename, dropDatabase or invalidate */
24
+ operationType: string;
25
+ /** The database and the collection of the change */
26
+ ns?: {
27
+ db: string;
28
+ coll?: string | undefined;
29
+ } | undefined;
30
+ /** The _id of the changed document */
31
+ documentKey?: Record<string, unknown> | undefined;
32
+ /** The document of an insert or a replace (and of an update with fullDocument) */
33
+ fullDocument?: Record<string, unknown> | null | undefined;
34
+ /** The changed and removed fields of an update */
35
+ updateDescription?: Record<string, unknown> | undefined;
36
+ /** The time of the change on the server (ISO 8601), from MongoDB 6.0 */
37
+ wallTime?: string | undefined;
38
+ /** The resume token of the change: resumeAfter takes it */
39
+ resumeToken: string;
40
+ }
41
+ /** This function checks the input of a watch. */
42
+ export declare function parseWatchInput(data: unknown): WatchInput;
43
+ /** The item of one change event of the driver. */
44
+ export declare function toWatchChange(event: Document): WatchChange;
45
+ /**
46
+ * The changes, as a stream. The change stream closes when the reader stops (the `finally` of the
47
+ * generator) or when the signal aborts (the close ends the wait for the next change).
48
+ */
49
+ export declare function watchChanges(input: WatchInput, ctx: ProcedureContext): AsyncGenerator<WatchChange, void, undefined>;
50
+ export declare const watchProcedure: Procedure<WatchInput, WatchChange, {
51
+ description: string;
52
+ effects?: Effects;
53
+ stream?: {
54
+ unbounded?: boolean;
55
+ };
56
+ output?: string;
57
+ }>;
58
+ export type { WatchInput, WatchChange };
59
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/procedures/watch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA+B,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,KAAK,EAAqC,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE3E,OAAO,EAAuD,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAMnG,KAAK,YAAY,GAAG,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,UAAU,CAAC;AAI9E,UAAU,UAAW,SAAQ,UAAU;IACrC,iGAAiG;IACjG,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,sGAAsG;IACtG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,yCAAyC;AACzC,UAAU,WAAW;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,EAAE,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3D,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAClD,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;CACrB;AASD,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CA6BzD;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,CAY1D;AAED;;;GAGG;AACH,wBAAuB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,gBAAgB,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CA+B1H;AAyBD,eAAO,MAAM,cAAc,EAAE,SAAS,CACpC,UAAU,EACV,WAAW,EACX;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAerF,CAAC;AAEX,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Procedure: mongo.watch (roadmap R44)
3
+ * The changes of a collection or of a database, as a stream (a change stream)
4
+ *
5
+ * The stream has no end (`metadata.stream: { unbounded: true }`). It stops when the reader stops
6
+ * or the signal of the call aborts: the procedure then closes the change stream. A change stream
7
+ * needs a replica set or a sharded cluster: a server without one refuses it.
8
+ */
9
+ import { createProcedure, zodAdapter } from "@procedures/client";
10
+ import { z } from "zod";
11
+ import { collectionFor, databaseFor, copyScope, SCOPE_FIELDS } from "../scope.js";
12
+ import { described, documentObject } from "./input-schemas.js";
13
+ /** The stages that a change stream accepts after its own stage. */
14
+ const CHANGE_STREAM_STAGES = ["$match", "$project", "$addFields", "$set", "$unset", "$replaceRoot", "$replaceWith", "$redact"];
15
+ const FULL_DOCUMENT = ["default", "updateLookup", "whenAvailable", "required"];
16
+ const PROCEDURE = "mongo.watch";
17
+ const INPUT_FIELDS = new Set(["pipeline", "fullDocument", "resumeAfter", ...SCOPE_FIELDS]);
18
+ function isPlainObject(value) {
19
+ return typeof value === "object" && value !== null && !Array.isArray(value);
20
+ }
21
+ /** This function checks the input of a watch. */
22
+ export function parseWatchInput(data) {
23
+ if (!isPlainObject(data))
24
+ throw new Error(`${PROCEDURE}: input must be an object`);
25
+ for (const key of Object.keys(data)) {
26
+ if (!INPUT_FIELDS.has(key))
27
+ throw new Error(`${PROCEDURE}: unknown field "${key}". The fields are: ${[...INPUT_FIELDS].join(", ")}`);
28
+ }
29
+ const result = {};
30
+ copyScope(data, result);
31
+ const pipeline = data["pipeline"];
32
+ if (pipeline !== undefined) {
33
+ if (!Array.isArray(pipeline))
34
+ throw new Error(`${PROCEDURE}: pipeline must be a list of stages`);
35
+ for (const [index, stage] of pipeline.entries()) {
36
+ const names = isPlainObject(stage) ? Object.keys(stage) : [];
37
+ if (names.length !== 1 || !CHANGE_STREAM_STAGES.includes(names[0])) {
38
+ throw new Error(`${PROCEDURE}: pipeline[${index}] must be one stage of ${CHANGE_STREAM_STAGES.join(", ")}`);
39
+ }
40
+ }
41
+ result.pipeline = pipeline;
42
+ }
43
+ const fullDocument = data["fullDocument"];
44
+ if (fullDocument !== undefined) {
45
+ if (!FULL_DOCUMENT.includes(fullDocument))
46
+ throw new Error(`${PROCEDURE}: fullDocument must be ${FULL_DOCUMENT.join(", ")}`);
47
+ result.fullDocument = fullDocument;
48
+ }
49
+ const resumeAfter = data["resumeAfter"];
50
+ if (resumeAfter !== undefined) {
51
+ if (typeof resumeAfter !== "string" || resumeAfter.length === 0)
52
+ throw new Error(`${PROCEDURE}: resumeAfter must be a resume token (text)`);
53
+ result.resumeAfter = resumeAfter;
54
+ }
55
+ return result;
56
+ }
57
+ /** The item of one change event of the driver. */
58
+ export function toWatchChange(event) {
59
+ const id = event["_id"];
60
+ const change = {
61
+ operationType: String(event["operationType"]),
62
+ resumeToken: typeof id?._data === "string" ? id._data : JSON.stringify(id ?? null),
63
+ };
64
+ if (isPlainObject(event["ns"]))
65
+ change.ns = event["ns"];
66
+ if (isPlainObject(event["documentKey"]))
67
+ change.documentKey = event["documentKey"];
68
+ if (event["fullDocument"] !== undefined)
69
+ change.fullDocument = event["fullDocument"];
70
+ if (isPlainObject(event["updateDescription"]))
71
+ change.updateDescription = event["updateDescription"];
72
+ if (event["wallTime"] instanceof Date)
73
+ change.wallTime = event["wallTime"].toISOString();
74
+ return change;
75
+ }
76
+ /**
77
+ * The changes, as a stream. The change stream closes when the reader stops (the `finally` of the
78
+ * generator) or when the signal aborts (the close ends the wait for the next change).
79
+ */
80
+ export async function* watchChanges(input, ctx) {
81
+ const options = {};
82
+ if (input.fullDocument)
83
+ options.fullDocument = input.fullDocument;
84
+ if (input.resumeAfter)
85
+ options.resumeAfter = { _data: input.resumeAfter };
86
+ const pipeline = input.pipeline ?? [];
87
+ const stream = input.collection !== undefined || ctx.metadata["collection"] !== undefined
88
+ ? (await collectionFor(input, ctx)).collection.watch(pipeline, options)
89
+ : (await databaseFor(input, ctx)).watch(pipeline, options);
90
+ const signal = ctx.signal;
91
+ // True when the signal closed the change stream. The driver also closes it before it throws a
92
+ // failure (a server without a replica set): that error goes to the reader.
93
+ let stopped = false;
94
+ const close = () => {
95
+ stopped = true;
96
+ stream.close().catch(() => undefined);
97
+ };
98
+ signal?.addEventListener("abort", close, { once: true });
99
+ try {
100
+ if (signal?.aborted)
101
+ return;
102
+ for await (const event of stream) {
103
+ yield toWatchChange(event);
104
+ }
105
+ }
106
+ catch (error) {
107
+ // The abort of the call ends the stream without an error
108
+ if (stopped)
109
+ return;
110
+ throw error;
111
+ }
112
+ finally {
113
+ signal?.removeEventListener("abort", close);
114
+ await stream.close().catch(() => undefined);
115
+ }
116
+ }
117
+ // Schemas
118
+ const watchInputSchema = described(parseWatchInput, z.object({
119
+ collection: z.string().min(1).optional().describe("The collection to watch. Without it, the stream gives the changes of the database."),
120
+ database: z.string().min(1).optional().describe("The database name (default: the database of the connection)"),
121
+ pipeline: z.array(documentObject()).optional().describe("Stages after the change stream stage: $match, $project, $addFields, $set, $unset, $replaceRoot, $replaceWith, $redact"),
122
+ fullDocument: z.enum(["default", "updateLookup", "whenAvailable", "required"]).optional().describe("The full document of an update: updateLookup reads it (default: none)"),
123
+ resumeAfter: z.string().min(1).optional().describe("The resume token of an earlier change: the stream starts after it"),
124
+ }));
125
+ const watchOutputSchema = zodAdapter(z.looseObject({
126
+ operationType: z.string().describe("insert, update, replace, delete, drop, rename, dropDatabase or invalidate"),
127
+ ns: z.looseObject({ db: z.string(), coll: z.string().optional() }).optional().describe("The database and the collection of the change"),
128
+ documentKey: z.record(z.string(), z.unknown()).optional().describe("The _id of the changed document"),
129
+ fullDocument: z.record(z.string(), z.unknown()).nullable().optional().describe("The document of an insert or a replace, and of an update with fullDocument"),
130
+ updateDescription: z.record(z.string(), z.unknown()).optional().describe("The changed and removed fields of an update"),
131
+ wallTime: z.string().optional().describe("The time of the change on the server (ISO 8601), from MongoDB 6.0"),
132
+ resumeToken: z.string().describe("The resume token of the change: resumeAfter takes it"),
133
+ }));
134
+ export const watchProcedure = createProcedure()
135
+ .path(["mongo", "watch"])
136
+ .input(watchInputSchema)
137
+ .output(watchOutputSchema)
138
+ .meta({
139
+ description: "The changes of a collection or a database, as a stream without an end (a change stream needs a replica set)",
140
+ effects: { reads: ["mongo", "network"], writes: [] },
141
+ // The stream has no end: it stops when the reader stops (roadmap R15)
142
+ stream: { unbounded: true },
143
+ output: "streaming",
144
+ })
145
+ // invokeProcedure reads a returned async iterable as a stream: the handler types of the core do
146
+ // not describe that case
147
+ .handler(((input, ctx) => watchChanges(input, ctx)))
148
+ .build();
149
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/procedures/watch.ts"],"names":[],"mappings":"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"}
@@ -34,10 +34,14 @@ import type { UpdateInput, UpdateOutput } from "./procedures/documents.update.js
34
34
  import type { DeleteInput, DeleteOutput } from "./procedures/documents.delete.js";
35
35
  import type { CountInput, CountOutput } from "./procedures/documents.count.js";
36
36
  import type { AggregateInput, AggregateOutput } from "./procedures/documents.aggregate.js";
37
+ import type { DistinctInput, DistinctOutput } from "./procedures/documents.distinct.js";
38
+ import type { BulkInput, BulkOutput } from "./procedures/documents.bulk.js";
39
+ import type { ExplainInput, ExplainOutput } from "./procedures/documents.explain.js";
40
+ import type { WatchInput, WatchChange } from "./procedures/watch.js";
37
41
  import type { ListIndexesInput, ListIndexesOutput } from "./procedures/indexes.list.js";
38
42
  import type { CreateIndexInput, CreateIndexOutput } from "./procedures/indexes.create.js";
39
43
  import type { DropIndexInput, DropIndexOutput } from "./procedures/indexes.drop.js";
40
- export type { PingInput, PingOutput, InfoInput, ListCollectionsInput, ListCollectionsOutput, CreateCollectionInput, CreateCollectionOutput, DropCollectionInput, DropCollectionOutput, StatsInput, FindInput, FindOutput, GetInput, GetOutput, InsertInput, InsertOutput, UpdateInput, UpdateOutput, DeleteInput, DeleteOutput, CountInput, CountOutput, AggregateInput, AggregateOutput, ListIndexesInput, ListIndexesOutput, CreateIndexInput, CreateIndexOutput, DropIndexInput, DropIndexOutput, };
44
+ export type { PingInput, PingOutput, InfoInput, ListCollectionsInput, ListCollectionsOutput, CreateCollectionInput, CreateCollectionOutput, DropCollectionInput, DropCollectionOutput, StatsInput, FindInput, FindOutput, GetInput, GetOutput, InsertInput, InsertOutput, UpdateInput, UpdateOutput, DeleteInput, DeleteOutput, CountInput, CountOutput, AggregateInput, AggregateOutput, DistinctInput, DistinctOutput, BulkInput, BulkOutput, ExplainInput, ExplainOutput, WatchInput, WatchChange, ListIndexesInput, ListIndexesOutput, CreateIndexInput, CreateIndexOutput, DropIndexInput, DropIndexOutput, };
41
45
  /**
42
46
  * Typed interface for all MongoDB procedures.
43
47
  * Use with createTypedCaller for compile-time autocomplete.
@@ -101,6 +105,18 @@ export interface MongoProcedures {
101
105
  input: AggregateInput;
102
106
  output: AggregateOutput;
103
107
  };
108
+ distinct: {
109
+ input: DistinctInput;
110
+ output: DistinctOutput;
111
+ };
112
+ bulk: {
113
+ input: BulkInput;
114
+ output: BulkOutput;
115
+ };
116
+ explain: {
117
+ input: ExplainInput;
118
+ output: ExplainOutput;
119
+ };
104
120
  };
105
121
  indexes: {
106
122
  list: {
@@ -116,14 +132,19 @@ export interface MongoProcedures {
116
132
  output: DropIndexOutput;
117
133
  };
118
134
  };
135
+ /** A stream: the output is the type of one item */
136
+ watch: {
137
+ input: WatchInput;
138
+ output: WatchChange;
139
+ };
119
140
  };
120
141
  }
121
142
  /**
122
143
  * Helper type to extract input type from a procedure path
123
144
  */
124
- export type ProcedureInput<P extends readonly string[]> = P extends ["mongo", "database", "ping"] ? PingInput : P extends ["mongo", "database", "info"] ? InfoInput : P extends ["mongo", "collections", "list"] ? ListCollectionsInput : P extends ["mongo", "collections", "create"] ? CreateCollectionInput : P extends ["mongo", "collections", "drop"] ? DropCollectionInput : P extends ["mongo", "collections", "stats"] ? StatsInput : P extends ["mongo", "documents", "find"] ? FindInput : P extends ["mongo", "documents", "get"] ? GetInput : P extends ["mongo", "documents", "insert"] ? InsertInput : P extends ["mongo", "documents", "update"] ? UpdateInput : P extends ["mongo", "documents", "delete"] ? DeleteInput : P extends ["mongo", "documents", "count"] ? CountInput : P extends ["mongo", "documents", "aggregate"] ? AggregateInput : P extends ["mongo", "indexes", "list"] ? ListIndexesInput : P extends ["mongo", "indexes", "create"] ? CreateIndexInput : P extends ["mongo", "indexes", "drop"] ? DropIndexInput : never;
145
+ export type ProcedureInput<P extends readonly string[]> = P extends ["mongo", "database", "ping"] ? PingInput : P extends ["mongo", "database", "info"] ? InfoInput : P extends ["mongo", "collections", "list"] ? ListCollectionsInput : P extends ["mongo", "collections", "create"] ? CreateCollectionInput : P extends ["mongo", "collections", "drop"] ? DropCollectionInput : P extends ["mongo", "collections", "stats"] ? StatsInput : P extends ["mongo", "documents", "find"] ? FindInput : P extends ["mongo", "documents", "get"] ? GetInput : P extends ["mongo", "documents", "insert"] ? InsertInput : P extends ["mongo", "documents", "update"] ? UpdateInput : P extends ["mongo", "documents", "delete"] ? DeleteInput : P extends ["mongo", "documents", "count"] ? CountInput : P extends ["mongo", "documents", "aggregate"] ? AggregateInput : P extends ["mongo", "documents", "distinct"] ? DistinctInput : P extends ["mongo", "documents", "bulk"] ? BulkInput : P extends ["mongo", "documents", "explain"] ? ExplainInput : P extends ["mongo", "indexes", "list"] ? ListIndexesInput : P extends ["mongo", "indexes", "create"] ? CreateIndexInput : P extends ["mongo", "indexes", "drop"] ? DropIndexInput : P extends ["mongo", "watch"] ? WatchInput : never;
125
146
  /**
126
147
  * Helper type to extract output type from a procedure path
127
148
  */
128
- export type ProcedureOutput<P extends readonly string[]> = P extends ["mongo", "database", "ping"] ? PingOutput : P extends ["mongo", "database", "info"] ? DatabaseInfo : P extends ["mongo", "collections", "list"] ? ListCollectionsOutput : P extends ["mongo", "collections", "create"] ? CreateCollectionOutput : P extends ["mongo", "collections", "drop"] ? DropCollectionOutput : P extends ["mongo", "collections", "stats"] ? CollectionStats : P extends ["mongo", "documents", "find"] ? FindOutput : P extends ["mongo", "documents", "get"] ? GetOutput : P extends ["mongo", "documents", "insert"] ? InsertOutput : P extends ["mongo", "documents", "update"] ? UpdateOutput : P extends ["mongo", "documents", "delete"] ? DeleteOutput : P extends ["mongo", "documents", "count"] ? CountOutput : P extends ["mongo", "documents", "aggregate"] ? AggregateOutput : P extends ["mongo", "indexes", "list"] ? ListIndexesOutput : P extends ["mongo", "indexes", "create"] ? CreateIndexOutput : P extends ["mongo", "indexes", "drop"] ? DropIndexOutput : never;
149
+ export type ProcedureOutput<P extends readonly string[]> = P extends ["mongo", "database", "ping"] ? PingOutput : P extends ["mongo", "database", "info"] ? DatabaseInfo : P extends ["mongo", "collections", "list"] ? ListCollectionsOutput : P extends ["mongo", "collections", "create"] ? CreateCollectionOutput : P extends ["mongo", "collections", "drop"] ? DropCollectionOutput : P extends ["mongo", "collections", "stats"] ? CollectionStats : P extends ["mongo", "documents", "find"] ? FindOutput : P extends ["mongo", "documents", "get"] ? GetOutput : P extends ["mongo", "documents", "insert"] ? InsertOutput : P extends ["mongo", "documents", "update"] ? UpdateOutput : P extends ["mongo", "documents", "delete"] ? DeleteOutput : P extends ["mongo", "documents", "count"] ? CountOutput : P extends ["mongo", "documents", "aggregate"] ? AggregateOutput : P extends ["mongo", "documents", "distinct"] ? DistinctOutput : P extends ["mongo", "documents", "bulk"] ? BulkOutput : P extends ["mongo", "documents", "explain"] ? ExplainOutput : P extends ["mongo", "indexes", "list"] ? ListIndexesOutput : P extends ["mongo", "indexes", "create"] ? CreateIndexOutput : P extends ["mongo", "indexes", "drop"] ? DropIndexOutput : P extends ["mongo", "watch"] ? WatchChange : never;
129
150
  //# sourceMappingURL=procedures.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedures.types.d.ts","sourceRoot":"","sources":["../src/procedures.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"procedures.types.d.ts","sourceRoot":"","sources":["../src/procedures.types.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,7 @@ export declare class MongoStorage<T> implements CollectionStorage<T> {
35
35
  private getCollection;
36
36
  get(id: string): Promise<T | undefined>;
37
37
  getAll(): Promise<T[]>;
38
+ getEntries(): Promise<Array<[string, T]>>;
38
39
  find(predicate: (item: T) => boolean): Promise<T[]>;
39
40
  has(id: string): Promise<boolean>;
40
41
  size(): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"mongo-storage.d.ts","sourceRoot":"","sources":["../../src/storage/mongo-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,YAAY,OAAO,EAAE,mBAAmB,EAEvC;IAED;;;OAGG;YACW,aAAa;IAKrB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG5C;IAEK,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAG3B;IAEK,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAGxD;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtC;IAEK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5B;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7C;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAEK,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvD;IAEK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhD;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAYrD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAEK,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAU5C;CACF"}
1
+ {"version":3,"file":"mongo-storage.d.ts","sourceRoot":"","sources":["../../src/storage/mongo-storage.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,YAAY,OAAO,EAAE,mBAAmB,EAEvC;IAED;;;OAGG;YACW,aAAa;IAKrB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG5C;IAEK,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAG3B;IAEK,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAG9C;IAEK,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAGxD;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtC;IAEK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5B;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7C;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAEK,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvD;IAEK,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhD;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAYrD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAEK,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAU5C;CACF"}
@@ -39,6 +39,10 @@ export class MongoStorage {
39
39
  const docs = await (await this.getCollection()).find({}).toArray();
40
40
  return docs.map((doc) => doc.data);
41
41
  }
42
+ async getEntries() {
43
+ const docs = await (await this.getCollection()).find({}).toArray();
44
+ return docs.map((doc) => [doc._id, doc.data]);
45
+ }
42
46
  async find(predicate) {
43
47
  const all = await this.getAll();
44
48
  return all.filter(predicate);
@@ -1 +1 @@
1
- {"version":3,"file":"mongo-storage.js","sourceRoot":"","sources":["../../src/storage/mongo-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo-storage.js","sourceRoot":"","sources":["../../src/storage/mongo-storage.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -126,6 +126,16 @@ export interface BulkUpdateOne {
126
126
  upsert?: boolean;
127
127
  };
128
128
  }
129
+ /**
130
+ * Update operation of each matching document, for bulk write
131
+ */
132
+ export interface BulkUpdateMany {
133
+ updateMany: {
134
+ filter: DocumentQuery;
135
+ update: DocumentUpdate;
136
+ upsert?: boolean;
137
+ };
138
+ }
129
139
  /**
130
140
  * Delete operation for bulk write
131
141
  */
@@ -135,9 +145,17 @@ export interface BulkDeleteOne {
135
145
  };
136
146
  }
137
147
  /**
138
- * Bulk operation union type
148
+ * Delete operation of each matching document, for bulk write
149
+ */
150
+ export interface BulkDeleteMany {
151
+ deleteMany: {
152
+ filter: DocumentQuery;
153
+ };
154
+ }
155
+ /**
156
+ * Bulk operation union type: the operations of `mongo.documents.bulk`
139
157
  */
140
- export type BulkOperation = BulkInsertOne | BulkUpdateOne | BulkDeleteOne;
158
+ export type BulkOperation = BulkInsertOne | BulkUpdateOne | BulkUpdateMany | BulkDeleteOne | BulkDeleteMany;
141
159
  /**
142
160
  * Result of a bulk write operation
143
161
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/mongo",
4
- "version": "0.2.2",
5
- "description": "MongoDB as typed procedures: documents, collections, indexes, aggregation and database info, with a lazy connection and safe update and delete targets.",
4
+ "version": "0.3.0",
5
+ "description": "MongoDB as typed procedures: documents, bulk writes, distinct, explain, collections, indexes, aggregation, change streams and database info, with safe update and delete targets.",
6
6
  "keywords": [
7
7
  "mongodb",
8
8
  "mongo",
@@ -72,8 +72,8 @@
72
72
  "procedures": "./dist/register.js"
73
73
  },
74
74
  "dependencies": {
75
- "@procedures/client": "0.2.2",
76
- "@procedures/collections": "0.2.2",
75
+ "@procedures/client": "0.3.0",
76
+ "@procedures/collections": "0.3.0",
77
77
  "mongodb": "^7.0.0",
78
78
  "zod": "^4.6.5"
79
79
  },
package/src/index.ts CHANGED
@@ -81,6 +81,14 @@ export type {
81
81
  CountOutput,
82
82
  AggregateInput,
83
83
  AggregateOutput,
84
+ DistinctInput,
85
+ DistinctOutput,
86
+ BulkInput,
87
+ BulkOutput,
88
+ ExplainInput,
89
+ ExplainOutput,
90
+ WatchInput,
91
+ WatchChange,
84
92
  ListIndexesInput,
85
93
  ListIndexesOutput,
86
94
  CreateIndexInput,
@@ -107,7 +115,9 @@ export type {
107
115
  // Bulk operations
108
116
  BulkInsertOne,
109
117
  BulkUpdateOne,
118
+ BulkUpdateMany,
110
119
  BulkDeleteOne,
120
+ BulkDeleteMany,
111
121
  BulkOperation,
112
122
  BulkWriteResult,
113
123
  // Indexes
package/src/module.ts CHANGED
@@ -23,6 +23,10 @@ import { updateProcedure } from "./procedures/documents.update.js";
23
23
  import { deleteProcedure } from "./procedures/documents.delete.js";
24
24
  import { countProcedure } from "./procedures/documents.count.js";
25
25
  import { aggregateProcedure } from "./procedures/documents.aggregate.js";
26
+ import { distinctProcedure } from "./procedures/documents.distinct.js";
27
+ import { bulkProcedure } from "./procedures/documents.bulk.js";
28
+ import { explainProcedure } from "./procedures/documents.explain.js";
29
+ import { watchProcedure } from "./procedures/watch.js";
26
30
  import { listIndexesProcedure } from "./procedures/indexes.list.js";
27
31
  import { createIndexProcedure } from "./procedures/indexes.create.js";
28
32
  import { dropIndexProcedure } from "./procedures/indexes.drop.js";
@@ -47,10 +51,15 @@ export const procedures: readonly AnyProcedure[] = [
47
51
  deleteProcedure,
48
52
  countProcedure,
49
53
  aggregateProcedure,
54
+ distinctProcedure,
55
+ bulkProcedure,
56
+ explainProcedure,
50
57
  // Indexes
51
58
  listIndexesProcedure,
52
59
  createIndexProcedure,
53
60
  dropIndexProcedure,
61
+ // Change streams
62
+ watchProcedure,
54
63
  ];
55
64
 
56
65
  /**
@@ -44,6 +44,32 @@ const aggregateOutputSchema = zodAdapter<AggregateOutput>(
44
44
  })
45
45
  );
46
46
 
47
+ /** The stages that write to a collection. A read-only procedure refuses them (CAP-2). */
48
+ const WRITING_STAGES = ["$out", "$merge"];
49
+
50
+ /**
51
+ * The first stage that writes, or undefined. The search also goes into the pipelines of
52
+ * `$facet`, `$lookup` and `$unionWith`.
53
+ */
54
+ export function writingStage(pipeline: unknown): string | undefined {
55
+ if (Array.isArray(pipeline)) {
56
+ for (const stage of pipeline) {
57
+ const found = writingStage(stage);
58
+ if (found) return found;
59
+ }
60
+ return undefined;
61
+ }
62
+ if (pipeline === null || typeof pipeline !== "object") return undefined;
63
+ for (const [key, value] of Object.entries(pipeline)) {
64
+ if (WRITING_STAGES.includes(key)) return key;
65
+ if (value !== null && typeof value === "object") {
66
+ const found = writingStage(value);
67
+ if (found) return found;
68
+ }
69
+ }
70
+ return undefined;
71
+ }
72
+
47
73
  export const aggregateProcedure: Procedure<
48
74
  AggregateInput,
49
75
  AggregateOutput,
@@ -53,11 +79,16 @@ export const aggregateProcedure: Procedure<
53
79
  .input(aggregateInputSchema)
54
80
  .output(aggregateOutputSchema)
55
81
  .meta({
56
- description: "Run an aggregation pipeline",
57
- // A $out or $merge stage of the pipeline writes to a collection, and $out replaces it
58
- effects: { reads: ["mongo", "network"], writes: ["mongo", "network"] },
82
+ description: "Run an aggregation pipeline (read only: $out and $merge are refused)",
83
+ // The procedure refuses $out and $merge, so it only reads (CAP-2). Before, it declared that
84
+ // it writes, and a read-only session refused every aggregation.
85
+ effects: { reads: ["mongo", "network"], writes: [] },
59
86
  })
60
87
  .handler(async (input: AggregateInput, ctx: ProcedureContext) => {
88
+ const stage = writingStage(input.pipeline);
89
+ if (stage) {
90
+ throw new Error(`mongo.documents.aggregate is read only: the stage ${stage} writes to a collection`);
91
+ }
61
92
  const { collection } = await collectionFor(input, ctx);
62
93
 
63
94
  const results = await collection