@gaganref/confect-server 10.3.1-fork.9 → 10.3.1-fork.90

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 (183) hide show
  1. package/dist/ActionCall.d.ts +30 -0
  2. package/dist/ActionCall.d.ts.map +1 -0
  3. package/dist/ActionCall.js +41 -0
  4. package/dist/ActionCall.js.map +1 -0
  5. package/dist/ActionRunner.d.ts +1 -1
  6. package/dist/ActionRunner.d.ts.map +1 -1
  7. package/dist/ActionRunner.js +3 -3
  8. package/dist/ActionRunner.js.map +1 -1
  9. package/dist/AiGatewayDecisionClient.js +1 -1
  10. package/dist/AiGatewayLanguageClient.js +1 -1
  11. package/dist/Auth.d.ts +31 -2
  12. package/dist/Auth.d.ts.map +1 -1
  13. package/dist/Auth.js +23 -3
  14. package/dist/Auth.js.map +1 -1
  15. package/dist/Callback.d.ts +1 -1
  16. package/dist/Callback.d.ts.map +1 -1
  17. package/dist/Callback.js +6 -6
  18. package/dist/Callback.js.map +1 -1
  19. package/dist/ComponentCtx.d.ts +4 -0
  20. package/dist/ComponentCtx.d.ts.map +1 -1
  21. package/dist/ConvexConfigProvider.js +2 -2
  22. package/dist/ConvexFunctionDefinitions.d.ts.map +1 -1
  23. package/dist/ConvexFunctionDefinitions.js +4 -4
  24. package/dist/ConvexFunctionDefinitions.js.map +1 -1
  25. package/dist/ConvexLogger.js +1 -1
  26. package/dist/CronJobs.d.ts.map +1 -1
  27. package/dist/CronJobs.js +7 -6
  28. package/dist/CronJobs.js.map +1 -1
  29. package/dist/DatabaseSchema.js +2 -2
  30. package/dist/DatabaseWriter.d.ts +44 -2
  31. package/dist/DatabaseWriter.d.ts.map +1 -1
  32. package/dist/DatabaseWriter.js +59 -9
  33. package/dist/DatabaseWriter.js.map +1 -1
  34. package/dist/ExecutionMetadata.js +1 -1
  35. package/dist/FunctionImpl.js +2 -2
  36. package/dist/FunctionRegistryItem.d.ts +1 -0
  37. package/dist/FunctionRegistryItem.d.ts.map +1 -1
  38. package/dist/FunctionRegistryItem.js +2 -1
  39. package/dist/FunctionRegistryItem.js.map +1 -1
  40. package/dist/GroupImpl.d.ts +21 -2
  41. package/dist/GroupImpl.d.ts.map +1 -1
  42. package/dist/GroupImpl.js +21 -22
  43. package/dist/GroupImpl.js.map +1 -1
  44. package/dist/GroupRegistry.d.ts +1 -0
  45. package/dist/GroupRegistry.d.ts.map +1 -1
  46. package/dist/GroupRegistry.js +10 -3
  47. package/dist/GroupRegistry.js.map +1 -1
  48. package/dist/Handler.d.ts +8 -4
  49. package/dist/Handler.d.ts.map +1 -1
  50. package/dist/Handler.js.map +1 -1
  51. package/dist/HttpRouter.d.ts +3 -0
  52. package/dist/HttpRouter.d.ts.map +1 -1
  53. package/dist/HttpRouter.js +29 -10
  54. package/dist/HttpRouter.js.map +1 -1
  55. package/dist/MiddlewareImpl.js +1 -1
  56. package/dist/MountInit.d.ts +31 -0
  57. package/dist/MountInit.d.ts.map +1 -0
  58. package/dist/MountInit.js +49 -0
  59. package/dist/MountInit.js.map +1 -0
  60. package/dist/MutationRunner.d.ts +1 -1
  61. package/dist/MutationRunner.d.ts.map +1 -1
  62. package/dist/MutationRunner.js +3 -3
  63. package/dist/MutationRunner.js.map +1 -1
  64. package/dist/MutationTransactionContext.d.ts.map +1 -1
  65. package/dist/MutationTransactionContext.js +4 -3
  66. package/dist/MutationTransactionContext.js.map +1 -1
  67. package/dist/OfficialComponent.d.ts +60 -0
  68. package/dist/OfficialComponent.d.ts.map +1 -0
  69. package/dist/OfficialComponent.js +72 -0
  70. package/dist/OfficialComponent.js.map +1 -0
  71. package/dist/OrderedQuery.d.ts +4 -5
  72. package/dist/OrderedQuery.d.ts.map +1 -1
  73. package/dist/OrderedQuery.js.map +1 -1
  74. package/dist/QueryInitializer.js +2 -2
  75. package/dist/QueryRunner.js +2 -2
  76. package/dist/QueryStream.d.ts +120 -12
  77. package/dist/QueryStream.d.ts.map +1 -1
  78. package/dist/QueryStream.js +143 -41
  79. package/dist/QueryStream.js.map +1 -1
  80. package/dist/QueryStreamCursor.js +1 -1
  81. package/dist/QueryStreamIndexPrefix.js +1 -1
  82. package/dist/QueryStreamIndexRange.js +2 -2
  83. package/dist/QueryStreamKey.js +1 -1
  84. package/dist/QueryStreamKeyBounds.js +2 -2
  85. package/dist/QueryStreamKeyLayout.js +2 -2
  86. package/dist/QueryStreamKeyValues.js +2 -2
  87. package/dist/QueryStreamPagination.js +1 -1
  88. package/dist/QueryStreamReadBudget.d.ts +3 -2
  89. package/dist/QueryStreamReadBudget.d.ts.map +1 -1
  90. package/dist/QueryStreamReadBudget.js +8 -5
  91. package/dist/QueryStreamReadBudget.js.map +1 -1
  92. package/dist/QueryTransactionContext.js +2 -2
  93. package/dist/RegisteredConvexFunction.d.ts +10 -5
  94. package/dist/RegisteredConvexFunction.d.ts.map +1 -1
  95. package/dist/RegisteredConvexFunction.js +49 -29
  96. package/dist/RegisteredConvexFunction.js.map +1 -1
  97. package/dist/RegisteredFunction.d.ts +48 -22
  98. package/dist/RegisteredFunction.d.ts.map +1 -1
  99. package/dist/RegisteredFunction.js +163 -42
  100. package/dist/RegisteredFunction.js.map +1 -1
  101. package/dist/RegisteredNodeFunction.d.ts +1 -1
  102. package/dist/RegisteredNodeFunction.d.ts.map +1 -1
  103. package/dist/RegisteredNodeFunction.js +10 -6
  104. package/dist/RegisteredNodeFunction.js.map +1 -1
  105. package/dist/RegistryItems.d.ts +7 -0
  106. package/dist/RegistryItems.d.ts.map +1 -1
  107. package/dist/RegistryItems.js +8 -3
  108. package/dist/RegistryItems.js.map +1 -1
  109. package/dist/RequestMetadata.js +1 -1
  110. package/dist/Scheduler.d.ts +1 -1
  111. package/dist/Scheduler.d.ts.map +1 -1
  112. package/dist/Scheduler.js +14 -13
  113. package/dist/Scheduler.js.map +1 -1
  114. package/dist/Storage.js +1 -1
  115. package/dist/StorageActionWriter.js +1 -1
  116. package/dist/StorageReader.js +1 -1
  117. package/dist/StorageWriter.js +1 -1
  118. package/dist/Table.d.ts +6 -6
  119. package/dist/Table.d.ts.map +1 -1
  120. package/dist/TableInfo.d.ts +7 -7
  121. package/dist/TableInfo.d.ts.map +1 -1
  122. package/dist/TableInfo.js.map +1 -1
  123. package/dist/TransactionMetadata.js +1 -1
  124. package/dist/VectorSearch.js +1 -1
  125. package/dist/index.d.ts +3 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +21 -18
  128. package/dist/internal/AiGatewayDecisionClient.js +1 -1
  129. package/dist/internal/AiGatewayLanguageClient.js +1 -1
  130. package/dist/internal/AiGatewayServiceToken.js +1 -1
  131. package/dist/internal/DocumentPatch.d.ts +16 -0
  132. package/dist/internal/DocumentPatch.d.ts.map +1 -0
  133. package/dist/internal/DocumentPatch.js +36 -0
  134. package/dist/internal/DocumentPatch.js.map +1 -0
  135. package/dist/internal/httpBody.d.ts +13 -0
  136. package/dist/internal/httpBody.d.ts.map +1 -0
  137. package/dist/internal/httpBody.js +47 -0
  138. package/dist/internal/httpBody.js.map +1 -0
  139. package/dist/internal/httpOptions.d.ts +4 -0
  140. package/dist/internal/httpOptions.d.ts.map +1 -0
  141. package/dist/internal/httpOptions.js +83 -0
  142. package/dist/internal/httpOptions.js.map +1 -0
  143. package/dist/internal/observability.d.ts +5 -0
  144. package/dist/internal/observability.d.ts.map +1 -0
  145. package/dist/internal/observability.js +21 -0
  146. package/dist/internal/observability.js.map +1 -0
  147. package/dist/internal/reservedArgument.d.ts +8 -0
  148. package/dist/internal/reservedArgument.d.ts.map +1 -0
  149. package/dist/internal/reservedArgument.js +30 -0
  150. package/dist/internal/reservedArgument.js.map +1 -0
  151. package/package.json +5 -5
  152. package/src/ActionCall.ts +83 -0
  153. package/src/ActionRunner.ts +3 -2
  154. package/src/Auth.ts +49 -1
  155. package/src/Callback.ts +3 -2
  156. package/src/ComponentCtx.ts +2 -0
  157. package/src/ConvexFunctionDefinitions.ts +2 -1
  158. package/src/CronJobs.ts +2 -1
  159. package/src/DatabaseWriter.ts +190 -26
  160. package/src/FunctionRegistryItem.ts +4 -0
  161. package/src/GroupImpl.ts +61 -8
  162. package/src/GroupRegistry.ts +7 -3
  163. package/src/Handler.ts +21 -5
  164. package/src/HttpRouter.ts +69 -5
  165. package/src/MountInit.ts +80 -0
  166. package/src/MutationRunner.ts +3 -2
  167. package/src/MutationTransactionContext.ts +2 -1
  168. package/src/OfficialComponent.ts +168 -0
  169. package/src/OrderedQuery.ts +4 -5
  170. package/src/QueryStream.ts +391 -61
  171. package/src/QueryStreamReadBudget.ts +19 -6
  172. package/src/RegisteredConvexFunction.ts +39 -2
  173. package/src/RegisteredFunction.ts +305 -49
  174. package/src/RegisteredNodeFunction.ts +11 -1
  175. package/src/RegistryItems.ts +31 -0
  176. package/src/Scheduler.ts +17 -19
  177. package/src/TableInfo.ts +18 -22
  178. package/src/index.ts +3 -0
  179. package/src/internal/DocumentPatch.ts +87 -0
  180. package/src/internal/httpBody.ts +72 -0
  181. package/src/internal/httpOptions.ts +154 -0
  182. package/src/internal/observability.ts +27 -0
  183. package/src/internal/reservedArgument.ts +56 -0
@@ -2,12 +2,12 @@ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { ValueOrder } from "./QueryStreamKeyValues.js";
3
3
  import { entries, make as make$1 } from "./QueryStreamIndexPrefix.js";
4
4
  import { isEmpty } from "./QueryStreamKeyBounds.js";
5
+ import * as Data from "effect/Data";
6
+ import * as Array from "effect/Array";
5
7
  import { identity, pipe } from "effect/Function";
6
8
  import * as Match from "effect/Match";
7
9
  import * as Option from "effect/Option";
8
- import * as Array from "effect/Array";
9
10
  import * as Result from "effect/Result";
10
- import * as Data from "effect/Data";
11
11
  //#region src/QueryStreamIndexRange.ts
12
12
  var QueryStreamIndexRange_exports = /* @__PURE__ */ __exportAll({
13
13
  apply: () => apply,
@@ -1,7 +1,7 @@
1
1
  import { runtimeWidth } from "./QueryStreamKeyLayout.js";
2
+ import * as Data from "effect/Data";
2
3
  import * as Predicate from "effect/Predicate";
3
4
  import * as Result from "effect/Result";
4
- import * as Data from "effect/Data";
5
5
  //#region src/QueryStreamKey.ts
6
6
  const TypeId = "~@confect/server/QueryStreamKey";
7
7
  const QueryStreamKey = Data.taggedEnum();
@@ -2,11 +2,11 @@ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { validateEquivalence } from "./QueryStreamKeyLayout.js";
3
3
  import { prefix, values } from "./QueryStreamKey.js";
4
4
  import { Order as Order$1 } from "./QueryStreamKeyValues.js";
5
- import * as Option from "effect/Option";
5
+ import * as Data from "effect/Data";
6
6
  import * as Array from "effect/Array";
7
+ import * as Option from "effect/Option";
7
8
  import * as Order from "effect/Order";
8
9
  import * as Result from "effect/Result";
9
- import * as Data from "effect/Data";
10
10
  //#region src/QueryStreamKeyBounds.ts
11
11
  var QueryStreamKeyBounds_exports = /* @__PURE__ */ __exportAll({
12
12
  admittedByLower: () => admittedByLower,
@@ -1,10 +1,10 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { hasPrefix, make as make$1 } from "./QueryStreamKeyLabels.js";
3
+ import * as Data from "effect/Data";
4
+ import * as Array from "effect/Array";
3
5
  import { identity } from "effect/Function";
4
6
  import * as Option from "effect/Option";
5
- import * as Array from "effect/Array";
6
7
  import * as Result from "effect/Result";
7
- import * as Data from "effect/Data";
8
8
  import * as Equivalence_ from "effect/Equivalence";
9
9
  //#region src/QueryStreamKeyLayout.ts
10
10
  var QueryStreamKeyLayout_exports = /* @__PURE__ */ __exportAll({
@@ -1,8 +1,8 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import * as Effect from "effect/Effect";
3
- import * as Schema from "effect/Schema";
4
2
  import { compareValues, convexToJson, jsonToConvex } from "convex/values";
3
+ import * as Effect from "effect/Effect";
5
4
  import * as Array from "effect/Array";
5
+ import * as Schema from "effect/Schema";
6
6
  import * as Order_ from "effect/Order";
7
7
  import * as Result from "effect/Result";
8
8
  import * as SchemaIssue from "effect/SchemaIssue";
@@ -1,9 +1,9 @@
1
1
  import { Order } from "./QueryStreamKeyValues.js";
2
+ import * as Data from "effect/Data";
2
3
  import * as Schema from "effect/Schema";
3
4
  import * as Match from "effect/Match";
4
5
  import * as Option from "effect/Option";
5
6
  import * as Result from "effect/Result";
6
- import * as Data from "effect/Data";
7
7
  import * as Chunk from "effect/Chunk";
8
8
  //#region src/QueryStreamPagination.ts
9
9
  const PageSize = Schema.Natural.pipe(Schema.brand("~@confect/server/QueryStreamPagination/PageSize"));
@@ -14,8 +14,9 @@ export interface QueryStreamReadBudget {
14
14
  readonly getReadCounts: Effect.Effect<ReadCounts>;
15
15
  /**
16
16
  * Returns a stream that records reads against this budget and stops
17
- * requesting further batches once exhausted. Apply directly to the document
18
- * source before buffering, filtering, or combining its output.
17
+ * requesting further batches once exhausted, except for one limit-boundary
18
+ * lookahead to detect completion. Apply directly to the document source
19
+ * before buffering, filtering, or combining its output.
19
20
  */
20
21
  readonly accountFor: (encodedDocuments: Stream.Stream<unknown>) => Stream.Stream<unknown>;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueryStreamReadBudget.d.ts","sourceRoot":"","sources":["../src/QueryStreamReadBudget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CAC7B;AAMD;;GAEG;AACH,eAAO,MAAM,MAAM;;;EAGjB,CAAC;AACH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC;;;;AAExC;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,2BAEzC;IACA,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;CACpC,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AASD;;GAEG;AACH,eAAO,MAAM,qBAAqB,+DAEjC,CAAC;AA2BF;;GAEG;AACH,eAAO,MAAM,IAAI;;;wDAuDf,CAAC"}
1
+ {"version":3,"file":"QueryStreamReadBudget.d.ts","sourceRoot":"","sources":["../src/QueryStreamReadBudget.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;CAC7B;AAMD;;GAEG;AACH,eAAO,MAAM,MAAM;;;EAGjB,CAAC;AACH;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC;;;;AAExC;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,2BAEzC;IACA,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;CACpC,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AASD;;GAEG;AACH,eAAO,MAAM,qBAAqB,+DAEjC,CAAC;AA2BF;;GAEG;AACH,eAAO,MAAM,IAAI;;;wDAmEf,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { getDocumentSize } from "convex/values";
2
3
  import * as Context from "effect/Context";
3
4
  import * as Effect from "effect/Effect";
5
+ import * as Data from "effect/Data";
6
+ import * as Array from "effect/Array";
4
7
  import * as Schema from "effect/Schema";
5
8
  import * as Option from "effect/Option";
6
- import { getDocumentSize } from "convex/values";
7
- import * as Array from "effect/Array";
8
- import * as Data from "effect/Data";
9
+ import * as Cause from "effect/Cause";
9
10
  import * as Stream from "effect/Stream";
10
11
  import * as Tuple from "effect/Tuple";
11
- import * as Cause from "effect/Cause";
12
12
  import * as SynchronizedRef from "effect/SynchronizedRef";
13
13
  //#region src/QueryStreamReadBudget.ts
14
14
  var QueryStreamReadBudget_exports = /* @__PURE__ */ __exportAll({
@@ -60,7 +60,10 @@ const make = Effect.fnUntraced(function* (limits) {
60
60
  bytesRead: 0
61
61
  }));
62
62
  const accountForPull = unlimited ? (pull) => Effect.uninterruptibleMask((restore) => Effect.tap(restore(pull), (documents) => SynchronizedRef.update(stateRef, (state) => State.Active(record(state, documents))))) : (pull) => SynchronizedRef.modifyEffect(stateRef, (state) => Effect.gen(function* () {
63
- if (isExhausted(state, limits)) return Tuple.make(Option.none(), State.Stopped(readCounts(state)));
63
+ if (isExhausted(state, limits)) {
64
+ const counts = State.$is("Active")(state) && !Option.exists(limits.maximumRowsRead, (limit) => state.rowsRead > limit) && !Option.exists(limits.maximumBytesRead, (limit) => state.bytesRead > limit) ? record(state, yield* pull) : readCounts(state);
65
+ return Tuple.make(Option.none(), State.Stopped(counts));
66
+ }
64
67
  const documents = yield* pull;
65
68
  return Tuple.make(Option.some(documents), State.Active(record(state, documents)));
66
69
  })).pipe(Effect.flatMap(Option.match({
@@ -1 +1 @@
1
- {"version":3,"file":"QueryStreamReadBudget.js","names":[],"sources":["../src/QueryStreamReadBudget.ts"],"sourcesContent":["import type { GenericDocument } from \"convex/server\";\nimport { getDocumentSize } from \"convex/values\";\nimport * as Array from \"effect/Array\";\nimport * as Cause from \"effect/Cause\";\nimport * as Context from \"effect/Context\";\nimport * as Data from \"effect/Data\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport type * as Pull from \"effect/Pull\";\nimport * as Schema from \"effect/Schema\";\nimport * as Stream from \"effect/Stream\";\nimport * as SynchronizedRef from \"effect/SynchronizedRef\";\nimport * as Tuple from \"effect/Tuple\";\n\n/**\n * @experimental\n */\nexport interface QueryStreamReadBudget {\n readonly isUnlimited: Effect.Effect<boolean>;\n readonly isStopped: Effect.Effect<boolean>;\n readonly isExhausted: Effect.Effect<boolean>;\n readonly getReadCounts: Effect.Effect<ReadCounts>;\n /**\n * Returns a stream that records reads against this budget and stops\n * requesting further batches once exhausted. Apply directly to the document\n * source before buffering, filtering, or combining its output.\n */\n readonly accountFor: (\n encodedDocuments: Stream.Stream<unknown>,\n ) => Stream.Stream<unknown>;\n}\n\nconst ReadLimit = Schema.Natural.pipe(\n Schema.brand(\"~@confect/server/QueryStreamReadBudget/ReadLimit\"),\n);\n\n/**\n * @experimental\n */\nexport const Limits = Schema.Struct({\n maximumRowsRead: Schema.OptionFromOptionalKey(ReadLimit),\n maximumBytesRead: Schema.OptionFromOptionalKey(ReadLimit),\n});\n/**\n * @experimental\n */\nexport type Limits = typeof Limits.Type;\n\n/**\n * @experimental\n */\nexport class InvalidReadLimitError extends Data.TaggedError(\n \"InvalidReadLimitError\",\n)<{\n readonly cause: Schema.SchemaError;\n}> {\n override get message(): string {\n return `Invalid read limits: ${this.cause.message}`;\n }\n}\n\n/**\n * @experimental\n */\nexport interface ReadCounts {\n readonly rowsRead: number;\n readonly bytesRead: number;\n}\n\ntype State = Data.TaggedEnum<{\n Active: ReadCounts;\n Stopped: ReadCounts;\n}>;\n\nconst State = Data.taggedEnum<State>();\n\n/**\n * @experimental\n */\nexport const QueryStreamReadBudget = Context.Service<QueryStreamReadBudget>(\n \"@confect/server/QueryStreamReadBudget\",\n);\n\nconst isExhausted = (state: State, limits: Limits): boolean =>\n State.$match(state, {\n Stopped: () => true,\n Active: ({ rowsRead, bytesRead }) =>\n Option.exists(limits.maximumRowsRead, (limit) => rowsRead >= limit) ||\n Option.exists(limits.maximumBytesRead, (limit) => bytesRead >= limit),\n });\n\nconst readCounts = ({ rowsRead, bytesRead }: ReadCounts): ReadCounts => ({\n rowsRead,\n bytesRead,\n});\n\nconst record = (\n counts: ReadCounts,\n documents: Array.NonEmptyReadonlyArray<unknown>,\n): ReadCounts => ({\n rowsRead: counts.rowsRead + documents.length,\n bytesRead: Array.reduce(\n documents,\n counts.bytesRead,\n (bytes, document) => bytes + getDocumentSize(document as GenericDocument),\n ),\n});\n\n/**\n * @experimental\n */\nexport const make = Effect.fnUntraced(function* (\n limits: Limits,\n): Effect.fn.Return<QueryStreamReadBudget> {\n const unlimited =\n Option.isNone(limits.maximumRowsRead) &&\n Option.isNone(limits.maximumBytesRead);\n const stateRef = yield* SynchronizedRef.make<State>(\n State.Active({ rowsRead: 0, bytesRead: 0 }),\n );\n const accountForPull: (\n pull: Pull.Pull<Array.NonEmptyReadonlyArray<unknown>>,\n ) => Pull.Pull<Array.NonEmptyReadonlyArray<unknown>> = unlimited\n ? (pull) =>\n Effect.uninterruptibleMask((restore) =>\n Effect.tap(restore(pull), (documents) =>\n SynchronizedRef.update(stateRef, (state) =>\n State.Active(record(state, documents)),\n ),\n ),\n )\n : (pull) =>\n SynchronizedRef.modifyEffect(stateRef, (state) =>\n Effect.gen(function* () {\n if (isExhausted(state, limits)) {\n return Tuple.make(\n Option.none(),\n State.Stopped(readCounts(state)),\n );\n }\n const documents = yield* pull;\n return Tuple.make(\n Option.some(documents),\n State.Active(record(state, documents)),\n );\n }),\n ).pipe(\n Effect.flatMap(\n Option.match({\n onNone: () => Cause.done(),\n onSome: Effect.succeed,\n }),\n ),\n );\n return QueryStreamReadBudget.of({\n isUnlimited: Effect.succeed(unlimited),\n isStopped: Effect.map(SynchronizedRef.get(stateRef), State.$is(\"Stopped\")),\n isExhausted: Effect.map(SynchronizedRef.get(stateRef), (state) =>\n isExhausted(state, limits),\n ),\n getReadCounts: Effect.map(SynchronizedRef.get(stateRef), readCounts),\n accountFor: (encodedDocuments) =>\n Stream.transformPull(encodedDocuments, (pull) =>\n Effect.succeed(accountForPull(pull)),\n ).pipe(Stream.scoped),\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAgCA,MAAM,YAAY,OAAO,QAAQ,KAC/B,OAAO,MAAM,kDAAkD,CACjE;;;;AAKA,MAAa,SAAS,OAAO,OAAO;CAClC,iBAAiB,OAAO,sBAAsB,SAAS;CACvD,kBAAkB,OAAO,sBAAsB,SAAS;AAC1D,CAAC;;;;AASD,IAAa,wBAAb,cAA2C,KAAK,YAC9C,uBACF,CAAC,CAEE;CACD,IAAa,UAAkB;EAC7B,OAAO,wBAAwB,KAAK,MAAM;CAC5C;AACF;AAeA,MAAM,QAAQ,KAAK,WAAkB;;;;AAKrC,MAAa,wBAAwB,QAAQ,QAC3C,uCACF;AAEA,MAAM,eAAe,OAAc,WACjC,MAAM,OAAO,OAAO;CAClB,eAAe;CACf,SAAS,EAAE,UAAU,gBACnB,OAAO,OAAO,OAAO,kBAAkB,UAAU,YAAY,KAAK,KAClE,OAAO,OAAO,OAAO,mBAAmB,UAAU,aAAa,KAAK;AACxE,CAAC;AAEH,MAAM,cAAc,EAAE,UAAU,iBAAyC;CACvE;CACA;AACF;AAEA,MAAM,UACJ,QACA,eACgB;CAChB,UAAU,OAAO,WAAW,UAAU;CACtC,WAAW,MAAM,OACf,WACA,OAAO,YACN,OAAO,aAAa,QAAQ,gBAAgB,QAA2B,CAC1E;AACF;;;;AAKA,MAAa,OAAO,OAAO,WAAW,WACpC,QACyC;CACzC,MAAM,YACJ,OAAO,OAAO,OAAO,eAAe,KACpC,OAAO,OAAO,OAAO,gBAAgB;CACvC,MAAM,WAAW,OAAO,gBAAgB,KACtC,MAAM,OAAO;EAAE,UAAU;EAAG,WAAW;CAAE,CAAC,CAC5C;CACA,MAAM,iBAEiD,aAClD,SACC,OAAO,qBAAqB,YAC1B,OAAO,IAAI,QAAQ,IAAI,IAAI,cACzB,gBAAgB,OAAO,WAAW,UAChC,MAAM,OAAO,OAAO,OAAO,SAAS,CAAC,CACvC,CACF,CACF,KACD,SACC,gBAAgB,aAAa,WAAW,UACtC,OAAO,IAAI,aAAa;EACtB,IAAI,YAAY,OAAO,MAAM,GAC3B,OAAO,MAAM,KACX,OAAO,KAAK,GACZ,MAAM,QAAQ,WAAW,KAAK,CAAC,CACjC;EAEF,MAAM,YAAY,OAAO;EACzB,OAAO,MAAM,KACX,OAAO,KAAK,SAAS,GACrB,MAAM,OAAO,OAAO,OAAO,SAAS,CAAC,CACvC;CACF,CAAC,CACH,CAAC,CAAC,KACA,OAAO,QACL,OAAO,MAAM;EACX,cAAc,MAAM,KAAK;EACzB,QAAQ,OAAO;CACjB,CAAC,CACH,CACF;CACN,OAAO,sBAAsB,GAAG;EAC9B,aAAa,OAAO,QAAQ,SAAS;EACrC,WAAW,OAAO,IAAI,gBAAgB,IAAI,QAAQ,GAAG,MAAM,IAAI,SAAS,CAAC;EACzE,aAAa,OAAO,IAAI,gBAAgB,IAAI,QAAQ,IAAI,UACtD,YAAY,OAAO,MAAM,CAC3B;EACA,eAAe,OAAO,IAAI,gBAAgB,IAAI,QAAQ,GAAG,UAAU;EACnE,aAAa,qBACX,OAAO,cAAc,mBAAmB,SACtC,OAAO,QAAQ,eAAe,IAAI,CAAC,CACrC,CAAC,CAAC,KAAK,OAAO,MAAM;CACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"QueryStreamReadBudget.js","names":[],"sources":["../src/QueryStreamReadBudget.ts"],"sourcesContent":["import type { GenericDocument } from \"convex/server\";\nimport { getDocumentSize } from \"convex/values\";\nimport * as Array from \"effect/Array\";\nimport * as Cause from \"effect/Cause\";\nimport * as Context from \"effect/Context\";\nimport * as Data from \"effect/Data\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport type * as Pull from \"effect/Pull\";\nimport * as Schema from \"effect/Schema\";\nimport * as Stream from \"effect/Stream\";\nimport * as SynchronizedRef from \"effect/SynchronizedRef\";\nimport * as Tuple from \"effect/Tuple\";\n\n/**\n * @experimental\n */\nexport interface QueryStreamReadBudget {\n readonly isUnlimited: Effect.Effect<boolean>;\n readonly isStopped: Effect.Effect<boolean>;\n readonly isExhausted: Effect.Effect<boolean>;\n readonly getReadCounts: Effect.Effect<ReadCounts>;\n /**\n * Returns a stream that records reads against this budget and stops\n * requesting further batches once exhausted, except for one limit-boundary\n * lookahead to detect completion. Apply directly to the document source\n * before buffering, filtering, or combining its output.\n */\n readonly accountFor: (\n encodedDocuments: Stream.Stream<unknown>,\n ) => Stream.Stream<unknown>;\n}\n\nconst ReadLimit = Schema.Natural.pipe(\n Schema.brand(\"~@confect/server/QueryStreamReadBudget/ReadLimit\"),\n);\n\n/**\n * @experimental\n */\nexport const Limits = Schema.Struct({\n maximumRowsRead: Schema.OptionFromOptionalKey(ReadLimit),\n maximumBytesRead: Schema.OptionFromOptionalKey(ReadLimit),\n});\n/**\n * @experimental\n */\nexport type Limits = typeof Limits.Type;\n\n/**\n * @experimental\n */\nexport class InvalidReadLimitError extends Data.TaggedError(\n \"InvalidReadLimitError\",\n)<{\n readonly cause: Schema.SchemaError;\n}> {\n override get message(): string {\n return `Invalid read limits: ${this.cause.message}`;\n }\n}\n\n/**\n * @experimental\n */\nexport interface ReadCounts {\n readonly rowsRead: number;\n readonly bytesRead: number;\n}\n\ntype State = Data.TaggedEnum<{\n Active: ReadCounts;\n Stopped: ReadCounts;\n}>;\n\nconst State = Data.taggedEnum<State>();\n\n/**\n * @experimental\n */\nexport const QueryStreamReadBudget = Context.Service<QueryStreamReadBudget>(\n \"@confect/server/QueryStreamReadBudget\",\n);\n\nconst isExhausted = (state: State, limits: Limits): boolean =>\n State.$match(state, {\n Stopped: () => true,\n Active: ({ rowsRead, bytesRead }) =>\n Option.exists(limits.maximumRowsRead, (limit) => rowsRead >= limit) ||\n Option.exists(limits.maximumBytesRead, (limit) => bytesRead >= limit),\n });\n\nconst readCounts = ({ rowsRead, bytesRead }: ReadCounts): ReadCounts => ({\n rowsRead,\n bytesRead,\n});\n\nconst record = (\n counts: ReadCounts,\n documents: Array.NonEmptyReadonlyArray<unknown>,\n): ReadCounts => ({\n rowsRead: counts.rowsRead + documents.length,\n bytesRead: Array.reduce(\n documents,\n counts.bytesRead,\n (bytes, document) => bytes + getDocumentSize(document as GenericDocument),\n ),\n});\n\n/**\n * @experimental\n */\nexport const make = Effect.fnUntraced(function* (\n limits: Limits,\n): Effect.fn.Return<QueryStreamReadBudget> {\n const unlimited =\n Option.isNone(limits.maximumRowsRead) &&\n Option.isNone(limits.maximumBytesRead);\n const stateRef = yield* SynchronizedRef.make<State>(\n State.Active({ rowsRead: 0, bytesRead: 0 }),\n );\n const accountForPull: (\n pull: Pull.Pull<Array.NonEmptyReadonlyArray<unknown>>,\n ) => Pull.Pull<Array.NonEmptyReadonlyArray<unknown>> = unlimited\n ? (pull) =>\n Effect.uninterruptibleMask((restore) =>\n Effect.tap(restore(pull), (documents) =>\n SynchronizedRef.update(stateRef, (state) =>\n State.Active(record(state, documents)),\n ),\n ),\n )\n : (pull) =>\n SynchronizedRef.modifyEffect(stateRef, (state) =>\n Effect.gen(function* () {\n if (isExhausted(state, limits)) {\n const canProbeEnd =\n State.$is(\"Active\")(state) &&\n !Option.exists(\n limits.maximumRowsRead,\n (limit) => state.rowsRead > limit,\n ) &&\n !Option.exists(\n limits.maximumBytesRead,\n (limit) => state.bytesRead > limit,\n );\n // Iterators expose completion only through a pull. Count a\n // lookahead row, but never publish it beyond either limit.\n const counts = canProbeEnd\n ? record(state, yield* pull)\n : readCounts(state);\n return Tuple.make(Option.none(), State.Stopped(counts));\n }\n const documents = yield* pull;\n return Tuple.make(\n Option.some(documents),\n State.Active(record(state, documents)),\n );\n }),\n ).pipe(\n Effect.flatMap(\n Option.match({\n onNone: () => Cause.done(),\n onSome: Effect.succeed,\n }),\n ),\n );\n return QueryStreamReadBudget.of({\n isUnlimited: Effect.succeed(unlimited),\n isStopped: Effect.map(SynchronizedRef.get(stateRef), State.$is(\"Stopped\")),\n isExhausted: Effect.map(SynchronizedRef.get(stateRef), (state) =>\n isExhausted(state, limits),\n ),\n getReadCounts: Effect.map(SynchronizedRef.get(stateRef), readCounts),\n accountFor: (encodedDocuments) =>\n Stream.transformPull(encodedDocuments, (pull) =>\n Effect.succeed(accountForPull(pull)),\n ).pipe(Stream.scoped),\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAiCA,MAAM,YAAY,OAAO,QAAQ,KAC/B,OAAO,MAAM,kDAAkD,CACjE;;;;AAKA,MAAa,SAAS,OAAO,OAAO;CAClC,iBAAiB,OAAO,sBAAsB,SAAS;CACvD,kBAAkB,OAAO,sBAAsB,SAAS;AAC1D,CAAC;;;;AASD,IAAa,wBAAb,cAA2C,KAAK,YAC9C,uBACF,CAAC,CAEE;CACD,IAAa,UAAkB;EAC7B,OAAO,wBAAwB,KAAK,MAAM;CAC5C;AACF;AAeA,MAAM,QAAQ,KAAK,WAAkB;;;;AAKrC,MAAa,wBAAwB,QAAQ,QAC3C,uCACF;AAEA,MAAM,eAAe,OAAc,WACjC,MAAM,OAAO,OAAO;CAClB,eAAe;CACf,SAAS,EAAE,UAAU,gBACnB,OAAO,OAAO,OAAO,kBAAkB,UAAU,YAAY,KAAK,KAClE,OAAO,OAAO,OAAO,mBAAmB,UAAU,aAAa,KAAK;AACxE,CAAC;AAEH,MAAM,cAAc,EAAE,UAAU,iBAAyC;CACvE;CACA;AACF;AAEA,MAAM,UACJ,QACA,eACgB;CAChB,UAAU,OAAO,WAAW,UAAU;CACtC,WAAW,MAAM,OACf,WACA,OAAO,YACN,OAAO,aAAa,QAAQ,gBAAgB,QAA2B,CAC1E;AACF;;;;AAKA,MAAa,OAAO,OAAO,WAAW,WACpC,QACyC;CACzC,MAAM,YACJ,OAAO,OAAO,OAAO,eAAe,KACpC,OAAO,OAAO,OAAO,gBAAgB;CACvC,MAAM,WAAW,OAAO,gBAAgB,KACtC,MAAM,OAAO;EAAE,UAAU;EAAG,WAAW;CAAE,CAAC,CAC5C;CACA,MAAM,iBAEiD,aAClD,SACC,OAAO,qBAAqB,YAC1B,OAAO,IAAI,QAAQ,IAAI,IAAI,cACzB,gBAAgB,OAAO,WAAW,UAChC,MAAM,OAAO,OAAO,OAAO,SAAS,CAAC,CACvC,CACF,CACF,KACD,SACC,gBAAgB,aAAa,WAAW,UACtC,OAAO,IAAI,aAAa;EACtB,IAAI,YAAY,OAAO,MAAM,GAAG;GAa9B,MAAM,SAXJ,MAAM,IAAI,QAAQ,CAAC,CAAC,KAAK,KACzB,CAAC,OAAO,OACN,OAAO,kBACN,UAAU,MAAM,WAAW,KAC9B,KACA,CAAC,OAAO,OACN,OAAO,mBACN,UAAU,MAAM,YAAY,KAC/B,IAIE,OAAO,OAAO,OAAO,IAAI,IACzB,WAAW,KAAK;GACpB,OAAO,MAAM,KAAK,OAAO,KAAK,GAAG,MAAM,QAAQ,MAAM,CAAC;EACxD;EACA,MAAM,YAAY,OAAO;EACzB,OAAO,MAAM,KACX,OAAO,KAAK,SAAS,GACrB,MAAM,OAAO,OAAO,OAAO,SAAS,CAAC,CACvC;CACF,CAAC,CACH,CAAC,CAAC,KACA,OAAO,QACL,OAAO,MAAM;EACX,cAAc,MAAM,KAAK;EACzB,QAAQ,OAAO;CACjB,CAAC,CACH,CACF;CACN,OAAO,sBAAsB,GAAG;EAC9B,aAAa,OAAO,QAAQ,SAAS;EACrC,WAAW,OAAO,IAAI,gBAAgB,IAAI,QAAQ,GAAG,MAAM,IAAI,SAAS,CAAC;EACzE,aAAa,OAAO,IAAI,gBAAgB,IAAI,QAAQ,IAAI,UACtD,YAAY,OAAO,MAAM,CAC3B;EACA,eAAe,OAAO,IAAI,gBAAgB,IAAI,QAAQ,GAAG,UAAU;EACnE,aAAa,qBACX,OAAO,cAAc,mBAAmB,SACtC,OAAO,QAAQ,eAAe,IAAI,CAAC,CACrC,CAAC,CAAC,KAAK,OAAO,MAAM;CACxB,CAAC;AACH,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import * as Context from "effect/Context";
3
- import * as Layer from "effect/Layer";
4
2
  import * as Ref from "@confect/core/Ref";
3
+ import * as Context from "effect/Context";
5
4
  import * as Effect from "effect/Effect";
5
+ import * as Layer from "effect/Layer";
6
6
  //#region src/QueryTransactionContext.ts
7
7
  var QueryTransactionContext_exports = /* @__PURE__ */ __exportAll({
8
8
  QueryTransactionContext: () => QueryTransactionContext,
@@ -263,7 +263,7 @@ export declare const Definition: {
263
263
  readonly handler: RegisteredFunction.Any;
264
264
  }, "_tag">;
265
265
  };
266
- export declare const prepare: (databaseSchema: DatabaseSchema.AnyWithProps, item: FunctionRegistryItem.ConfectFunctionRegistryItem, resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>) => {
266
+ export declare const prepare: (databaseSchema: DatabaseSchema.AnyWithProps, item: FunctionRegistryItem.ConfectFunctionRegistryItem, resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>, observability?: Layer.Layer<never>) => {
267
267
  readonly _tag: "InternalAction";
268
268
  readonly args: import("convex/values").PropertyValidators;
269
269
  readonly returns: import("convex/values").Validator<any, any, any>;
@@ -296,7 +296,7 @@ export declare const prepare: (databaseSchema: DatabaseSchema.AnyWithProps, item
296
296
  };
297
297
  export declare const make: (databaseSchema: DatabaseSchema.AnyWithProps, item: FunctionRegistryItem.ConfectFunctionRegistryItem, resolvedMiddlewares?: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>) => RegisteredFunction.Any;
298
298
  export declare const register: (self: Definition) => RegisteredFunction.Any;
299
- declare const queryFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, }: {
299
+ declare const queryFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, }: {
300
300
  databaseSchema: DatabaseSchema_;
301
301
  name: string;
302
302
  functionVisibility: FunctionVisibility;
@@ -305,12 +305,13 @@ declare const queryFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProp
305
305
  error: Schema.Codec<Error, Value> | undefined;
306
306
  handler: (a: Args) => Effect.Effect<Returns, E, Handler.QueryServices<DatabaseSchema_>>;
307
307
  resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;
308
+ observability?: Layer.Layer<never> | undefined;
308
309
  }) => {
309
310
  args: import("convex/values").PropertyValidators;
310
311
  returns: import("convex/values").Validator<any, any, any>;
311
312
  handler: (ctx: GenericQueryCtx<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>>, actualArgs: ConvexArgs) => Promise<ConvexReturns>;
312
313
  };
313
- export declare const mutationLayer: <Schema extends DatabaseSchema.AnyWithProps>(schema: Schema, ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>) => Layer.Layer<DatabaseReader.DatabaseReaderService<Schema, {}> | DatabaseWriter.DatabaseWriterService<Schema, {}> | ExecutionMetadata.ExecutionMetadata | MutationTransactionContext.MutationTransactionContext | QueryTransactionContext.QueryTransactionContext | RequestMetadata.RequestMetadata | import("./Storage.js").Storage | TransactionMetadata.TransactionMetadata | {
314
+ export declare const mutationLayer: <Schema extends DatabaseSchema.AnyWithProps>(schema: Schema, ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>) => Layer.Layer<DatabaseReader.DatabaseReaderService<Schema, {}> | DatabaseWriter.DatabaseWriterService<Schema, {}> | ExecutionMetadata.ExecutionMetadata | Auth.MutationAuth | MutationTransactionContext.MutationTransactionContext | QueryTransactionContext.QueryTransactionContext | RequestMetadata.RequestMetadata | import("./Storage.js").Storage | TransactionMetadata.TransactionMetadata | {
314
315
  runMutation: {
315
316
  <Mutation extends import("@confect/core/Ref").AnyMutation>(mutation: Mutation, ...args: [...import("@confect/core/Ref").OptionalArgs<Mutation>, options?: undefined]): Effect.Effect<import("@confect/core/Ref").Returns<Mutation>, import("@confect/core/Ref").Error<Mutation> | Schema.SchemaError>;
316
317
  <Mutation extends import("@confect/core/Ref").AnyMutation>(mutation: Mutation, args: import("@confect/core/Ref").Args<Mutation>, options: MutationRunner.Options | undefined): Effect.Effect<import("@confect/core/Ref").Returns<Mutation>, import("@confect/core/Ref").Error<Mutation> | Schema.SchemaError, MutationTransactionContext.MutationTransactionContext>;
@@ -328,28 +329,32 @@ export declare const mutationLayer: <Schema extends DatabaseSchema.AnyWithProps>
328
329
  };
329
330
  } | Scheduler.ForScope<DatabaseSchema.Scope<Schema>> | import("./StorageReader.js").ForScope<DatabaseSchema.Scope<Schema>> | import("./StorageWriter.js").ForScope<DatabaseSchema.Scope<Schema>> | Auth.ForTarget<Schema["target"]> | MutationCtx.MutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>, DatabaseSchema.Scope<Schema>>, never, never>;
330
331
  export type MutationServices<Schema extends DatabaseSchema.AnyWithProps> = Handler.MutationServices<Schema>;
331
- declare const mutationFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, }: {
332
+ declare const mutationFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument, }: {
332
333
  databaseSchema: DatabaseSchema_;
333
334
  name: string;
335
+ reservedArgument?: string | undefined;
334
336
  functionVisibility: FunctionVisibility;
335
337
  args: Schema.Codec<Args, ConvexArgs>;
336
338
  returns: Schema.Codec<Returns, ConvexReturns>;
337
339
  error: Schema.Codec<Error, Value> | undefined;
338
340
  handler: (a: Args) => Effect.Effect<Returns, E, MutationServices<DatabaseSchema_>>;
339
341
  resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;
342
+ observability?: Layer.Layer<never> | undefined;
340
343
  }) => {
341
344
  args: import("convex/values").PropertyValidators;
342
345
  returns: import("convex/values").Validator<any, any, any>;
343
346
  handler: (ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>>, actualArgs: ConvexArgs) => Promise<ConvexReturns>;
344
347
  };
345
- declare const convexActionFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>(schema: DatabaseSchema_, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, }: {
348
+ declare const convexActionFunction: <DatabaseSchema_ extends DatabaseSchema.AnyWithProps, Args, ConvexArgs extends DefaultFunctionArgs, Returns, ConvexReturns, E>(schema: DatabaseSchema_, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument, }: {
346
349
  name: string;
350
+ reservedArgument?: string | undefined;
347
351
  functionVisibility: FunctionVisibility;
348
352
  args: Schema.Codec<Args, ConvexArgs>;
349
353
  returns: Schema.Codec<Returns, ConvexReturns>;
350
354
  error: Schema.Codec<any, any> | undefined;
351
355
  handler: (a: Args) => Effect.Effect<Returns, E, RegisteredFunction.ActionServices<DatabaseSchema_>>;
352
356
  resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;
357
+ observability?: Layer.Layer<never> | undefined;
353
358
  }) => {
354
359
  args: import("convex/values").PropertyValidators;
355
360
  returns: import("convex/values").Validator<any, any, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredConvexFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredConvexFunction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredConvexFunction.d.ts","sourceRoot":"","sources":["../src/RegisteredConvexFunction.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,30 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
- import { layerForTarget } from "./Auth.js";
3
- import { layer } from "./ConvexConfigProvider.js";
4
- import { layer as layer$1 } from "./DatabaseReader.js";
5
- import { layer as layer$2 } from "./DatabaseWriter.js";
6
- import { layer as layer$3 } from "./ExecutionMetadata.js";
7
- import { layer as layer$4 } from "./RequestMetadata.js";
8
- import { layer as layer$5 } from "./TransactionMetadata.js";
9
- import { layer as layer$6 } from "./MutationCtx.js";
10
- import { layer as layer$7 } from "./MutationTransactionContext.js";
11
- import { layer as layer$8 } from "./MutationRunner.js";
12
- import { layer as layer$9 } from "./QueryCtx.js";
13
- import { layer as layer$10 } from "./QueryTransactionContext.js";
14
- import { layer as layer$11 } from "./QueryRunner.js";
15
- import { layer as layer$12 } from "./Scheduler.js";
2
+ import { layer } from "./MutationTransactionContext.js";
3
+ import { layer as layer$1 } from "./MutationRunner.js";
4
+ import { layer as layer$2 } from "./QueryTransactionContext.js";
5
+ import { layer as layer$3 } from "./QueryRunner.js";
6
+ import { layer as layer$4 } from "./Scheduler.js";
7
+ import { layerForTarget, mutationLayer as mutationLayer$1 } from "./Auth.js";
8
+ import { layer as layer$5 } from "./ConvexConfigProvider.js";
9
+ import { layer as layer$6 } from "./ExecutionMetadata.js";
10
+ import { layer as layer$7 } from "./RequestMetadata.js";
16
11
  import { StorageWriter } from "./StorageWriter.js";
17
- import { actionFunctionBase, actionLayer, applyMiddleware, combineErrorSchemas, runHandlerPromise, storageLayer } from "./RegisteredFunction.js";
18
- import * as Layer from "effect/Layer";
12
+ import { actionFunctionBase, actionLayer, applyMiddleware, combineErrorSchemas, domainArgs, invocationMetadata, runHandlerPromise, storageLayer } from "./RegisteredFunction.js";
13
+ import { layer as layer$8 } from "./DatabaseReader.js";
14
+ import { layer as layer$9 } from "./DatabaseWriter.js";
15
+ import { layer as layer$10 } from "./TransactionMetadata.js";
16
+ import { layer as layer$11 } from "./MutationCtx.js";
17
+ import { layer as layer$12 } from "./QueryCtx.js";
19
18
  import * as Effect from "effect/Effect";
19
+ import * as Data from "effect/Data";
20
+ import * as Layer from "effect/Layer";
21
+ import * as Duration from "effect/Duration";
20
22
  import { actionGeneric, internalActionGeneric, internalMutationGeneric, internalQueryGeneric, mutationGeneric, queryGeneric } from "convex/server";
21
23
  import * as Schema from "effect/Schema";
22
24
  import { pipe } from "effect/Function";
23
25
  import * as Match from "effect/Match";
24
26
  import { compileArgsSchema, compileReturnsSchema } from "@confect/core/SchemaToValidator";
25
27
  import * as Clock from "effect/Clock";
26
- import * as Data from "effect/Data";
27
- import * as Duration from "effect/Duration";
28
28
  import * as EffectScheduler from "effect/Scheduler";
29
29
  //#region src/RegisteredConvexFunction.ts
30
30
  var RegisteredConvexFunction_exports = /* @__PURE__ */ __exportAll({
@@ -35,10 +35,11 @@ var RegisteredConvexFunction_exports = /* @__PURE__ */ __exportAll({
35
35
  register: () => register
36
36
  });
37
37
  const Definition = Data.taggedEnum();
38
- const prepare = (databaseSchema, item, resolvedMiddlewares = []) => Match.value(item.functionType).pipe(Match.when("query", () => {
38
+ const prepare = (databaseSchema, item, resolvedMiddlewares = [], observability) => Match.value(item.functionType).pipe(Match.when("query", () => {
39
39
  const definition = queryFunction({
40
40
  databaseSchema,
41
41
  name: item.name,
42
+ observability,
42
43
  functionVisibility: item.functionVisibility,
43
44
  args: item.args,
44
45
  returns: item.returns,
@@ -51,6 +52,8 @@ const prepare = (databaseSchema, item, resolvedMiddlewares = []) => Match.value(
51
52
  const definition = mutationFunction({
52
53
  databaseSchema,
53
54
  name: item.name,
55
+ reservedArgument: item.reservedArgument,
56
+ observability,
54
57
  functionVisibility: item.functionVisibility,
55
58
  args: item.args,
56
59
  returns: item.returns,
@@ -62,6 +65,8 @@ const prepare = (databaseSchema, item, resolvedMiddlewares = []) => Match.value(
62
65
  }), Match.when("action", () => {
63
66
  const definition = convexActionFunction(databaseSchema, {
64
67
  name: item.name,
68
+ reservedArgument: item.reservedArgument,
69
+ observability,
65
70
  functionVisibility: item.functionVisibility,
66
71
  args: item.args,
67
72
  returns: item.returns,
@@ -108,7 +113,7 @@ const queryClock = {
108
113
  return Effect.sync(() => clearTimeout(handle));
109
114
  })
110
115
  };
111
- const queryFunction = ({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares }) => ({
116
+ const queryFunction = ({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability }) => ({
112
117
  args: compileArgsSchema(args, databaseSchema.target.scope),
113
118
  returns: compileReturnsSchema(returns, databaseSchema.target.scope),
114
119
  handler: (ctx, actualArgs) => Effect.gen(function* () {
@@ -118,16 +123,23 @@ const queryFunction = ({ databaseSchema, name, functionVisibility, args, returns
118
123
  functionType: "query",
119
124
  functionVisibility,
120
125
  args: decodedArgs
121
- }).pipe(Effect.provide(Layer.mergeAll(layer$1(databaseSchema, ctx.db), layer$3(ctx.meta), layer$5(ctx.meta), layer$10(ctx), layerForTarget(databaseSchema.target, ctx.auth), storageLayer(ctx.storage), layer$11(ctx.runQuery), layer$9(ctx, databaseSchema.target.scope), layer)));
126
+ }).pipe(Effect.provide(Layer.mergeAll(layer$8(databaseSchema, ctx.db), layer$6(ctx.meta), layer$10(ctx.meta), layer$2(ctx), layerForTarget(databaseSchema.target, ctx.auth), storageLayer(ctx.storage), layer$3(ctx.runQuery), layer$12(ctx, databaseSchema.target.scope), layer$5)));
122
127
  return yield* pipe(decodedReturns, Schema.encodeEffect(returns), Effect.catchTag("SchemaError", Effect.die));
123
- }).pipe(Effect.provideService(Clock.Clock, queryClock), runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), { scheduler: new EffectScheduler.MixedScheduler("sync") }))
128
+ }).pipe(Effect.provideService(Clock.Clock, queryClock), runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {
129
+ scheduler: new EffectScheduler.MixedScheduler("sync"),
130
+ invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),
131
+ clock: observability === void 0 ? void 0 : queryClock,
132
+ observability,
133
+ meta: ctx.meta,
134
+ functionType: "query"
135
+ }))
124
136
  });
125
- const mutationLayer = (schema, ctx) => Layer.mergeAll(layer$1(schema, ctx.db), layer$2(schema, ctx.db), layer$3(ctx.meta), layer$4(ctx.meta), layer$5(ctx.meta), layerForTarget(schema.target, ctx.auth), layer$12(ctx.scheduler, schema.target.scope), storageLayer(ctx.storage), StorageWriter.layer(ctx.storage, schema.target.scope), layer$11(ctx.runQuery), layer$8(ctx.runMutation), layer$10(ctx), layer$7(ctx), layer$6(ctx, schema.target.scope), layer);
126
- const mutationFunction = ({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares }) => ({
127
- args: compileArgsSchema(args, databaseSchema.target.scope),
137
+ const mutationLayer = (schema, ctx) => Layer.mergeAll(layer$8(schema, ctx.db), layer$9(schema, ctx.db), layer$6(ctx.meta), layer$7(ctx.meta), layer$10(ctx.meta), layerForTarget(schema.target, ctx.auth), mutationLayer$1(ctx.auth), layer$4(ctx.scheduler, schema.target.scope), storageLayer(ctx.storage), StorageWriter.layer(ctx.storage, schema.target.scope), layer$3(ctx.runQuery), layer$1(ctx.runMutation), layer$2(ctx), layer(ctx), layer$11(ctx, schema.target.scope), layer$5);
138
+ const mutationFunction = ({ databaseSchema, name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument }) => ({
139
+ args: compileArgsSchema(args, databaseSchema.target.scope, reservedArgument, name),
128
140
  returns: compileReturnsSchema(returns, databaseSchema.target.scope),
129
141
  handler: (ctx, actualArgs) => Effect.gen(function* () {
130
- const decodedArgs = yield* pipe(actualArgs, Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
142
+ const decodedArgs = yield* pipe(domainArgs(actualArgs, reservedArgument), Schema.decodeUnknownEffect(args), Effect.catchTag("SchemaError", Effect.die));
131
143
  const decodedReturns = yield* applyMiddleware(handler(decodedArgs), resolvedMiddlewares, {
132
144
  name,
133
145
  functionType: "mutation",
@@ -135,9 +147,15 @@ const mutationFunction = ({ databaseSchema, name, functionVisibility, args, retu
135
147
  args: decodedArgs
136
148
  }).pipe(Effect.provide(mutationLayer(databaseSchema, ctx)));
137
149
  return yield* pipe(decodedReturns, Schema.encodeEffect(returns), Effect.catchTag("SchemaError", Effect.die));
138
- }).pipe(runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), { scheduler: new EffectScheduler.MixedScheduler("sync") }))
150
+ }).pipe(runHandlerPromise(combineErrorSchemas(error, resolvedMiddlewares), {
151
+ scheduler: new EffectScheduler.MixedScheduler("sync"),
152
+ invocation: invocationMetadata(ctx.meta, actualArgs, reservedArgument),
153
+ observability,
154
+ meta: ctx.meta,
155
+ functionType: "mutation"
156
+ }))
139
157
  });
140
- const convexActionFunction = (schema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares }) => actionFunctionBase({
158
+ const convexActionFunction = (schema, { name, functionVisibility, args, returns, error, handler, resolvedMiddlewares, observability, reservedArgument }) => actionFunctionBase({
141
159
  scope: schema.target.scope,
142
160
  name,
143
161
  functionVisibility,
@@ -146,7 +164,9 @@ const convexActionFunction = (schema, { name, functionVisibility, args, returns,
146
164
  error,
147
165
  handler,
148
166
  resolvedMiddlewares,
149
- createLayer: (ctx) => Layer.mergeAll(actionLayer(schema, ctx), layer)
167
+ observability,
168
+ reservedArgument,
169
+ createLayer: (ctx) => Layer.mergeAll(actionLayer(schema, ctx), layer$5)
150
170
  });
151
171
  //#endregion
152
172
  export { Definition, RegisteredConvexFunction_exports, make, mutationLayer, prepare, register };
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredConvexFunction.js","names":["RegisteredFunction.applyMiddleware","DatabaseReader.layer","ExecutionMetadata.layer","TransactionMetadata.layer","QueryTransactionContext.layer","Auth.layerForTarget","RegisteredFunction.storageLayer","QueryRunner.layer","QueryCtx.layer","ConvexConfigProvider.layer","RegisteredFunction.runHandlerPromise","RegisteredFunction.combineErrorSchemas","DatabaseWriter.layer","RequestMetadata.layer","Scheduler.layer","MutationRunner.layer","MutationTransactionContext.layer","MutationCtx.layer","RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredConvexFunction.ts"],"sourcesContent":["import {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type GenericMutationCtx,\n type GenericQueryCtx,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n mutationGeneric,\n queryGeneric,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Clock from \"effect/Clock\";\nimport * as Data from \"effect/Data\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Match from \"effect/Match\";\nimport * as Schema from \"effect/Schema\";\nimport * as EffectScheduler from \"effect/Scheduler\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexConfigProvider from \"./ConvexConfigProvider.js\";\nimport * as DatabaseReader from \"./DatabaseReader.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport * as DatabaseWriter from \"./DatabaseWriter.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as TransactionMetadata from \"./TransactionMetadata.js\";\nimport * as MutationCtx from \"./MutationCtx.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as MutationTransactionContext from \"./MutationTransactionContext.js\";\nimport * as QueryCtx from \"./QueryCtx.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport * as QueryTransactionContext from \"./QueryTransactionContext.js\";\nimport * as RegisteredFunction from \"./RegisteredFunction.js\";\nimport type * as FunctionRegistryItem from \"./FunctionRegistryItem.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport { StorageWriter } from \"./StorageWriter.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport type Definition = Data.TaggedEnum<{\n PublicQuery: ReturnType<typeof queryFunction>;\n InternalQuery: ReturnType<typeof queryFunction>;\n PublicMutation: ReturnType<typeof mutationFunction>;\n InternalMutation: ReturnType<typeof mutationFunction>;\n PublicAction: ReturnType<typeof convexActionFunction>;\n InternalAction: ReturnType<typeof convexActionFunction>;\n Registered: { readonly handler: RegisteredFunction.Any };\n}>;\nexport const Definition = Data.taggedEnum<Definition>();\n\nexport const prepare = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n) =>\n Match.value(item.functionType).pipe(\n Match.when(\"query\", () => {\n const definition = queryFunction({\n databaseSchema,\n name: item.name,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n });\n return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicQuery(definition)),\n Match.when(\"internal\", () => Definition.InternalQuery(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"mutation\", () => {\n const definition = mutationFunction({\n databaseSchema,\n name: item.name,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n });\n return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicMutation(definition)),\n Match.when(\"internal\", () => Definition.InternalMutation(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"action\", () => {\n const definition = convexActionFunction(databaseSchema, {\n name: item.name,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n });\n return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicAction(definition)),\n Match.when(\"internal\", () => Definition.InternalAction(definition)),\n Match.exhaustive,\n );\n }),\n Match.exhaustive,\n );\n\nexport const make = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n): RegisteredFunction.Any =>\n register(prepare(databaseSchema, item, resolvedMiddlewares));\n\nexport const register = (self: Definition): RegisteredFunction.Any =>\n Definition.$match(self, {\n PublicQuery: (definition) => queryGeneric(definition),\n InternalQuery: (definition) => internalQueryGeneric(definition),\n PublicMutation: (definition) => mutationGeneric(definition),\n InternalMutation: (definition) => internalMutationGeneric(definition),\n PublicAction: (definition) => actionGeneric(definition),\n InternalAction: (definition) => internalActionGeneric(definition),\n Registered: ({ handler }) => handler,\n });\n\n/**\n * Convex evicts a query from its cache once the execution observes the current\n * time (every `Date.now()` read is tracked). Effect's logging, span, and\n * elapsed-time machinery reads timestamps through the ambient `Clock`'s unsafe\n * accessors, which would silently opt any logging or timing query out of the\n * cache—and there is no untracked time source in the isolate to serve them\n * from, since Effect's own live clock falls back to `Date.now()` for monotonic\n * time when neither `process.hrtime` nor `performance.now` exists. Queries\n * therefore run with a `Clock` whose unsafe accessors all return constants, so\n * logging and spans never touch the tracker and `Effect.timed` and duration\n * metrics report a zero elapsed time, while the effectful accessors\n * (`Clock.currentTimeMillis`/`currentTimeNanos`/`monotonicTimeNanos`) read the\n * real time, making them an explicit opt-in to cache eviction. Raw `Date.now()`\n * calls in handler code likewise opt out honestly.\n */\nconst queryClock: Clock.Clock = {\n currentTimeMillisUnsafe: () => 0,\n currentTimeNanosUnsafe: () => 0n,\n monotonicTimeNanosUnsafe: () => 0n,\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeMillis: Effect.sync(() => Date.now()),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n monotonicTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // `Effect.sleep` resolves the ambient clock, so it cannot be used here—it\n // would recurse straight back into this `sleep`.\n sleep: (duration) =>\n Effect.callback<void>((resume) => {\n // oxlint-disable-next-line effecttsgo/global-timers-in-effect -- Effect.sleep would resolve this Clock and recurse.\n const handle = setTimeout(\n () => resume(Effect.void),\n Duration.toMillis(duration),\n );\n return Effect.sync(() => clearTimeout(handle));\n }),\n};\n\nconst queryFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n}: {\n databaseSchema: DatabaseSchema_;\n name: string;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<Returns, E, Handler.QueryServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n}) => ({\n args: compileArgsSchema(args, databaseSchema.target.scope),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericQueryCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n actualArgs,\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"query\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(\n Effect.provide(\n Layer.mergeAll(\n DatabaseReader.layer(databaseSchema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n QueryTransactionContext.layer(ctx),\n Auth.layerForTarget<DatabaseSchema_[\"target\"]>(\n databaseSchema.target,\n ctx.auth,\n ),\n RegisteredFunction.storageLayer<\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx.storage),\n QueryRunner.layer(ctx.runQuery),\n QueryCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>,\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx, databaseSchema.target.scope),\n ConvexConfigProvider.layer,\n ),\n ),\n );\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n Effect.provideService(Clock.Clock, queryClock),\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n },\n ),\n ),\n});\n\nexport const mutationLayer = <Schema extends DatabaseSchema.AnyWithProps>(\n schema: Schema,\n ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n) =>\n Layer.mergeAll(\n DatabaseReader.layer(schema, ctx.db),\n DatabaseWriter.layer(schema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n Auth.layerForTarget<Schema[\"target\"]>(schema.target, ctx.auth),\n Scheduler.layer<DatabaseSchema.Scope<Schema>>(\n ctx.scheduler,\n schema.target.scope,\n ),\n RegisteredFunction.storageLayer<DatabaseSchema.Scope<Schema>>(ctx.storage),\n StorageWriter.layer<DatabaseSchema.Scope<Schema>>(\n ctx.storage,\n schema.target.scope,\n ),\n QueryRunner.layer(ctx.runQuery),\n MutationRunner.layer(ctx.runMutation),\n QueryTransactionContext.layer(ctx),\n MutationTransactionContext.layer(ctx),\n MutationCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<Schema>>,\n DatabaseSchema.Scope<Schema>\n >(ctx, schema.target.scope),\n ConvexConfigProvider.layer,\n );\n\nexport type MutationServices<Schema extends DatabaseSchema.AnyWithProps> =\n Handler.MutationServices<Schema>;\n\nconst mutationFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n}: {\n databaseSchema: DatabaseSchema_;\n name: string;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<Returns, E, MutationServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n}) => ({\n args: compileArgsSchema(args, databaseSchema.target.scope),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericMutationCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n actualArgs,\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"mutation\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(mutationLayer(databaseSchema, ctx)));\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n },\n ),\n ),\n});\n\nconst convexActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n schema: DatabaseSchema_,\n {\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n }: {\n name: string;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<any, any> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<\n Returns,\n E,\n RegisteredFunction.ActionServices<DatabaseSchema_>\n >;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n scope: schema.target.scope,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n createLayer: (ctx) =>\n Layer.mergeAll(\n RegisteredFunction.actionLayer(schema, ctx),\n ConvexConfigProvider.layer,\n ),\n });\n"],"mappings":"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"}
1
+ {"version":3,"file":"RegisteredConvexFunction.js","names":["RegisteredFunction.applyMiddleware","DatabaseReader.layer","ExecutionMetadata.layer","TransactionMetadata.layer","QueryTransactionContext.layer","Auth.layerForTarget","RegisteredFunction.storageLayer","QueryRunner.layer","QueryCtx.layer","ConvexConfigProvider.layer","RegisteredFunction.runHandlerPromise","RegisteredFunction.combineErrorSchemas","DatabaseWriter.layer","RequestMetadata.layer","Auth.mutationLayer","Scheduler.layer","MutationRunner.layer","MutationTransactionContext.layer","MutationCtx.layer","RegisteredFunction.domainArgs","RegisteredFunction.invocationMetadata","RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredConvexFunction.ts"],"sourcesContent":["import {\n compileArgsSchema,\n compileReturnsSchema,\n} from \"@confect/core/SchemaToValidator\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n type FunctionVisibility,\n type GenericMutationCtx,\n type GenericQueryCtx,\n internalActionGeneric,\n internalMutationGeneric,\n internalQueryGeneric,\n mutationGeneric,\n queryGeneric,\n} from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Clock from \"effect/Clock\";\nimport * as Data from \"effect/Data\";\nimport * as Duration from \"effect/Duration\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\nimport * as Match from \"effect/Match\";\nimport * as Schema from \"effect/Schema\";\nimport * as EffectScheduler from \"effect/Scheduler\";\nimport * as Auth from \"./Auth.js\";\nimport * as ConvexConfigProvider from \"./ConvexConfigProvider.js\";\nimport * as DatabaseReader from \"./DatabaseReader.js\";\nimport type * as DatabaseSchema from \"./DatabaseSchema.js\";\nimport * as DatabaseWriter from \"./DatabaseWriter.js\";\nimport type * as DataModel from \"./DataModel.js\";\nimport * as ExecutionMetadata from \"./ExecutionMetadata.js\";\nimport * as RequestMetadata from \"./RequestMetadata.js\";\nimport * as TransactionMetadata from \"./TransactionMetadata.js\";\nimport * as MutationCtx from \"./MutationCtx.js\";\nimport * as MutationRunner from \"./MutationRunner.js\";\nimport * as MutationTransactionContext from \"./MutationTransactionContext.js\";\nimport * as QueryCtx from \"./QueryCtx.js\";\nimport * as QueryRunner from \"./QueryRunner.js\";\nimport * as QueryTransactionContext from \"./QueryTransactionContext.js\";\nimport * as RegisteredFunction from \"./RegisteredFunction.js\";\nimport type * as FunctionRegistryItem from \"./FunctionRegistryItem.js\";\nimport type * as ResolvedMiddleware from \"./ResolvedMiddleware.js\";\nimport * as Scheduler from \"./Scheduler.js\";\nimport { StorageWriter } from \"./StorageWriter.js\";\nimport type * as Handler from \"./Handler.js\";\n\nexport type Definition = Data.TaggedEnum<{\n PublicQuery: ReturnType<typeof queryFunction>;\n InternalQuery: ReturnType<typeof queryFunction>;\n PublicMutation: ReturnType<typeof mutationFunction>;\n InternalMutation: ReturnType<typeof mutationFunction>;\n PublicAction: ReturnType<typeof convexActionFunction>;\n InternalAction: ReturnType<typeof convexActionFunction>;\n Registered: { readonly handler: RegisteredFunction.Any };\n}>;\nexport const Definition = Data.taggedEnum<Definition>();\n\nexport const prepare = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n observability?: Layer.Layer<never>,\n) =>\n Match.value(item.functionType).pipe(\n Match.when(\"query\", () => {\n const definition = queryFunction({\n databaseSchema,\n name: item.name,\n observability,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n });\n return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicQuery(definition)),\n Match.when(\"internal\", () => Definition.InternalQuery(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"mutation\", () => {\n const definition = mutationFunction({\n databaseSchema,\n name: item.name,\n reservedArgument: item.reservedArgument,\n observability,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n });\n return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicMutation(definition)),\n Match.when(\"internal\", () => Definition.InternalMutation(definition)),\n Match.exhaustive,\n );\n }),\n Match.when(\"action\", () => {\n const definition = convexActionFunction(databaseSchema, {\n name: item.name,\n reservedArgument: item.reservedArgument,\n observability,\n functionVisibility: item.functionVisibility,\n args: item.args,\n returns: item.returns,\n error: item.error,\n handler: item.handler,\n resolvedMiddlewares,\n });\n return Match.value(item.functionVisibility).pipe(\n Match.when(\"public\", () => Definition.PublicAction(definition)),\n Match.when(\"internal\", () => Definition.InternalAction(definition)),\n Match.exhaustive,\n );\n }),\n Match.exhaustive,\n );\n\nexport const make = (\n databaseSchema: DatabaseSchema.AnyWithProps,\n item: FunctionRegistryItem.ConfectFunctionRegistryItem,\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware> = [],\n): RegisteredFunction.Any =>\n register(prepare(databaseSchema, item, resolvedMiddlewares));\n\nexport const register = (self: Definition): RegisteredFunction.Any =>\n Definition.$match(self, {\n PublicQuery: (definition) => queryGeneric(definition),\n InternalQuery: (definition) => internalQueryGeneric(definition),\n PublicMutation: (definition) => mutationGeneric(definition),\n InternalMutation: (definition) => internalMutationGeneric(definition),\n PublicAction: (definition) => actionGeneric(definition),\n InternalAction: (definition) => internalActionGeneric(definition),\n Registered: ({ handler }) => handler,\n });\n\n/**\n * Convex evicts a query from its cache once the execution observes the current\n * time (every `Date.now()` read is tracked). Effect's logging, span, and\n * elapsed-time machinery reads timestamps through the ambient `Clock`'s unsafe\n * accessors, which would silently opt any logging or timing query out of the\n * cache—and there is no untracked time source in the isolate to serve them\n * from, since Effect's own live clock falls back to `Date.now()` for monotonic\n * time when neither `process.hrtime` nor `performance.now` exists. Queries\n * therefore run with a `Clock` whose unsafe accessors all return constants, so\n * logging and spans never touch the tracker and `Effect.timed` and duration\n * metrics report a zero elapsed time, while the effectful accessors\n * (`Clock.currentTimeMillis`/`currentTimeNanos`/`monotonicTimeNanos`) read the\n * real time, making them an explicit opt-in to cache eviction. Raw `Date.now()`\n * calls in handler code likewise opt out honestly.\n */\nconst queryClock: Clock.Clock = {\n currentTimeMillisUnsafe: () => 0,\n currentTimeNanosUnsafe: () => 0n,\n monotonicTimeNanosUnsafe: () => 0n,\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeMillis: Effect.sync(() => Date.now()),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n currentTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // oxlint-disable-next-line effecttsgo/global-date-in-effect -- This access intentionally notifies Convex's query-cache tracker.\n monotonicTimeNanos: Effect.sync(() => BigInt(Date.now()) * 1_000_000n),\n // `Effect.sleep` resolves the ambient clock, so it cannot be used here—it\n // would recurse straight back into this `sleep`.\n sleep: (duration) =>\n Effect.callback<void>((resume) => {\n // oxlint-disable-next-line effecttsgo/global-timers-in-effect -- Effect.sleep would resolve this Clock and recurse.\n const handle = setTimeout(\n () => resume(Effect.void),\n Duration.toMillis(duration),\n );\n return Effect.sync(() => clearTimeout(handle));\n }),\n};\n\nconst queryFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n}: {\n databaseSchema: DatabaseSchema_;\n name: string;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<Returns, E, Handler.QueryServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(args, databaseSchema.target.scope),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericQueryCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n actualArgs,\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"query\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(\n Effect.provide(\n Layer.mergeAll(\n DatabaseReader.layer(databaseSchema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n QueryTransactionContext.layer(ctx),\n Auth.layerForTarget<DatabaseSchema_[\"target\"]>(\n databaseSchema.target,\n ctx.auth,\n ),\n RegisteredFunction.storageLayer<\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx.storage),\n QueryRunner.layer(ctx.runQuery),\n QueryCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>,\n DatabaseSchema.Scope<DatabaseSchema_>\n >(ctx, databaseSchema.target.scope),\n ConvexConfigProvider.layer,\n ),\n ),\n );\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n Effect.provideService(Clock.Clock, queryClock),\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n invocation: Effect.promise(() => ctx.meta.getFunctionMetadata()),\n clock: observability === undefined ? undefined : queryClock,\n observability,\n meta: ctx.meta,\n functionType: \"query\",\n },\n ),\n ),\n});\n\nexport const mutationLayer = <Schema extends DatabaseSchema.AnyWithProps>(\n schema: Schema,\n ctx: GenericMutationCtx<DataModel.ToConvex<DataModel.FromSchema<Schema>>>,\n) =>\n Layer.mergeAll(\n DatabaseReader.layer(schema, ctx.db),\n DatabaseWriter.layer(schema, ctx.db),\n ExecutionMetadata.layer(ctx.meta),\n RequestMetadata.layer(ctx.meta),\n TransactionMetadata.layer(ctx.meta),\n Auth.layerForTarget<Schema[\"target\"]>(schema.target, ctx.auth),\n Auth.mutationLayer(ctx.auth),\n Scheduler.layer<DatabaseSchema.Scope<Schema>>(\n ctx.scheduler,\n schema.target.scope,\n ),\n RegisteredFunction.storageLayer<DatabaseSchema.Scope<Schema>>(ctx.storage),\n StorageWriter.layer<DatabaseSchema.Scope<Schema>>(\n ctx.storage,\n schema.target.scope,\n ),\n QueryRunner.layer(ctx.runQuery),\n MutationRunner.layer(ctx.runMutation),\n QueryTransactionContext.layer(ctx),\n MutationTransactionContext.layer(ctx),\n MutationCtx.layer<\n DataModel.ToConvex<DataModel.FromSchema<Schema>>,\n DatabaseSchema.Scope<Schema>\n >(ctx, schema.target.scope),\n ConvexConfigProvider.layer,\n );\n\nexport type MutationServices<Schema extends DatabaseSchema.AnyWithProps> =\n Handler.MutationServices<Schema>;\n\nconst mutationFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>({\n databaseSchema,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n reservedArgument,\n}: {\n databaseSchema: DatabaseSchema_;\n name: string;\n reservedArgument?: string | undefined;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<Error, Value> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<Returns, E, MutationServices<DatabaseSchema_>>;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n}) => ({\n args: compileArgsSchema(\n args,\n databaseSchema.target.scope,\n reservedArgument,\n name,\n ),\n returns: compileReturnsSchema(returns, databaseSchema.target.scope),\n handler: (\n ctx: GenericMutationCtx<\n DataModel.ToConvex<DataModel.FromSchema<DatabaseSchema_>>\n >,\n actualArgs: ConvexArgs,\n ): Promise<ConvexReturns> =>\n Effect.gen(function* () {\n const decodedArgs = yield* pipe(\n RegisteredFunction.domainArgs(actualArgs, reservedArgument),\n Schema.decodeUnknownEffect(args),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Middleware errors are intentionally erased here and validated by runHandlerPromise against the combined error schema below.\n const decodedReturns = yield* RegisteredFunction.applyMiddleware(\n handler(decodedArgs),\n resolvedMiddlewares,\n {\n name,\n functionType: \"mutation\",\n functionVisibility,\n args: decodedArgs,\n },\n ).pipe(Effect.provide(mutationLayer(databaseSchema, ctx)));\n return yield* pipe(\n decodedReturns,\n Schema.encodeEffect(returns),\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n }).pipe(\n RegisteredFunction.runHandlerPromise(\n RegisteredFunction.combineErrorSchemas(error, resolvedMiddlewares),\n {\n scheduler: new EffectScheduler.MixedScheduler(\"sync\"),\n invocation: RegisteredFunction.invocationMetadata(\n ctx.meta,\n actualArgs,\n reservedArgument,\n ),\n observability,\n meta: ctx.meta,\n functionType: \"mutation\",\n },\n ),\n ),\n});\n\nconst convexActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n schema: DatabaseSchema_,\n {\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n reservedArgument,\n }: {\n name: string;\n reservedArgument?: string | undefined;\n functionVisibility: FunctionVisibility;\n args: Schema.Codec<Args, ConvexArgs>;\n returns: Schema.Codec<Returns, ConvexReturns>;\n error: Schema.Codec<any, any> | undefined;\n handler: (\n a: Args,\n ) => Effect.Effect<\n Returns,\n E,\n RegisteredFunction.ActionServices<DatabaseSchema_>\n >;\n resolvedMiddlewares: ReadonlyArray<ResolvedMiddleware.ResolvedMiddleware>;\n observability?: Layer.Layer<never> | undefined;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n scope: schema.target.scope,\n name,\n functionVisibility,\n args,\n returns,\n error,\n handler,\n resolvedMiddlewares,\n observability,\n reservedArgument,\n createLayer: (ctx) =>\n Layer.mergeAll(\n RegisteredFunction.actionLayer(schema, ctx),\n ConvexConfigProvider.layer,\n ),\n });\n"],"mappings":"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"}