@procedures/mongo 0.1.0 → 0.2.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.
Files changed (99) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +6 -9
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/module.d.ts +7 -1
  9. package/dist/module.d.ts.map +1 -1
  10. package/dist/module.js +9 -1
  11. package/dist/module.js.map +1 -1
  12. package/dist/procedures/collections.create.d.ts +2 -1
  13. package/dist/procedures/collections.create.d.ts.map +1 -1
  14. package/dist/procedures/collections.create.js +4 -1
  15. package/dist/procedures/collections.create.js.map +1 -1
  16. package/dist/procedures/collections.drop.d.ts +2 -1
  17. package/dist/procedures/collections.drop.d.ts.map +1 -1
  18. package/dist/procedures/collections.drop.js +5 -1
  19. package/dist/procedures/collections.drop.js.map +1 -1
  20. package/dist/procedures/collections.list.d.ts +2 -1
  21. package/dist/procedures/collections.list.d.ts.map +1 -1
  22. package/dist/procedures/collections.list.js +4 -1
  23. package/dist/procedures/collections.list.js.map +1 -1
  24. package/dist/procedures/collections.stats.d.ts +2 -1
  25. package/dist/procedures/collections.stats.d.ts.map +1 -1
  26. package/dist/procedures/collections.stats.js +4 -1
  27. package/dist/procedures/collections.stats.js.map +1 -1
  28. package/dist/procedures/database.info.d.ts +2 -1
  29. package/dist/procedures/database.info.d.ts.map +1 -1
  30. package/dist/procedures/database.info.js +4 -1
  31. package/dist/procedures/database.info.js.map +1 -1
  32. package/dist/procedures/database.ping.d.ts +2 -1
  33. package/dist/procedures/database.ping.d.ts.map +1 -1
  34. package/dist/procedures/database.ping.js +4 -1
  35. package/dist/procedures/database.ping.js.map +1 -1
  36. package/dist/procedures/documents.aggregate.d.ts +2 -1
  37. package/dist/procedures/documents.aggregate.d.ts.map +1 -1
  38. package/dist/procedures/documents.aggregate.js +5 -1
  39. package/dist/procedures/documents.aggregate.js.map +1 -1
  40. package/dist/procedures/documents.count.d.ts +2 -1
  41. package/dist/procedures/documents.count.d.ts.map +1 -1
  42. package/dist/procedures/documents.count.js +4 -1
  43. package/dist/procedures/documents.count.js.map +1 -1
  44. package/dist/procedures/documents.delete.d.ts +2 -1
  45. package/dist/procedures/documents.delete.d.ts.map +1 -1
  46. package/dist/procedures/documents.delete.js +4 -1
  47. package/dist/procedures/documents.delete.js.map +1 -1
  48. package/dist/procedures/documents.find.d.ts +2 -1
  49. package/dist/procedures/documents.find.d.ts.map +1 -1
  50. package/dist/procedures/documents.find.js +4 -1
  51. package/dist/procedures/documents.find.js.map +1 -1
  52. package/dist/procedures/documents.get.d.ts +2 -1
  53. package/dist/procedures/documents.get.d.ts.map +1 -1
  54. package/dist/procedures/documents.get.js +4 -1
  55. package/dist/procedures/documents.get.js.map +1 -1
  56. package/dist/procedures/documents.insert.d.ts +2 -1
  57. package/dist/procedures/documents.insert.d.ts.map +1 -1
  58. package/dist/procedures/documents.insert.js +4 -1
  59. package/dist/procedures/documents.insert.js.map +1 -1
  60. package/dist/procedures/documents.update.d.ts +2 -1
  61. package/dist/procedures/documents.update.d.ts.map +1 -1
  62. package/dist/procedures/documents.update.js +4 -1
  63. package/dist/procedures/documents.update.js.map +1 -1
  64. package/dist/procedures/indexes.create.d.ts +2 -1
  65. package/dist/procedures/indexes.create.d.ts.map +1 -1
  66. package/dist/procedures/indexes.create.js +5 -1
  67. package/dist/procedures/indexes.create.js.map +1 -1
  68. package/dist/procedures/indexes.drop.d.ts +2 -1
  69. package/dist/procedures/indexes.drop.d.ts.map +1 -1
  70. package/dist/procedures/indexes.drop.js +4 -1
  71. package/dist/procedures/indexes.drop.js.map +1 -1
  72. package/dist/procedures/indexes.list.d.ts +2 -1
  73. package/dist/procedures/indexes.list.d.ts.map +1 -1
  74. package/dist/procedures/indexes.list.js +4 -1
  75. package/dist/procedures/indexes.list.js.map +1 -1
  76. package/dist/register.d.ts +3 -4
  77. package/dist/register.d.ts.map +1 -1
  78. package/dist/register.js +4 -9
  79. package/dist/register.js.map +1 -1
  80. package/package.json +3 -4
  81. package/src/index.ts +1 -1
  82. package/src/module.ts +10 -1
  83. package/src/procedures/collections.create.ts +6 -3
  84. package/src/procedures/collections.drop.ts +7 -3
  85. package/src/procedures/collections.list.ts +6 -3
  86. package/src/procedures/collections.stats.ts +6 -3
  87. package/src/procedures/database.info.ts +6 -3
  88. package/src/procedures/database.ping.ts +6 -3
  89. package/src/procedures/documents.aggregate.ts +7 -3
  90. package/src/procedures/documents.count.ts +6 -3
  91. package/src/procedures/documents.delete.ts +6 -3
  92. package/src/procedures/documents.find.ts +6 -2
  93. package/src/procedures/documents.get.ts +6 -2
  94. package/src/procedures/documents.insert.ts +6 -3
  95. package/src/procedures/documents.update.ts +6 -3
  96. package/src/procedures/indexes.create.ts +7 -3
  97. package/src/procedures/indexes.drop.ts +6 -3
  98. package/src/procedures/indexes.list.ts +6 -3
  99. package/src/register.ts +4 -10
@@ -2,7 +2,7 @@
2
2
  * Procedure: mongo.documents.get
3
3
  * Get a single document by ID
4
4
  */
5
- import { type Procedure } from "@procedures/client";
5
+ import { type Effects, type Procedure } from "@procedures/client";
6
6
  import { type ScopeInput } from "../scope.js";
7
7
  import { type IdType, type MongoDocument } from "../types.js";
8
8
  interface GetInput extends ScopeInput {
@@ -15,6 +15,7 @@ interface GetOutput {
15
15
  }
16
16
  export declare const getProcedure: Procedure<GetInput, GetOutput, {
17
17
  description: string;
18
+ effects?: Effects;
18
19
  }>;
19
20
  export type { GetInput, GetOutput };
20
21
  //# sourceMappingURL=documents.get.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.get.d.ts","sourceRoot":"","sources":["../../src/procedures/documents.get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGxE,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAGrB,UAAU,QAAS,SAAQ,UAAU;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;CAChC;AAgDD,eAAO,MAAM,YAAY,EAAE,SAAS,CAClC,QAAQ,EACR,SAAS,EACT;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAef,CAAC;AAEX,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"documents.get.d.ts","sourceRoot":"","sources":["../../src/procedures/documents.get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGxE,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAGrB,UAAU,QAAS,SAAQ,UAAU;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;CAChC;AAgDD,eAAO,MAAM,YAAY,EAAE,SAAS,CAClC,QAAQ,EACR,SAAS,EACT;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAkBlC,CAAC;AAEX,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC"}
@@ -44,7 +44,10 @@ export const getProcedure = createProcedure()
44
44
  .path(["mongo", "documents", "get"])
45
45
  .input(getInputSchema)
46
46
  .output(getOutputSchema)
47
- .meta({ description: "Get a single document by ID" })
47
+ .meta({
48
+ description: "Get a single document by ID",
49
+ effects: { reads: ["mongo", "network"], writes: [] },
50
+ })
48
51
  .handler(async (input, ctx) => {
49
52
  const { collection } = await collectionFor(input, ctx);
50
53
  const document = await collection.findOne(buildIdFilter(input.id, input.idType));
@@ -1 +1 @@
1
- {"version":3,"file":"documents.get.js","sourceRoot":"","sources":["../../src/procedures/documents.get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EAGf,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,GAGd,MAAM,aAAa,CAAC;AAarB;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,EAAE,EAAE,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,UAAU;AACV,MAAM,cAAc,GAAG,SAAS,CAC9B,aAAa,EACb,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxD,MAAM,EAAE,WAAW,EAAE;CACtB,CAAC,CACH,CAAC;AACF,MAAM,eAAe,GAAG,UAAU,CAChC,CAAC,CAAC,WAAW,CAAC;IACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACrH,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAIrB,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;KACnC,KAAK,CAAC,cAAc,CAAC;KACrB,MAAM,CAAC,eAAe,CAAC;KACvB,IAAI,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;KACpD,OAAO,CAAC,KAAK,EAAE,KAAe,EAAE,GAAqB,EAAE,EAAE;IACxD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CACvC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CACtC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"documents.get.js","sourceRoot":"","sources":["../../src/procedures/documents.get.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EAIf,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,GAGd,MAAM,aAAa,CAAC;AAarB;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,EAAE,EAAE,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,UAAU;AACV,MAAM,cAAc,GAAG,SAAS,CAC9B,aAAa,EACb,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACxD,MAAM,EAAE,WAAW,EAAE;CACtB,CAAC,CACH,CAAC;AACF,MAAM,eAAe,GAAG,UAAU,CAChC,CAAC,CAAC,WAAW,CAAC;IACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;CACrH,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAIrB,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;KACnC,KAAK,CAAC,cAAc,CAAC;KACrB,MAAM,CAAC,eAAe,CAAC;KACvB,IAAI,CAAC;IACJ,WAAW,EAAE,6BAA6B;IAC1C,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;CACrD,CAAC;KACD,OAAO,CAAC,KAAK,EAAE,KAAe,EAAE,GAAqB,EAAE,EAAE;IACxD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CACvC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CACtC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Procedure: mongo.documents.insert
3
3
  * Insert one or more documents
4
4
  */
5
- import { type Procedure } from "@procedures/client";
5
+ import { type Effects, type Procedure } from "@procedures/client";
6
6
  import { type ScopeInput } from "../scope.js";
7
7
  import { type MongoDocument } from "../types.js";
8
8
  interface InsertInput extends ScopeInput {
@@ -16,6 +16,7 @@ interface InsertOutput {
16
16
  }
17
17
  export declare const insertProcedure: Procedure<InsertInput, InsertOutput, {
18
18
  description: string;
19
+ effects?: Effects;
19
20
  }>;
20
21
  export type { InsertInput, InsertOutput };
21
22
  //# sourceMappingURL=documents.insert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.insert.d.ts","sourceRoot":"","sources":["../../src/procedures/documents.insert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,UAAU,WAAY,SAAQ,UAAU;IACtC,4CAA4C;IAC5C,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;CAC5C;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAmBD,eAAO,MAAM,eAAe,EAAE,SAAS,CACrC,WAAW,EACX,YAAY,EACZ;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAqCf,CAAC;AAEX,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"documents.insert.d.ts","sourceRoot":"","sources":["../../src/procedures/documents.insert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,UAAU,WAAY,SAAQ,UAAU;IACtC,4CAA4C;IAC5C,SAAS,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;CAC5C;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAmBD,eAAO,MAAM,eAAe,EAAE,SAAS,CACrC,WAAW,EACX,YAAY,EACZ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAwClC,CAAC;AAEX,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
@@ -23,7 +23,10 @@ export const insertProcedure = createProcedure()
23
23
  .path(["mongo", "documents", "insert"])
24
24
  .input(insertInputSchema)
25
25
  .output(insertOutputSchema)
26
- .meta({ description: "Insert one or more documents" })
26
+ .meta({
27
+ description: "Insert one or more documents",
28
+ effects: { reads: ["mongo", "network"], writes: ["mongo", "network"], destructive: false },
29
+ })
27
30
  .handler(async (input, ctx) => {
28
31
  const { collection } = await collectionFor(input, ctx);
29
32
  const docs = Array.isArray(input.documents)
@@ -1 +1 @@
1
- {"version":3,"file":"documents.insert.js","sourceRoot":"","sources":["../../src/procedures/documents.insert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAyC,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsB,MAAM,aAAa,CAAC;AAcjD,UAAU;AACV,MAAM,iBAAiB,GAAG,UAAU,CAClC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SACpD,QAAQ,CAAC,sCAAsC,CAAC;CACpD,CAAC,CACH,CAAC;AACF,MAAM,kBAAkB,GAAG,UAAU,CACnC,CAAC,CAAC,WAAW,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC9E,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAClF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CAClE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAIxB,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACtC,KAAK,CAAC,iBAAiB,CAAC;KACxB,MAAM,CAAC,kBAAkB,CAAC;KAC1B,IAAI,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;KACrD,OAAO,CAAC,KAAK,EAAE,KAAkB,EAAE,GAAqB,EAAE,EAAE;IAC3D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QACpD,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACxC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1D,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"documents.insert.js","sourceRoot":"","sources":["../../src/procedures/documents.insert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAuD,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAsB,MAAM,aAAa,CAAC;AAcjD,UAAU;AACV,MAAM,iBAAiB,GAAG,UAAU,CAClC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,SAAS,EAAE,CAAC;SACT,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SACpD,QAAQ,CAAC,sCAAsC,CAAC;CACpD,CAAC,CACH,CAAC;AACF,MAAM,kBAAkB,GAAG,UAAU,CACnC,CAAC,CAAC,WAAW,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC9E,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAClF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CAClE,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAIxB,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;KACtC,KAAK,CAAC,iBAAiB,CAAC;KACxB,MAAM,CAAC,kBAAkB,CAAC;KAC1B,IAAI,CAAC;IACJ,WAAW,EAAE,8BAA8B;IAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE;CAC3F,CAAC;KACD,OAAO,CAAC,KAAK,EAAE,KAAkB,EAAE,GAAqB,EAAE,EAAE;IAC3D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,KAAK,CAAC,SAAS;QACjB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;QACpD,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACxC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1D,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Procedure: mongo.documents.update
3
3
  * Update documents matching a filter
4
4
  */
5
- import { type Procedure } from "@procedures/client";
5
+ import { type Effects, type Procedure } from "@procedures/client";
6
6
  import type { DocumentUpdate } from "../types.js";
7
7
  import { type TargetInput } from "./target.js";
8
8
  /** The input: exactly one of `id` or `filter`, the update, and the scope fields. */
@@ -21,6 +21,7 @@ interface UpdateOutput {
21
21
  }
22
22
  export declare const updateProcedure: Procedure<UpdateInput, UpdateOutput, {
23
23
  description: string;
24
+ effects?: Effects;
24
25
  }>;
25
26
  export type { UpdateInput, UpdateOutput };
26
27
  //# sourceMappingURL=documents.update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.update.d.ts","sourceRoot":"","sources":["../../src/procedures/documents.update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAmB,KAAK,SAAS,EAAqC,MAAM,oBAAoB,CAAC;AAIxG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGxF,oFAAoF;AACpF,UAAU,WAAY,SAAQ,WAAW;IACvC,wBAAwB;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAsCD,eAAO,MAAM,eAAe,EAAE,SAAS,CACrC,WAAW,EACX,YAAY,EACZ;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAsBf,CAAC;AAEX,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"documents.update.d.ts","sourceRoot":"","sources":["../../src/procedures/documents.update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAmB,KAAK,OAAO,EAAE,KAAK,SAAS,EAAqC,MAAM,oBAAoB,CAAC;AAItH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAGxF,oFAAoF;AACpF,UAAU,WAAY,SAAQ,WAAW;IACvC,wBAAwB;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAsCD,eAAO,MAAM,eAAe,EAAE,SAAS,CACrC,WAAW,EACX,YAAY,EACZ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAyBlC,CAAC;AAEX,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
@@ -41,7 +41,10 @@ export const updateProcedure = createProcedure()
41
41
  .path(["mongo", "documents", "update"])
42
42
  .input(updateInputSchema)
43
43
  .output(updateOutputSchema)
44
- .meta({ description: "Update documents matching a filter" })
44
+ .meta({
45
+ description: "Update documents matching a filter",
46
+ effects: { reads: ["mongo", "network"], writes: ["mongo", "network"] },
47
+ })
45
48
  .handler(async (input, ctx) => {
46
49
  const { collection } = await collectionFor(input, ctx);
47
50
  const upsert = input.upsert ?? false;
@@ -1 +1 @@
1
- {"version":3,"file":"documents.update.js","sourceRoot":"","sources":["../../src/procedures/documents.update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"documents.update.js","sourceRoot":"","sources":["../../src/procedures/documents.update.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Procedure: mongo.indexes.create
3
3
  * Create an index on a collection
4
4
  */
5
- import { type Procedure } from "@procedures/client";
5
+ import { type Effects, type Procedure } from "@procedures/client";
6
6
  import { type ScopeInput } from "../scope.js";
7
7
  import { type IndexSpec, type IndexOptions } from "../types.js";
8
8
  interface CreateIndexInput extends ScopeInput {
@@ -15,6 +15,7 @@ interface CreateIndexOutput {
15
15
  }
16
16
  export declare const createIndexProcedure: Procedure<CreateIndexInput, CreateIndexOutput, {
17
17
  description: string;
18
+ effects?: Effects;
18
19
  }>;
19
20
  export type { CreateIndexInput, CreateIndexOutput };
20
21
  //# sourceMappingURL=indexes.create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.create.d.ts","sourceRoot":"","sources":["../../src/procedures/indexes.create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAI7D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhE,UAAU,gBAAiB,SAAQ,UAAU;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACpC;AAED,UAAU,iBAAiB;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AA0BD,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAC1C,gBAAgB,EAChB,iBAAiB,EACjB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAiBf,CAAC;AAEX,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"indexes.create.d.ts","sourceRoot":"","sources":["../../src/procedures/indexes.create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAI7D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhE,UAAU,gBAAiB,SAAQ,UAAU;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CACpC;AAED,UAAU,iBAAiB;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AA0BD,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAC1C,gBAAgB,EAChB,iBAAiB,EACjB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAqBlC,CAAC;AAEX,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -30,7 +30,11 @@ export const createIndexProcedure = createProcedure()
30
30
  .path(["mongo", "indexes", "create"])
31
31
  .input(createIndexInputSchema)
32
32
  .output(createIndexOutputSchema)
33
- .meta({ description: "Create an index on a collection" })
33
+ .meta({
34
+ description: "Create an index on a collection",
35
+ // A second call with the same keys and options keeps the existing index
36
+ effects: { reads: ["mongo", "network"], writes: ["mongo", "network"], destructive: false, idempotent: true },
37
+ })
34
38
  .handler(async (input, ctx) => {
35
39
  const { collection } = await collectionFor(input, ctx);
36
40
  // The schema leaves out an option that the input does not give: no option is undefined at run time
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.create.js","sourceRoot":"","sources":["../../src/procedures/indexes.create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAyC,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqC,MAAM,aAAa,CAAC;AAahE,UAAU;AACV,MAAM,sBAAsB,GAAG,UAAU,CACvC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACpG,QAAQ,CAAC,sEAAsE,CAAC;IACnF,OAAO,EAAE,CAAC;SACP,WAAW,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC7D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACzD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KAC1D,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,0BAA0B,CAAC;CACxC,CAAC,CACH,CAAC;AACF,MAAM,uBAAuB,GAAG,UAAU,CACxC,CAAC,CAAC,WAAW,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC9E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC5D,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAI7B,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KACpC,KAAK,CAAC,sBAAsB,CAAC;KAC7B,MAAM,CAAC,uBAAuB,CAAC;KAC/B,IAAI,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;KACxD,OAAO,CAAC,KAAK,EAAE,KAAuB,EAAE,GAAqB,EAAE,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,mGAAmG;IACnG,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAA2C,CAAC,CAAC;IAE9G,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"indexes.create.js","sourceRoot":"","sources":["../../src/procedures/indexes.create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAuD,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAqC,MAAM,aAAa,CAAC;AAahE,UAAU;AACV,MAAM,sBAAsB,GAAG,UAAU,CACvC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACpG,QAAQ,CAAC,sEAAsE,CAAC;IACnF,OAAO,EAAE,CAAC;SACP,WAAW,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC7D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACzD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KAC1D,CAAC;SACD,QAAQ,EAAE;SACV,QAAQ,CAAC,0BAA0B,CAAC;CACxC,CAAC,CACH,CAAC;AACF,MAAM,uBAAuB,GAAG,UAAU,CACxC,CAAC,CAAC,WAAW,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC9E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC5D,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAI7B,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KACpC,KAAK,CAAC,sBAAsB,CAAC;KAC7B,MAAM,CAAC,uBAAuB,CAAC;KAC/B,IAAI,CAAC;IACJ,WAAW,EAAE,iCAAiC;IAC9C,wEAAwE;IACxE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;CAC7G,CAAC;KACD,OAAO,CAAC,KAAK,EAAE,KAAuB,EAAE,GAAqB,EAAE,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,mGAAmG;IACnG,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAA2C,CAAC,CAAC;IAE9G,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Procedure: mongo.indexes.drop
3
3
  * Drop an index from a collection
4
4
  */
5
- import { type Procedure } from "@procedures/client";
5
+ import { type Effects, type Procedure } from "@procedures/client";
6
6
  import { type ScopeInput } from "../scope.js";
7
7
  interface DropIndexInput extends ScopeInput {
8
8
  indexName: string;
@@ -12,6 +12,7 @@ interface DropIndexOutput {
12
12
  }
13
13
  export declare const dropIndexProcedure: Procedure<DropIndexInput, DropIndexOutput, {
14
14
  description: string;
15
+ effects?: Effects;
15
16
  }>;
16
17
  export type { DropIndexInput, DropIndexOutput };
17
18
  //# sourceMappingURL=indexes.drop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.drop.d.ts","sourceRoot":"","sources":["../../src/procedures/indexes.drop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAK7D,UAAU,cAAe,SAAQ,UAAU;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAeD,eAAO,MAAM,kBAAkB,EAAE,SAAS,CACxC,cAAc,EACd,eAAe,EACf;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAef,CAAC;AAEX,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"indexes.drop.d.ts","sourceRoot":"","sources":["../../src/procedures/indexes.drop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAK7D,UAAU,cAAe,SAAQ,UAAU;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAeD,eAAO,MAAM,kBAAkB,EAAE,SAAS,CACxC,cAAc,EACd,eAAe,EACf;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAkBlC,CAAC;AAEX,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -18,7 +18,10 @@ export const dropIndexProcedure = createProcedure()
18
18
  .path(["mongo", "indexes", "drop"])
19
19
  .input(dropIndexInputSchema)
20
20
  .output(dropIndexOutputSchema)
21
- .meta({ description: "Drop an index from a collection" })
21
+ .meta({
22
+ description: "Drop an index from a collection",
23
+ effects: { reads: ["mongo", "network"], writes: ["mongo", "network"] },
24
+ })
22
25
  .handler(async (input, ctx) => {
23
26
  const { collection } = await collectionFor(input, ctx);
24
27
  await collection.dropIndex(input.indexName);
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.drop.js","sourceRoot":"","sources":["../../src/procedures/indexes.drop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAyC,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,UAAU;AACV,MAAM,oBAAoB,GAAG,UAAU,CACrC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACvE,CAAC,CACH,CAAC;AACF,MAAM,qBAAqB,GAAG,UAAU,CACtC,CAAC,CAAC,WAAW,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CAC/E,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAI3B,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAClC,KAAK,CAAC,oBAAoB,CAAC;KAC3B,MAAM,CAAC,qBAAqB,CAAC;KAC7B,IAAI,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;KACxD,OAAO,CAAC,KAAK,EAAE,KAAqB,EAAE,GAAqB,EAAE,EAAE;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5C,OAAO;QACL,YAAY,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"indexes.drop.js","sourceRoot":"","sources":["../../src/procedures/indexes.drop.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAuD,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,UAAU;AACV,MAAM,oBAAoB,GAAG,UAAU,CACrC,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,WAAW,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACvE,CAAC,CACH,CAAC;AACF,MAAM,qBAAqB,GAAG,UAAU,CACtC,CAAC,CAAC,WAAW,CAAC;IACZ,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;CAC/E,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAI3B,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAClC,KAAK,CAAC,oBAAoB,CAAC;KAC3B,MAAM,CAAC,qBAAqB,CAAC;KAC7B,IAAI,CAAC;IACJ,WAAW,EAAE,iCAAiC;IAC9C,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;CACvE,CAAC;KACD,OAAO,CAAC,KAAK,EAAE,KAAqB,EAAE,GAAqB,EAAE,EAAE;IAC9D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5C,OAAO;QACL,YAAY,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * Procedure: mongo.indexes.list
3
3
  * List indexes on a collection
4
4
  */
5
- import { type Procedure } from "@procedures/client";
5
+ import { type Effects, type Procedure } from "@procedures/client";
6
6
  import { type ScopeInput } from "../scope.js";
7
7
  import { type IndexInfo } from "../types.js";
8
8
  /** The input: only the scope fields. */
@@ -12,6 +12,7 @@ interface ListIndexesOutput {
12
12
  }
13
13
  export declare const listIndexesProcedure: Procedure<ListIndexesInput, ListIndexesOutput, {
14
14
  description: string;
15
+ effects?: Effects;
15
16
  }>;
16
17
  export type { ListIndexesInput, ListIndexesOutput };
17
18
  //# sourceMappingURL=indexes.list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.list.d.ts","sourceRoot":"","sources":["../../src/procedures/indexes.list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,wCAAwC;AACxC,KAAK,gBAAgB,GAAG,UAAU,CAAC;AAEnC,UAAU,iBAAiB;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAqBD,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAC1C,gBAAgB,EAChB,iBAAiB,EACjB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAoBf,CAAC;AAEX,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"indexes.list.d.ts","sourceRoot":"","sources":["../../src/procedures/indexes.list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA+B,KAAK,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,wCAAwC;AACxC,KAAK,gBAAgB,GAAG,UAAU,CAAC;AAEnC,UAAU,iBAAiB;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAqBD,eAAO,MAAM,oBAAoB,EAAE,SAAS,CAC1C,gBAAgB,EAChB,iBAAiB,EACjB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAuBlC,CAAC;AAEX,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -23,7 +23,10 @@ export const listIndexesProcedure = createProcedure()
23
23
  .path(["mongo", "indexes", "list"])
24
24
  .input(listIndexesInputSchema)
25
25
  .output(listIndexesOutputSchema)
26
- .meta({ description: "List indexes on a collection" })
26
+ .meta({
27
+ description: "List indexes on a collection",
28
+ effects: { reads: ["mongo", "network"], writes: [] },
29
+ })
27
30
  .handler(async (input, ctx) => {
28
31
  const { collection } = await collectionFor(input, ctx);
29
32
  const indexes = await collection.listIndexes().toArray();
@@ -1 +1 @@
1
- {"version":3,"file":"indexes.list.js","sourceRoot":"","sources":["../../src/procedures/indexes.list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAyC,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,aAAa,CAAC;AAU7C,UAAU;AACV,MAAM,sBAAsB,GAAG,UAAU,CACvC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAC/B,CAAC;AACF,MAAM,uBAAuB,GAAG,UAAU,CACxC,CAAC,CAAC,WAAW,CAAC;IACZ,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,CAAC,CAAC,WAAW,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QAC7I,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACnE,CAAC,CACH;SACA,QAAQ,CAAC,+BAA+B,CAAC;CAC7C,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAI7B,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAClC,KAAK,CAAC,sBAAsB,CAAC;KAC7B,MAAM,CAAC,uBAAuB,CAAC;KAC/B,IAAI,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;KACrD,OAAO,CAAC,KAAK,EAAE,KAAuB,EAAE,GAAqB,EAAE,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;IAEzD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"indexes.list.js","sourceRoot":"","sources":["../../src/procedures/indexes.list.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAuD,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,MAAM,aAAa,CAAC;AAU7C,UAAU;AACV,MAAM,sBAAsB,GAAG,UAAU,CACvC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAC/B,CAAC;AACF,MAAM,uBAAuB,GAAG,UAAU,CACxC,CAAC,CAAC,WAAW,CAAC;IACZ,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,CAAC,CAAC,WAAW,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QAC7I,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACnE,CAAC,CACH;SACA,QAAQ,CAAC,+BAA+B,CAAC;CAC7C,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAI7B,eAAe,EAAE;KAClB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;KAClC,KAAK,CAAC,sBAAsB,CAAC;KAC7B,MAAM,CAAC,uBAAuB,CAAC;KAC/B,IAAI,CAAC;IACJ,WAAW,EAAE,8BAA8B;IAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;CACrD,CAAC;KACD,OAAO,CAAC,KAAK,EAAE,KAAuB,EAAE,GAAqB,EAAE,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;IAEzD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Importing this file registers the procedures of @procedures/mongo in the global registry
3
- * (DECISIONS-2026-10, "Every package root registers its procedures"). The procedures as data
4
- * are in `module.ts`, which registers nothing: a host with its own registry uses that one.
2
+ * Importing this file registers the procedures of @procedures/mongo, and of the modules that it
3
+ * requires, in the global registry: `import "@procedures/mongo/register"`. The package root and the
4
+ * `./module` entry register nothing (ARCHITECTURE-PROPOSALS-2026-10, P9).
5
5
  */
6
6
  export * from "./module.js";
7
- export declare function registerMongoProcedures(): void;
8
7
  //# sourceMappingURL=register.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,cAAc,aAAa,CAAC;AAE5B,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,cAAc,aAAa,CAAC"}
package/dist/register.js CHANGED
@@ -1,14 +1,9 @@
1
1
  /**
2
- * Importing this file registers the procedures of @procedures/mongo in the global registry
3
- * (DECISIONS-2026-10, "Every package root registers its procedures"). The procedures as data
4
- * are in `module.ts`, which registers nothing: a host with its own registry uses that one.
2
+ * Importing this file registers the procedures of @procedures/mongo, and of the modules that it
3
+ * requires, in the global registry: `import "@procedures/mongo/register"`. The package root and the
4
+ * `./module` entry register nothing (ARCHITECTURE-PROPOSALS-2026-10, P9).
5
5
  */
6
- import { registerProcedures } from "@procedures/client";
7
- import { mongoModule } from "./module.js";
6
+ import { registerMongoProcedures } from "./module.js";
8
7
  export * from "./module.js";
9
- export function registerMongoProcedures() {
10
- registerProcedures(mongoModule.procedures);
11
- }
12
- // Auto-register when this module is loaded
13
8
  registerMongoProcedures();
14
9
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,cAAc,aAAa,CAAC;AAE5B,MAAM,UAAU,uBAAuB;IACrC,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,2CAA2C;AAC3C,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,cAAc,aAAa,CAAC;AAE5B,uBAAuB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/mongo",
4
- "version": "0.1.0",
4
+ "version": "0.2.1",
5
5
  "description": "MongoDB as typed procedures: documents, collections, indexes, aggregation and database info, with a lazy connection and safe update and delete targets.",
6
6
  "keywords": [
7
7
  "mongodb",
@@ -53,7 +53,6 @@
53
53
  "CHANGELOG.md"
54
54
  ],
55
55
  "sideEffects": [
56
- "./dist/index.js",
57
56
  "./dist/register.js"
58
57
  ],
59
58
  "engines": {
@@ -73,8 +72,8 @@
73
72
  "procedures": "./dist/register.js"
74
73
  },
75
74
  "dependencies": {
76
- "@procedures/client": "0.1.0",
77
- "@procedures/collections": "0.1.0",
75
+ "@procedures/client": "0.2.1",
76
+ "@procedures/collections": "0.2.1",
78
77
  "mongodb": "^7.0.0",
79
78
  "zod": "^4.6.5"
80
79
  },
package/src/index.ts CHANGED
@@ -135,7 +135,7 @@ export type { MongoStorageOptions } from "./storage/index.js";
135
135
  // Procedure Registration
136
136
  // =============================================================================
137
137
 
138
- export { registerMongoProcedures, procedures } from "./register.js";
138
+ export { registerMongoProcedures, procedures } from "./module.js";
139
139
 
140
140
  // =============================================================================
141
141
  // Individual Procedures (for direct import if needed)
package/src/module.ts CHANGED
@@ -7,7 +7,7 @@
7
7
  * This file is referenced by package.json's client.procedures field.
8
8
  */
9
9
 
10
- import { type AnyProcedure, defineModule, type ProcedureModule } from "@procedures/client";
10
+ import { type AnyProcedure, defineModule, type ProcedureModule, PROCEDURE_REGISTRY, registerModules, type ProcedureRegistry } from "@procedures/client";
11
11
 
12
12
  // Import all procedures
13
13
  import { pingProcedure } from "./procedures/database.ping.js";
@@ -60,3 +60,12 @@ export const procedures: readonly AnyProcedure[] = [
60
60
  export const mongoModule: ProcedureModule = defineModule("@procedures/mongo", [...procedures]);
61
61
 
62
62
  export default mongoModule;
63
+
64
+ /**
65
+ * This function registers the procedures of @procedures/mongo, and of the modules that it requires, in
66
+ * a registry. The default is the global registry. Importing this file registers nothing: the
67
+ * `./register` entry starts this function (ARCHITECTURE-PROPOSALS-2026-10, P9).
68
+ */
69
+ export function registerMongoProcedures(registry: ProcedureRegistry = PROCEDURE_REGISTRY): void {
70
+ registerModules(registry, [mongoModule]);
71
+ }
@@ -3,7 +3,7 @@
3
3
  * Create a new collection
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { databaseFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields, documentObject } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -47,12 +47,15 @@ const createOutputSchema = zodAdapter<CreateOutput>(
47
47
  export const createCollectionProcedure: Procedure<
48
48
  CreateInput,
49
49
  CreateOutput,
50
- { description: string }
50
+ { description: string; effects?: Effects }
51
51
  > = createProcedure()
52
52
  .path(["mongo", "collections", "create"])
53
53
  .input(createInputSchema)
54
54
  .output(createOutputSchema)
55
- .meta({ description: "Create a new collection" })
55
+ .meta({
56
+ description: "Create a new collection",
57
+ effects: { reads: ["mongo", "network"], writes: ["mongo", "network"], destructive: false },
58
+ })
56
59
  .handler(async (input: CreateInput, ctx: ProcedureContext) => {
57
60
  const db = await databaseFor(input, ctx);
58
61
 
@@ -3,7 +3,7 @@
3
3
  * Drop (delete) a collection
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { collectionName, databaseFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -36,12 +36,16 @@ const dropOutputSchema = zodAdapter<DropOutput>(
36
36
  export const dropProcedure: Procedure<
37
37
  DropInput,
38
38
  DropOutput,
39
- { description: string }
39
+ { description: string; effects?: Effects }
40
40
  > = createProcedure()
41
41
  .path(["mongo", "collections", "drop"])
42
42
  .input(dropInputSchema)
43
43
  .output(dropOutputSchema)
44
- .meta({ description: "Drop (delete) a collection" })
44
+ .meta({
45
+ description: "Drop (delete) a collection",
46
+ // The drop of a missing collection is not an error: it gives dropped: false
47
+ effects: { reads: ["mongo", "network"], writes: ["mongo", "network"], idempotent: true },
48
+ })
45
49
  .handler(async (input: DropInput, ctx: ProcedureContext) => {
46
50
  const name = collectionName(input, ctx);
47
51
 
@@ -3,7 +3,7 @@
3
3
  * List all collections in the database
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { databaseFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -29,12 +29,15 @@ const listOutputSchema = zodAdapter<ListOutput>(
29
29
  export const listProcedure: Procedure<
30
30
  ListInput,
31
31
  ListOutput,
32
- { description: string }
32
+ { description: string; effects?: Effects }
33
33
  > = createProcedure()
34
34
  .path(["mongo", "collections", "list"])
35
35
  .input(listInputSchema)
36
36
  .output(listOutputSchema)
37
- .meta({ description: "List all collections in the database" })
37
+ .meta({
38
+ description: "List all collections in the database",
39
+ effects: { reads: ["mongo", "network"], writes: [] },
40
+ })
38
41
  .handler(async (input: ListInput, ctx: ProcedureContext) => {
39
42
  const db = await databaseFor(input, ctx);
40
43
 
@@ -3,7 +3,7 @@
3
3
  * Get collection statistics
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { collectionFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -31,12 +31,15 @@ const statsOutputSchema = zodAdapter<CollectionStats>(
31
31
  export const statsProcedure: Procedure<
32
32
  StatsInput,
33
33
  CollectionStats,
34
- { description: string }
34
+ { description: string; effects?: Effects }
35
35
  > = createProcedure()
36
36
  .path(["mongo", "collections", "stats"])
37
37
  .input(statsInputSchema)
38
38
  .output(statsOutputSchema)
39
- .meta({ description: "Get collection statistics" })
39
+ .meta({
40
+ description: "Get collection statistics",
41
+ effects: { reads: ["mongo", "network"], writes: [] },
42
+ })
40
43
  .handler(async (input: StatsInput, ctx: ProcedureContext) => {
41
44
  const { db, name } = await collectionFor(input, ctx);
42
45
  // Use collStats command since stats() is deprecated
@@ -3,7 +3,7 @@
3
3
  * Get database information and statistics
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { databaseFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -30,12 +30,15 @@ const infoOutputSchema = zodAdapter<DatabaseInfo>(
30
30
  export const infoProcedure: Procedure<
31
31
  InfoInput,
32
32
  DatabaseInfo,
33
- { description: string }
33
+ { description: string; effects?: Effects }
34
34
  > = createProcedure()
35
35
  .path(["mongo", "database", "info"])
36
36
  .input(infoInputSchema)
37
37
  .output(infoOutputSchema)
38
- .meta({ description: "Get database information and statistics" })
38
+ .meta({
39
+ description: "Get database information and statistics",
40
+ effects: { reads: ["mongo", "network"], writes: [] },
41
+ })
39
42
  .handler(async (input: InfoInput, ctx: ProcedureContext) => {
40
43
  const db = await databaseFor(input, ctx);
41
44
 
@@ -3,7 +3,7 @@
3
3
  * Health check and connectivity test
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { databaseFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -31,12 +31,15 @@ const pingOutputSchema = zodAdapter<PingOutput>(
31
31
  export const pingProcedure: Procedure<
32
32
  PingInput,
33
33
  PingOutput,
34
- { description: string }
34
+ { description: string; effects?: Effects }
35
35
  > = createProcedure()
36
36
  .path(["mongo", "database", "ping"])
37
37
  .input(pingInputSchema)
38
38
  .output(pingOutputSchema)
39
- .meta({ description: "Health check and connectivity test" })
39
+ .meta({
40
+ description: "Health check and connectivity test",
41
+ effects: { reads: ["mongo", "network"], writes: [] },
42
+ })
40
43
  .handler(async (input: PingInput, ctx: ProcedureContext) => {
41
44
  const db = await databaseFor(input, ctx);
42
45
 
@@ -3,7 +3,7 @@
3
3
  * Run an aggregation pipeline
4
4
  */
5
5
 
6
- import { createProcedure, zodAdapter, type Procedure, type ProcedureContext } from "@procedures/client";
6
+ import { createProcedure, zodAdapter, type Effects, type Procedure, type ProcedureContext } from "@procedures/client";
7
7
  import { collectionFor, type ScopeInput } from "../scope.js";
8
8
  import { scopeFields, documentObject } from "./input-schemas.js";
9
9
  import { z } from "zod";
@@ -47,12 +47,16 @@ const aggregateOutputSchema = zodAdapter<AggregateOutput>(
47
47
  export const aggregateProcedure: Procedure<
48
48
  AggregateInput,
49
49
  AggregateOutput,
50
- { description: string }
50
+ { description: string; effects?: Effects }
51
51
  > = createProcedure()
52
52
  .path(["mongo", "documents", "aggregate"])
53
53
  .input(aggregateInputSchema)
54
54
  .output(aggregateOutputSchema)
55
- .meta({ description: "Run an aggregation pipeline" })
55
+ .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"] },
59
+ })
56
60
  .handler(async (input: AggregateInput, ctx: ProcedureContext) => {
57
61
  const { collection } = await collectionFor(input, ctx);
58
62