@confect/server 2.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/ActionRunner.d.ts +2 -2
  3. package/dist/ActionRunner.d.ts.map +1 -1
  4. package/dist/ActionRunner.js +9 -7
  5. package/dist/ActionRunner.js.map +1 -1
  6. package/dist/BlobNotFoundError.d.ts +17 -0
  7. package/dist/BlobNotFoundError.d.ts.map +1 -0
  8. package/dist/BlobNotFoundError.js +14 -0
  9. package/dist/BlobNotFoundError.js.map +1 -0
  10. package/dist/CronJob.d.ts +22 -0
  11. package/dist/CronJob.d.ts.map +1 -0
  12. package/dist/CronJob.js +23 -0
  13. package/dist/CronJob.js.map +1 -0
  14. package/dist/CronJobs.d.ts +28 -0
  15. package/dist/CronJobs.d.ts.map +1 -0
  16. package/dist/CronJobs.js +75 -0
  17. package/dist/CronJobs.js.map +1 -0
  18. package/dist/DatabaseWriter.d.ts +4 -4
  19. package/dist/FunctionImpl.js +2 -2
  20. package/dist/FunctionImpl.js.map +1 -1
  21. package/dist/Handler.d.ts +22 -14
  22. package/dist/Handler.d.ts.map +1 -1
  23. package/dist/Handler.js.map +1 -1
  24. package/dist/HttpApi.d.ts +3 -1
  25. package/dist/HttpApi.d.ts.map +1 -1
  26. package/dist/HttpApi.js +3 -1
  27. package/dist/HttpApi.js.map +1 -1
  28. package/dist/MutationRunner.d.ts +2 -2
  29. package/dist/MutationRunner.d.ts.map +1 -1
  30. package/dist/MutationRunner.js +9 -7
  31. package/dist/MutationRunner.js.map +1 -1
  32. package/dist/OrderedQuery.d.ts +2 -2
  33. package/dist/OrderedQuery.d.ts.map +1 -1
  34. package/dist/OrderedQuery.js +3 -2
  35. package/dist/OrderedQuery.js.map +1 -1
  36. package/dist/QueryInitializer.d.ts +1 -1
  37. package/dist/QueryInitializer.d.ts.map +1 -1
  38. package/dist/QueryRunner.d.ts +2 -2
  39. package/dist/QueryRunner.d.ts.map +1 -1
  40. package/dist/QueryRunner.js +7 -5
  41. package/dist/QueryRunner.js.map +1 -1
  42. package/dist/RegisteredConvexFunction.d.ts +11 -10
  43. package/dist/RegisteredConvexFunction.d.ts.map +1 -1
  44. package/dist/RegisteredConvexFunction.js +23 -19
  45. package/dist/RegisteredConvexFunction.js.map +1 -1
  46. package/dist/RegisteredFunction.d.ts +20 -7
  47. package/dist/RegisteredFunction.d.ts.map +1 -1
  48. package/dist/RegisteredFunction.js +3 -1
  49. package/dist/RegisteredFunction.js.map +1 -1
  50. package/dist/RegisteredFunctions.d.ts +4 -4
  51. package/dist/RegisteredFunctions.d.ts.map +1 -1
  52. package/dist/RegisteredFunctions.js.map +1 -1
  53. package/dist/RegisteredNodeFunction.d.ts +3 -3
  54. package/dist/RegisteredNodeFunction.d.ts.map +1 -1
  55. package/dist/RegisteredNodeFunction.js +6 -5
  56. package/dist/RegisteredNodeFunction.js.map +1 -1
  57. package/dist/RegistryItem.d.ts +9 -9
  58. package/dist/RegistryItem.d.ts.map +1 -1
  59. package/dist/RegistryItem.js +2 -2
  60. package/dist/RegistryItem.js.map +1 -1
  61. package/dist/StorageActionWriter.d.ts +35 -0
  62. package/dist/StorageActionWriter.d.ts.map +1 -0
  63. package/dist/StorageActionWriter.js +20 -0
  64. package/dist/StorageActionWriter.js.map +1 -0
  65. package/dist/StorageReader.d.ts +26 -0
  66. package/dist/StorageReader.d.ts.map +1 -0
  67. package/dist/StorageReader.js +17 -0
  68. package/dist/StorageReader.js.map +1 -0
  69. package/dist/StorageWriter.d.ts +29 -0
  70. package/dist/StorageWriter.d.ts.map +1 -0
  71. package/dist/StorageWriter.js +20 -0
  72. package/dist/StorageWriter.js.map +1 -0
  73. package/dist/index.d.ts +8 -3
  74. package/dist/index.js +7 -2
  75. package/package.json +4 -4
  76. package/src/ActionRunner.ts +27 -13
  77. package/src/BlobNotFoundError.ts +12 -0
  78. package/src/CronJob.ts +45 -0
  79. package/src/CronJobs.ts +161 -0
  80. package/src/FunctionImpl.ts +3 -3
  81. package/src/Handler.ts +42 -19
  82. package/src/HttpApi.ts +3 -1
  83. package/src/MutationRunner.ts +27 -13
  84. package/src/OrderedQuery.ts +15 -6
  85. package/src/QueryRunner.ts +22 -8
  86. package/src/RegisteredConvexFunction.ts +54 -42
  87. package/src/RegisteredFunction.ts +89 -2
  88. package/src/RegisteredFunctions.ts +10 -11
  89. package/src/RegisteredNodeFunction.ts +23 -13
  90. package/src/RegistryItem.ts +9 -12
  91. package/src/StorageActionWriter.ts +28 -0
  92. package/src/StorageReader.ts +27 -0
  93. package/src/StorageWriter.ts +26 -0
  94. package/src/index.ts +7 -2
  95. package/dist/Storage.d.ts +0 -69
  96. package/dist/Storage.d.ts.map +0 -1
  97. package/dist/Storage.js +0 -46
  98. package/dist/Storage.js.map +0 -1
  99. package/src/Storage.ts +0 -87
@@ -1,6 +1,6 @@
1
1
  import { AnyWithProps as AnyWithProps$1 } from "./Api.js";
2
+ import { Any, RegisteredFunction } from "./RegisteredFunction.js";
2
3
  import { Impl } from "./Impl.js";
3
- import { RegisteredFunction } from "./RegisteredFunction.js";
4
4
  import { AnyWithProps as AnyWithProps$2 } from "./RegistryItem.js";
5
5
  import { Layer, Types } from "effect";
6
6
  import * as Spec from "@confect/core/Spec";
@@ -12,11 +12,11 @@ declare namespace RegisteredFunctions_d_exports {
12
12
  export { AnyWithProps, RegisteredFunctions, make };
13
13
  }
14
14
  type RegisteredFunctions<Spec_ extends Spec.AnyWithProps> = Types.Simplify<RegisteredFunctionsHelper<Spec.Groups<Spec_>>>;
15
- type RegisteredFunctionsHelper<Groups extends GroupSpec.AnyWithProps> = { [GroupName in GroupSpec.Name<Groups>]: GroupSpec.WithName<Groups, GroupName> extends infer Group extends GroupSpec.AnyWithProps ? GroupSpec.Groups<Group> extends infer SubGroups extends GroupSpec.AnyWithProps ? Types.Simplify<RegisteredFunctionsHelper<SubGroups> & { [FunctionName in FunctionSpec.Name<GroupSpec.Functions<Group>>]: FunctionSpec.WithName<GroupSpec.Functions<Group>, FunctionName> extends infer Function extends FunctionSpec.AnyWithProps ? FunctionSpec.RegisteredFunction<Function> : never }> : { [FunctionName in FunctionSpec.Name<GroupSpec.Functions<Group>>]: FunctionSpec.WithName<GroupSpec.Functions<Group>, FunctionName> extends infer Function extends FunctionSpec.AnyWithProps ? FunctionSpec.RegisteredFunction<Function> : never } : never };
15
+ type RegisteredFunctionsHelper<Groups extends GroupSpec.AnyWithProps> = { [GroupName in GroupSpec.Name<Groups>]: GroupSpec.WithName<Groups, GroupName> extends infer Group extends GroupSpec.AnyWithProps ? GroupSpec.Groups<Group> extends infer SubGroups extends GroupSpec.AnyWithProps ? Types.Simplify<RegisteredFunctionsHelper<SubGroups> & { [FunctionName in FunctionSpec.Name<GroupSpec.Functions<Group>>]: FunctionSpec.WithName<GroupSpec.Functions<Group>, FunctionName> extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps ? RegisteredFunction<FunctionSpec_> : never }> : { [FunctionName in FunctionSpec.Name<GroupSpec.Functions<Group>>]: FunctionSpec.WithName<GroupSpec.Functions<Group>, FunctionName> extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps ? RegisteredFunction<FunctionSpec_> : never } : never };
16
16
  interface AnyWithProps {
17
- readonly [key: string]: RegisteredFunction | AnyWithProps;
17
+ readonly [key: string]: Any | AnyWithProps;
18
18
  }
19
- declare const make: <Api_ extends AnyWithProps$1>(impl: Layer.Layer<Impl<Api_, "Finalized">>, makeRegisteredFunction: (api: Api_, registryItem: AnyWithProps$2) => RegisteredFunction) => Types.Simplify<RegisteredFunctionsHelper<Spec.Groups<Api_["spec"]>>>;
19
+ declare const make: <Api_ extends AnyWithProps$1>(impl: Layer.Layer<Impl<Api_, "Finalized">>, makeRegisteredFunction: (api: Api_, registryItem: AnyWithProps$2) => Any) => Types.Simplify<RegisteredFunctionsHelper<Spec.Groups<Api_["spec"]>>>;
20
20
  //#endregion
21
21
  export { AnyWithProps, RegisteredFunctions, RegisteredFunctions_d_exports, make };
22
22
  //# sourceMappingURL=RegisteredFunctions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredFunctions.d.ts","names":[],"sources":["../src/RegisteredFunctions.ts"],"mappings":";;;;;;;;;;;;;KAYY,mBAAA,eAAkC,IAAA,CAAK,YAAA,IACjD,KAAA,CAAM,QAAA,CAAS,yBAAA,CAA0B,IAAA,CAAK,MAAA,CAAO,KAAA;AAAA,KAElD,yBAAA,gBAAyC,SAAA,CAAU,YAAA,oBACxC,SAAA,CAAU,IAAA,CAAK,MAAA,IAAU,SAAA,CAAU,QAAA,CAC/C,MAAA,EACA,SAAA,8BAC4B,SAAA,CAAU,YAAA,GACpC,SAAA,CAAU,MAAA,CAAO,KAAA,kCACf,SAAA,CAAU,YAAA,GACV,KAAA,CAAM,QAAA,CACJ,yBAAA,CAA0B,SAAA,uBACP,YAAA,CAAa,IAAA,CAC5B,SAAA,CAAU,SAAA,CAAU,KAAA,KAClB,YAAA,CAAa,QAAA,CACf,SAAA,CAAU,SAAA,CAAU,KAAA,GACpB,YAAA,iCAC+B,YAAA,CAAa,YAAA,GAC1C,YAAA,CAAa,kBAAA,CAAmB,QAAA,kCAKrB,YAAA,CAAa,IAAA,CAC5B,SAAA,CAAU,SAAA,CAAU,KAAA,KAClB,YAAA,CAAa,QAAA,CACf,SAAA,CAAU,SAAA,CAAU,KAAA,GACpB,YAAA,iCAC+B,YAAA,CAAa,YAAA,GAC1C,YAAA,CAAa,kBAAA,CAAmB,QAAA;AAAA,UAM7B,YAAA;EAAA,UACL,GAAA,WAAc,kBAAA,GAAwC,YAAA;AAAA;AAAA,cAGrD,IAAA,gBAAqB,cAAA,EAChC,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,CAAU,IAAA,iBAC5B,sBAAA,GACE,GAAA,EAAK,IAAA,EACL,YAAA,EAAc,cAAA,KACX,kBAAA,KAAqC,KAAA,CAAA,QAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA"}
1
+ {"version":3,"file":"RegisteredFunctions.d.ts","names":[],"sources":["../src/RegisteredFunctions.ts"],"mappings":";;;;;;;;;;;;;KAYY,mBAAA,eAAkC,IAAA,CAAK,YAAA,IACjD,KAAA,CAAM,QAAA,CAAS,yBAAA,CAA0B,IAAA,CAAK,MAAA,CAAO,KAAA;AAAA,KAElD,yBAAA,gBAAyC,SAAA,CAAU,YAAA,oBACxC,SAAA,CAAU,IAAA,CAAK,MAAA,IAAU,SAAA,CAAU,QAAA,CAC/C,MAAA,EACA,SAAA,8BAC4B,SAAA,CAAU,YAAA,GACpC,SAAA,CAAU,MAAA,CAAO,KAAA,kCACf,SAAA,CAAU,YAAA,GACV,KAAA,CAAM,QAAA,CACJ,yBAAA,CAA0B,SAAA,uBACP,YAAA,CAAa,IAAA,CAC5B,SAAA,CAAU,SAAA,CAAU,KAAA,KAClB,YAAA,CAAa,QAAA,CACf,SAAA,CAAU,SAAA,CAAU,KAAA,GACpB,YAAA,sCACoC,YAAA,CAAa,YAAA,GAC/C,kBAAA,CAAsC,aAAA,kCAK3B,YAAA,CAAa,IAAA,CAC5B,SAAA,CAAU,SAAA,CAAU,KAAA,KAClB,YAAA,CAAa,QAAA,CACf,SAAA,CAAU,SAAA,CAAU,KAAA,GACpB,YAAA,sCACoC,YAAA,CAAa,YAAA,GAC/C,kBAAA,CAAsC,aAAA;AAAA,UAMnC,YAAA;EAAA,UACL,GAAA,WAAc,GAAA,GAAyB,YAAA;AAAA;AAAA,cAGtC,IAAA,gBAAqB,cAAA,EAChC,IAAA,EAAM,KAAA,CAAM,KAAA,CAAM,IAAA,CAAU,IAAA,iBAC5B,sBAAA,GACE,GAAA,EAAK,IAAA,EACL,YAAA,EAAc,cAAA,KACX,GAAA,KAAsB,KAAA,CAAA,QAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredFunctions.js","names":["Registry.Registry","Impl.Impl","RegistryItem.isRegistryItem"],"sources":["../src/RegisteredFunctions.ts"],"sourcesContent":["import type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport type * as GroupSpec from \"@confect/core/GroupSpec\";\nimport type * as Spec from \"@confect/core/Spec\";\nimport type { Layer } from \"effect\";\nimport { Effect, Match, Ref, type Types } from \"effect\";\nimport type * as Api from \"./Api\";\nimport * as Impl from \"./Impl\";\nimport { mapLeaves } from \"./internal/utils\";\nimport type * as RegisteredFunction from \"./RegisteredFunction\";\nimport * as Registry from \"./Registry\";\nimport * as RegistryItem from \"./RegistryItem\";\n\nexport type RegisteredFunctions<Spec_ extends Spec.AnyWithProps> =\n Types.Simplify<RegisteredFunctionsHelper<Spec.Groups<Spec_>>>;\n\ntype RegisteredFunctionsHelper<Groups extends GroupSpec.AnyWithProps> = {\n [GroupName in GroupSpec.Name<Groups>]: GroupSpec.WithName<\n Groups,\n GroupName\n > extends infer Group extends GroupSpec.AnyWithProps\n ? GroupSpec.Groups<Group> extends infer SubGroups extends\n GroupSpec.AnyWithProps\n ? Types.Simplify<\n RegisteredFunctionsHelper<SubGroups> & {\n [FunctionName in FunctionSpec.Name<\n GroupSpec.Functions<Group>\n >]: FunctionSpec.WithName<\n GroupSpec.Functions<Group>,\n FunctionName\n > extends infer Function extends FunctionSpec.AnyWithProps\n ? FunctionSpec.RegisteredFunction<Function>\n : never;\n }\n >\n : {\n [FunctionName in FunctionSpec.Name<\n GroupSpec.Functions<Group>\n >]: FunctionSpec.WithName<\n GroupSpec.Functions<Group>,\n FunctionName\n > extends infer Function extends FunctionSpec.AnyWithProps\n ? FunctionSpec.RegisteredFunction<Function>\n : never;\n }\n : never;\n};\n\nexport interface AnyWithProps {\n readonly [key: string]: RegisteredFunction.RegisteredFunction | AnyWithProps;\n}\n\nexport const make = <Api_ extends Api.AnyWithProps>(\n impl: Layer.Layer<Impl.Impl<Api_, \"Finalized\">>,\n makeRegisteredFunction: (\n api: Api_,\n registryItem: RegistryItem.AnyWithProps,\n ) => RegisteredFunction.RegisteredFunction,\n) =>\n Effect.gen(function* () {\n const registry = yield* Registry.Registry;\n const functionImplItems = yield* Ref.get(registry);\n const { api, finalizationStatus } = yield* Impl.Impl<Api_, \"Finalized\">();\n\n return yield* Match.value(\n finalizationStatus as Impl.FinalizationStatus,\n ).pipe(\n Match.withReturnType<Effect.Effect<RegisteredFunctions<Api_[\"spec\"]>>>(),\n Match.when(\"Unfinalized\", () =>\n Effect.dieMessage(\"Impl is not finalized\"),\n ),\n Match.when(\"Finalized\", () =>\n Effect.succeed(\n mapLeaves<\n RegistryItem.AnyWithProps,\n RegisteredFunction.RegisteredFunction\n >(functionImplItems, RegistryItem.isRegistryItem, (registryItem) =>\n makeRegisteredFunction(api, registryItem),\n ) as RegisteredFunctions<Api_[\"spec\"]>,\n ),\n ),\n Match.exhaustive,\n );\n }).pipe(Effect.provide(impl), Effect.runSync);\n"],"mappings":";;;;;;;;;AAmDA,MAAa,QACX,MACA,2BAKA,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,OAAOA;CACxB,MAAM,oBAAoB,OAAO,IAAI,IAAI,SAAS;CAClD,MAAM,EAAE,KAAK,uBAAuB,OAAOC,MAA8B;AAEzE,QAAO,OAAO,MAAM,MAClB,mBACD,CAAC,KACA,MAAM,gBAAkE,EACxE,MAAM,KAAK,qBACT,OAAO,WAAW,wBAAwB,CAC3C,EACD,MAAM,KAAK,mBACT,OAAO,QACL,UAGE,mBAAmBC,iBAA8B,iBACjD,uBAAuB,KAAK,aAAa,CAC1C,CACF,CACF,EACD,MAAM,WACP;EACD,CAAC,KAAK,OAAO,QAAQ,KAAK,EAAE,OAAO,QAAQ"}
1
+ {"version":3,"file":"RegisteredFunctions.js","names":["Registry.Registry","Impl.Impl","RegistryItem.isRegistryItem"],"sources":["../src/RegisteredFunctions.ts"],"sourcesContent":["import type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport type * as GroupSpec from \"@confect/core/GroupSpec\";\nimport type * as Spec from \"@confect/core/Spec\";\nimport type { Layer } from \"effect\";\nimport { Effect, Match, Ref, type Types } from \"effect\";\nimport type * as Api from \"./Api\";\nimport * as Impl from \"./Impl\";\nimport { mapLeaves } from \"./internal/utils\";\nimport type * as RegisteredFunction from \"./RegisteredFunction\";\nimport * as Registry from \"./Registry\";\nimport * as RegistryItem from \"./RegistryItem\";\n\nexport type RegisteredFunctions<Spec_ extends Spec.AnyWithProps> =\n Types.Simplify<RegisteredFunctionsHelper<Spec.Groups<Spec_>>>;\n\ntype RegisteredFunctionsHelper<Groups extends GroupSpec.AnyWithProps> = {\n [GroupName in GroupSpec.Name<Groups>]: GroupSpec.WithName<\n Groups,\n GroupName\n > extends infer Group extends GroupSpec.AnyWithProps\n ? GroupSpec.Groups<Group> extends infer SubGroups extends\n GroupSpec.AnyWithProps\n ? Types.Simplify<\n RegisteredFunctionsHelper<SubGroups> & {\n [FunctionName in FunctionSpec.Name<\n GroupSpec.Functions<Group>\n >]: FunctionSpec.WithName<\n GroupSpec.Functions<Group>,\n FunctionName\n > extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? RegisteredFunction.RegisteredFunction<FunctionSpec_>\n : never;\n }\n >\n : {\n [FunctionName in FunctionSpec.Name<\n GroupSpec.Functions<Group>\n >]: FunctionSpec.WithName<\n GroupSpec.Functions<Group>,\n FunctionName\n > extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? RegisteredFunction.RegisteredFunction<FunctionSpec_>\n : never;\n }\n : never;\n};\n\nexport interface AnyWithProps {\n readonly [key: string]: RegisteredFunction.Any | AnyWithProps;\n}\n\nexport const make = <Api_ extends Api.AnyWithProps>(\n impl: Layer.Layer<Impl.Impl<Api_, \"Finalized\">>,\n makeRegisteredFunction: (\n api: Api_,\n registryItem: RegistryItem.AnyWithProps,\n ) => RegisteredFunction.Any,\n) =>\n Effect.gen(function* () {\n const registry = yield* Registry.Registry;\n const functionImplItems = yield* Ref.get(registry);\n const { api, finalizationStatus } = yield* Impl.Impl<Api_, \"Finalized\">();\n\n return yield* Match.value(\n finalizationStatus as Impl.FinalizationStatus,\n ).pipe(\n Match.withReturnType<Effect.Effect<RegisteredFunctions<Api_[\"spec\"]>>>(),\n Match.when(\"Unfinalized\", () =>\n Effect.dieMessage(\"Impl is not finalized\"),\n ),\n Match.when(\"Finalized\", () =>\n Effect.succeed(\n mapLeaves<RegistryItem.AnyWithProps, RegisteredFunction.Any>(\n functionImplItems,\n RegistryItem.isRegistryItem,\n (registryItem) => makeRegisteredFunction(api, registryItem),\n ) as RegisteredFunctions<Api_[\"spec\"]>,\n ),\n ),\n Match.exhaustive,\n );\n }).pipe(Effect.provide(impl), Effect.runSync);\n"],"mappings":";;;;;;;;;AAmDA,MAAa,QACX,MACA,2BAKA,OAAO,IAAI,aAAa;CACtB,MAAM,WAAW,OAAOA;CACxB,MAAM,oBAAoB,OAAO,IAAI,IAAI,SAAS;CAClD,MAAM,EAAE,KAAK,uBAAuB,OAAOC,MAA8B;AAEzE,QAAO,OAAO,MAAM,MAClB,mBACD,CAAC,KACA,MAAM,gBAAkE,EACxE,MAAM,KAAK,qBACT,OAAO,WAAW,wBAAwB,CAC3C,EACD,MAAM,KAAK,mBACT,OAAO,QACL,UACE,mBACAC,iBACC,iBAAiB,uBAAuB,KAAK,aAAa,CAC5D,CACF,CACF,EACD,MAAM,WACP;EACD,CAAC,KAAK,OAAO,QAAQ,KAAK,EAAE,OAAO,QAAQ"}
@@ -1,5 +1,5 @@
1
1
  import { AnyWithPropsWithRuntime } from "./Api.js";
2
- import { RegisteredFunction } from "./RegisteredFunction.js";
2
+ import { Any } from "./RegisteredFunction.js";
3
3
  import { AnyWithProps } from "./RegistryItem.js";
4
4
 
5
5
  //#region src/RegisteredNodeFunction.d.ts
@@ -7,9 +7,9 @@ declare namespace RegisteredNodeFunction_d_exports {
7
7
  export { make };
8
8
  }
9
9
  declare const make: <Api_ extends AnyWithPropsWithRuntime<"Node">>(api: Api_, {
10
- function_,
10
+ functionSpec,
11
11
  handler
12
- }: AnyWithProps) => RegisteredFunction;
12
+ }: AnyWithProps) => Any;
13
13
  //#endregion
14
14
  export { RegisteredNodeFunction_d_exports, make };
15
15
  //# sourceMappingURL=RegisteredNodeFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredNodeFunction.d.ts","names":[],"sources":["../src/RegisteredNodeFunction.ts"],"mappings":";;;;;;;;cAaa,IAAA,gBAAqB,uBAAA,UAChC,GAAA,EAAK,IAAA;EACL,SAAA;EAAA;AAAA,GAAwB,YAAA,KACvB,kBAAA"}
1
+ {"version":3,"file":"RegisteredNodeFunction.d.ts","names":[],"sources":["../src/RegisteredNodeFunction.ts"],"mappings":";;;;;;;;cAea,IAAA,gBAAqB,uBAAA,UAChC,GAAA,EAAK,IAAA;EACL,YAAA;EAAA;AAAA,GAA2B,YAAA,KAC1B,GAAA"}
@@ -6,13 +6,14 @@ import { NodeContext } from "@effect/platform-node";
6
6
 
7
7
  //#region src/RegisteredNodeFunction.ts
8
8
  var RegisteredNodeFunction_exports = /* @__PURE__ */ __exportAll({ make: () => make });
9
- const make = (api, { function_, handler }) => {
10
- return Match.value(function_.functionVisibility).pipe(Match.when("public", () => actionGeneric), Match.when("internal", () => internalActionGeneric), Match.exhaustive)(nodeActionFunction(api.databaseSchema, {
11
- args: function_.args,
12
- returns: function_.returns,
9
+ const make = (api, { functionSpec, handler }) => Match.value(functionSpec.functionProvenance).pipe(Match.tag("Convex", () => handler), Match.tag("Confect", () => {
10
+ const { functionVisibility, functionProvenance } = functionSpec;
11
+ return Match.value(functionVisibility).pipe(Match.when("public", () => actionGeneric), Match.when("internal", () => internalActionGeneric), Match.exhaustive)(nodeActionFunction(api.databaseSchema, {
12
+ args: functionProvenance.args,
13
+ returns: functionProvenance.returns,
13
14
  handler
14
15
  }));
15
- };
16
+ }), Match.exhaustive);
16
17
  const nodeActionFunction = (databaseSchema, { args, returns, handler }) => actionFunctionBase({
17
18
  args,
18
19
  returns,
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteredNodeFunction.js","names":["RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredNodeFunction.ts"],"sourcesContent":["import { NodeContext } from \"@effect/platform-node\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n internalActionGeneric,\n} from \"convex/server\";\nimport type { Effect } from \"effect\";\nimport { Layer, Match, type Schema } from \"effect\";\nimport type * as Api from \"./Api\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport * as RegisteredFunction from \"./RegisteredFunction\";\nimport type * as RegistryItem from \"./RegistryItem\";\n\nexport const make = <Api_ extends Api.AnyWithPropsWithRuntime<\"Node\">>(\n api: Api_,\n { function_, handler }: RegistryItem.AnyWithProps,\n): RegisteredFunction.RegisteredFunction => {\n const genericFunction = Match.value(function_.functionVisibility).pipe(\n Match.when(\"public\", () => actionGeneric),\n Match.when(\"internal\", () => internalActionGeneric),\n Match.exhaustive,\n );\n\n return genericFunction(\n nodeActionFunction(api.databaseSchema, {\n args: function_.args,\n returns: function_.returns,\n handler,\n }),\n );\n};\n\nconst nodeActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n databaseSchema: DatabaseSchema_,\n {\n args,\n returns,\n handler,\n }: {\n args: Schema.Schema<Args, ConvexArgs>;\n returns: Schema.Schema<Returns, ConvexReturns>;\n handler: (\n a: Args,\n ) => Effect.Effect<\n Returns,\n E,\n | RegisteredFunction.ActionServices<DatabaseSchema_>\n | NodeContext.NodeContext\n >;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n args,\n returns,\n handler,\n createLayer: (ctx) =>\n Layer.mergeAll(\n RegisteredFunction.actionLayer(databaseSchema, ctx),\n NodeContext.layer,\n ),\n });\n"],"mappings":";;;;;;;;AAaA,MAAa,QACX,KACA,EAAE,WAAW,cAC6B;AAO1C,QANwB,MAAM,MAAM,UAAU,mBAAmB,CAAC,KAChE,MAAM,KAAK,gBAAgB,cAAc,EACzC,MAAM,KAAK,kBAAkB,sBAAsB,EACnD,MAAM,WACP,CAGC,mBAAmB,IAAI,gBAAgB;EACrC,MAAM,UAAU;EAChB,SAAS,UAAU;EACnB;EACD,CAAC,CACH;;AAGH,MAAM,sBAQJ,gBACA,EACE,MACA,SACA,cAcFA,mBAAsC;CACpC;CACA;CACA;CACA,cAAc,QACZ,MAAM,SACJC,YAA+B,gBAAgB,IAAI,EACnD,YAAY,MACb;CACJ,CAAC"}
1
+ {"version":3,"file":"RegisteredNodeFunction.js","names":["RegisteredFunction.actionFunctionBase","RegisteredFunction.actionLayer"],"sources":["../src/RegisteredNodeFunction.ts"],"sourcesContent":["import type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport { NodeContext } from \"@effect/platform-node\";\nimport {\n actionGeneric,\n type DefaultFunctionArgs,\n internalActionGeneric,\n} from \"convex/server\";\nimport type { Effect } from \"effect\";\nimport { Layer, Match, type Schema } from \"effect\";\nimport type * as Api from \"./Api\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport type * as Handler from \"./Handler\";\nimport * as RegisteredFunction from \"./RegisteredFunction\";\nimport type * as RegistryItem from \"./RegistryItem\";\n\nexport const make = <Api_ extends Api.AnyWithPropsWithRuntime<\"Node\">>(\n api: Api_,\n { functionSpec, handler }: RegistryItem.AnyWithProps,\n): RegisteredFunction.Any =>\n Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\"Convex\", () => handler as RegisteredFunction.Any),\n Match.tag(\"Confect\", () => {\n const { functionVisibility, functionProvenance } =\n functionSpec as FunctionSpec.AnyConfect;\n\n const genericFunction = Match.value(functionVisibility).pipe(\n Match.when(\"public\", () => actionGeneric),\n Match.when(\"internal\", () => internalActionGeneric),\n Match.exhaustive,\n );\n\n return genericFunction(\n nodeActionFunction(api.databaseSchema, {\n args: functionProvenance.args,\n returns: functionProvenance.returns,\n handler: handler as Handler.AnyConfectProvenance,\n }),\n );\n }),\n Match.exhaustive,\n );\n\nconst nodeActionFunction = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n Args,\n ConvexArgs extends DefaultFunctionArgs,\n Returns,\n ConvexReturns,\n E,\n>(\n databaseSchema: DatabaseSchema_,\n {\n args,\n returns,\n handler,\n }: {\n args: Schema.Schema<Args, ConvexArgs>;\n returns: Schema.Schema<Returns, ConvexReturns>;\n handler: (\n a: Args,\n ) => Effect.Effect<\n Returns,\n E,\n | RegisteredFunction.ActionServices<DatabaseSchema_>\n | NodeContext.NodeContext\n >;\n },\n) =>\n RegisteredFunction.actionFunctionBase({\n args,\n returns,\n handler,\n createLayer: (ctx) =>\n Layer.mergeAll(\n RegisteredFunction.actionLayer(databaseSchema, ctx),\n NodeContext.layer,\n ),\n });\n"],"mappings":";;;;;;;;AAeA,MAAa,QACX,KACA,EAAE,cAAc,cAEhB,MAAM,MAAM,aAAa,mBAAmB,CAAC,KAC3C,MAAM,IAAI,gBAAgB,QAAkC,EAC5D,MAAM,IAAI,iBAAiB;CACzB,MAAM,EAAE,oBAAoB,uBAC1B;AAQF,QANwB,MAAM,MAAM,mBAAmB,CAAC,KACtD,MAAM,KAAK,gBAAgB,cAAc,EACzC,MAAM,KAAK,kBAAkB,sBAAsB,EACnD,MAAM,WACP,CAGC,mBAAmB,IAAI,gBAAgB;EACrC,MAAM,mBAAmB;EACzB,SAAS,mBAAmB;EACnB;EACV,CAAC,CACH;EACD,EACF,MAAM,WACP;AAEH,MAAM,sBAQJ,gBACA,EACE,MACA,SACA,cAcFA,mBAAsC;CACpC;CACA;CACA;CACA,cAAc,QACZ,MAAM,SACJC,YAA+B,gBAAgB,IAAI,EACnD,YAAY,MACb;CACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { AnyWithProps as AnyWithProps$1 } from "./DatabaseSchema.js";
2
- import { AnyWithProps as AnyWithProps$2, Handler } from "./Handler.js";
2
+ import { Any, Handler } from "./Handler.js";
3
3
  import * as FunctionSpec from "@confect/core/FunctionSpec";
4
4
 
5
5
  //#region src/RegistryItem.d.ts
@@ -11,21 +11,21 @@ type TypeId = typeof TypeId;
11
11
  declare const isRegistryItem: (value: unknown) => value is AnyWithProps;
12
12
  interface RegistryItem<DatabaseSchema_ extends AnyWithProps$1, FunctionSpec_ extends FunctionSpec.AnyWithProps> {
13
13
  readonly [TypeId]: TypeId;
14
- readonly function_: FunctionSpec_;
14
+ readonly functionSpec: FunctionSpec_;
15
15
  readonly handler: Handler<DatabaseSchema_, FunctionSpec_>;
16
16
  }
17
17
  interface AnyWithProps {
18
18
  readonly [TypeId]: TypeId;
19
- readonly function_: FunctionSpec.AnyWithProps;
20
- readonly handler: AnyWithProps$2;
19
+ readonly functionSpec: FunctionSpec.AnyWithProps;
20
+ readonly handler: Any;
21
21
  }
22
- declare const make: <DatabaseSchema_ extends AnyWithProps$1, FunctionSpec_ extends FunctionSpec.AnyWithProps>({
23
- function_,
22
+ declare const make: ({
23
+ functionSpec,
24
24
  handler
25
25
  }: {
26
- function_: FunctionSpec_;
27
- handler: Handler<DatabaseSchema_, FunctionSpec_>;
28
- }) => RegistryItem<DatabaseSchema_, FunctionSpec_>;
26
+ functionSpec: FunctionSpec.AnyWithProps;
27
+ handler: AnyWithProps["handler"];
28
+ }) => AnyWithProps;
29
29
  //#endregion
30
30
  export { AnyWithProps, RegistryItem, RegistryItem_d_exports, TypeId, isRegistryItem, make };
31
31
  //# sourceMappingURL=RegistryItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryItem.d.ts","names":[],"sources":["../src/RegistryItem.ts"],"mappings":";;;;;;;;cAKa,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,cAEf,cAAA,GAAkB,KAAA,cAAiB,KAAA,IAAS,YAAA;AAAA,UAOxC,YAAA,yBACS,cAAA,wBACF,YAAA,CAAa,YAAA;EAAA,UAEzB,MAAA,GAAS,MAAA;EAAA,SACV,SAAA,EAAW,aAAA;EAAA,SACX,OAAA,EAAS,OAAA,CAAgB,eAAA,EAAiB,aAAA;AAAA;AAAA,UAGpC,YAAA;EAAA,UACL,MAAA,GAAS,MAAA;EAAA,SACV,SAAA,EAAW,YAAA,CAAa,YAAA;EAAA,SACxB,OAAA,EAAS,cAAA;AAAA;AAAA,cAGP,IAAA,2BACa,cAAA,wBACF,YAAA,CAAa,YAAA;EACnC,SAAA;EAAA;AAAA;EAIA,SAAA,EAAW,aAAA;EACX,OAAA,EAAS,OAAA,CAAgB,eAAA,EAAiB,aAAA;AAAA,MACxC,YAAA,CAAa,eAAA,EAAiB,aAAA"}
1
+ {"version":3,"file":"RegistryItem.d.ts","names":[],"sources":["../src/RegistryItem.ts"],"mappings":";;;;;;;;cAKa,MAAA;AAAA,KACD,MAAA,UAAgB,MAAA;AAAA,cAEf,cAAA,GAAkB,KAAA,cAAiB,KAAA,IAAS,YAAA;AAAA,UAOxC,YAAA,yBACS,cAAA,wBACF,YAAA,CAAa,YAAA;EAAA,UAEzB,MAAA,GAAS,MAAA;EAAA,SACV,YAAA,EAAc,aAAA;EAAA,SACd,OAAA,EAAS,OAAA,CAAgB,eAAA,EAAiB,aAAA;AAAA;AAAA,UAGpC,YAAA;EAAA,UACL,MAAA,GAAS,MAAA;EAAA,SACV,YAAA,EAAc,YAAA,CAAa,YAAA;EAAA,SAC3B,OAAA,EAAS,GAAA;AAAA;AAAA,cAGP,IAAA;EAAQ,YAAA;EAAA;AAAA;EAInB,YAAA,EAAc,YAAA,CAAa,YAAA;EAC3B,OAAA,EAAS,YAAA;AAAA,MACP,YAAA"}
@@ -10,8 +10,8 @@ var RegistryItem_exports = /* @__PURE__ */ __exportAll({
10
10
  const TypeId = "@confect/server/RegistryItem";
11
11
  const isRegistryItem = (value) => Predicate.hasProperty(value, TypeId);
12
12
  const RegistryItemProto = { [TypeId]: TypeId };
13
- const make = ({ function_, handler }) => Object.assign(Object.create(RegistryItemProto), {
14
- function_,
13
+ const make = ({ functionSpec, handler }) => Object.assign(Object.create(RegistryItemProto), {
14
+ functionSpec,
15
15
  handler
16
16
  });
17
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"RegistryItem.js","names":[],"sources":["../src/RegistryItem.ts"],"sourcesContent":["import type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport { Predicate } from \"effect\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport type * as Handler from \"./Handler\";\n\nexport const TypeId = \"@confect/server/RegistryItem\";\nexport type TypeId = typeof TypeId;\n\nexport const isRegistryItem = (value: unknown): value is AnyWithProps =>\n Predicate.hasProperty(value, TypeId);\n\nconst RegistryItemProto = {\n [TypeId]: TypeId,\n};\n\nexport interface RegistryItem<\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> {\n readonly [TypeId]: TypeId;\n readonly function_: FunctionSpec_;\n readonly handler: Handler.Handler<DatabaseSchema_, FunctionSpec_>;\n}\n\nexport interface AnyWithProps {\n readonly [TypeId]: TypeId;\n readonly function_: FunctionSpec.AnyWithProps;\n readonly handler: Handler.AnyWithProps;\n}\n\nexport const make = <\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n>({\n function_,\n handler,\n}: {\n function_: FunctionSpec_;\n handler: Handler.Handler<DatabaseSchema_, FunctionSpec_>;\n}): RegistryItem<DatabaseSchema_, FunctionSpec_> =>\n Object.assign(Object.create(RegistryItemProto), {\n function_,\n handler,\n });\n"],"mappings":";;;;;;;;;AAKA,MAAa,SAAS;AAGtB,MAAa,kBAAkB,UAC7B,UAAU,YAAY,OAAO,OAAO;AAEtC,MAAM,oBAAoB,GACvB,SAAS,QACX;AAiBD,MAAa,QAGX,EACA,WACA,cAKA,OAAO,OAAO,OAAO,OAAO,kBAAkB,EAAE;CAC9C;CACA;CACD,CAAC"}
1
+ {"version":3,"file":"RegistryItem.js","names":[],"sources":["../src/RegistryItem.ts"],"sourcesContent":["import type * as FunctionSpec from \"@confect/core/FunctionSpec\";\nimport { Predicate } from \"effect\";\nimport type * as DatabaseSchema from \"./DatabaseSchema\";\nimport type * as Handler from \"./Handler\";\n\nexport const TypeId = \"@confect/server/RegistryItem\";\nexport type TypeId = typeof TypeId;\n\nexport const isRegistryItem = (value: unknown): value is AnyWithProps =>\n Predicate.hasProperty(value, TypeId);\n\nconst RegistryItemProto = {\n [TypeId]: TypeId,\n};\n\nexport interface RegistryItem<\n DatabaseSchema_ extends DatabaseSchema.AnyWithProps,\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n> {\n readonly [TypeId]: TypeId;\n readonly functionSpec: FunctionSpec_;\n readonly handler: Handler.Handler<DatabaseSchema_, FunctionSpec_>;\n}\n\nexport interface AnyWithProps {\n readonly [TypeId]: TypeId;\n readonly functionSpec: FunctionSpec.AnyWithProps;\n readonly handler: Handler.Any;\n}\n\nexport const make = ({\n functionSpec,\n handler,\n}: {\n functionSpec: FunctionSpec.AnyWithProps;\n handler: AnyWithProps[\"handler\"];\n}): AnyWithProps =>\n Object.assign(Object.create(RegistryItemProto), {\n functionSpec,\n handler,\n });\n"],"mappings":";;;;;;;;;AAKA,MAAa,SAAS;AAGtB,MAAa,kBAAkB,UAC7B,UAAU,YAAY,OAAO,OAAO;AAEtC,MAAM,oBAAoB,GACvB,SAAS,QACX;AAiBD,MAAa,QAAQ,EACnB,cACA,cAKA,OAAO,OAAO,OAAO,OAAO,kBAAkB,EAAE;CAC9C;CACA;CACD,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
2
+ import { Effect, Layer } from "effect";
3
+ import { StorageActionWriter as StorageActionWriter$1 } from "convex/server";
4
+ import { GenericId } from "convex/values";
5
+ import * as effect_Context0 from "effect/Context";
6
+ import * as effect_Cause0 from "effect/Cause";
7
+
8
+ //#region src/StorageActionWriter.d.ts
9
+ declare namespace StorageActionWriter_d_exports {
10
+ export { StorageActionWriter };
11
+ }
12
+ declare const StorageActionWriter_base: effect_Context0.TagClass<StorageActionWriter, "@confect/server/StorageActionWriter", {
13
+ get: (storageId: GenericId<"_storage">) => Effect.Effect<Blob, BlobNotFoundError, never>;
14
+ store: (blob: Blob, options?: {
15
+ sha256?: string;
16
+ }) => Effect.Effect<GenericId<"_storage">, never, never>;
17
+ }> & Effect.Tag.Proxy<StorageActionWriter, {
18
+ get: (storageId: GenericId<"_storage">) => Effect.Effect<Blob, BlobNotFoundError, never>;
19
+ store: (blob: Blob, options?: {
20
+ sha256?: string;
21
+ }) => Effect.Effect<GenericId<"_storage">, never, never>;
22
+ }> & {
23
+ use: <X>(body: (_: {
24
+ get: (storageId: GenericId<"_storage">) => Effect.Effect<Blob, BlobNotFoundError, never>;
25
+ store: (blob: Blob, options?: {
26
+ sha256?: string;
27
+ }) => Effect.Effect<GenericId<"_storage">, never, never>;
28
+ }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | StorageActionWriter> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, effect_Cause0.UnknownException, StorageActionWriter> : Effect.Effect<X, never, StorageActionWriter>;
29
+ };
30
+ declare class StorageActionWriter extends StorageActionWriter_base {
31
+ static readonly layer: (storageActionWriter: StorageActionWriter$1) => Layer.Layer<StorageActionWriter, never, never>;
32
+ }
33
+ //#endregion
34
+ export { StorageActionWriter, StorageActionWriter_d_exports };
35
+ //# sourceMappingURL=StorageActionWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageActionWriter.d.ts","names":[],"sources":["../src/StorageActionWriter.ts"],"mappings":";;;;;;;;;;;cAGwD,wBAAA,EAeL,eAAA,CAAA,QAAA;mBAZhC,SAAA,iBAAqB,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA,iBAAA;gBAYxB,IAAA,EAAI,OAAA;IAAc,MAAA;EAAA,MAAiB,MAAA,CAAA,MAAA,CAAA,SAAA;AAAA;mBAZhC,SAAA,iBAAqB,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA,iBAAA;gBAYxB,IAAA,EAAI,OAAA;IAAc,MAAA;EAAA,MAAiB,MAAA,CAAA,MAAA,CAAA,SAAA;AAAA;;qBAZhC,SAAA,iBAAqB,MAAA,CAAA,MAAA,CAAA,IAAA,EAAA,iBAAA;kBAYxB,IAAA,EAAI,OAAA;MAAc,MAAA;IAAA,MAAiB,MAAA,CAAA,MAAA,CAAA,SAAA;EAAA;;cAItC,mBAAA,SAA4B,wBAAA;EAAA,gBAGvB,KAAA,GAAS,mBAAA,EAAqB,qBAAA,KAAyB,KAAA,CAAA,KAAA,CAAA,mBAAA;AAAA"}
@@ -0,0 +1,20 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
3
+ import { Effect, Layer, Option, flow } from "effect";
4
+
5
+ //#region src/StorageActionWriter.ts
6
+ var StorageActionWriter_exports = /* @__PURE__ */ __exportAll({ StorageActionWriter: () => StorageActionWriter });
7
+ const make = (storageActionWriter) => ({
8
+ get: (storageId) => Effect.promise(() => storageActionWriter.get(storageId)).pipe(Effect.andThen(flow(Option.fromNullable, Option.match({
9
+ onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),
10
+ onSome: Effect.succeed
11
+ })))),
12
+ store: (blob, options) => Effect.promise(() => storageActionWriter.store(blob, options))
13
+ });
14
+ var StorageActionWriter = class extends Effect.Tag("@confect/server/StorageActionWriter")() {
15
+ static layer = (storageActionWriter) => Layer.succeed(this, make(storageActionWriter));
16
+ };
17
+
18
+ //#endregion
19
+ export { StorageActionWriter, StorageActionWriter_exports };
20
+ //# sourceMappingURL=StorageActionWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageActionWriter.js","names":[],"sources":["../src/StorageActionWriter.ts"],"sourcesContent":["import type { StorageActionWriter as ConvexStorageActionWriter } from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Effect, flow, Layer, Option } from \"effect\";\nimport { BlobNotFoundError } from \"./BlobNotFoundError\";\n\nconst make = (storageActionWriter: ConvexStorageActionWriter) => ({\n get: (storageId: GenericId<\"_storage\">) =>\n Effect.promise(() => storageActionWriter.get(storageId)).pipe(\n Effect.andThen(\n flow(\n Option.fromNullable,\n Option.match({\n onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),\n onSome: Effect.succeed,\n }),\n ),\n ),\n ),\n store: (blob: Blob, options?: { sha256?: string }) =>\n Effect.promise(() => storageActionWriter.store(blob, options)),\n});\n\nexport class StorageActionWriter extends Effect.Tag(\n \"@confect/server/StorageActionWriter\",\n)<StorageActionWriter, ReturnType<typeof make>>() {\n static readonly layer = (storageActionWriter: ConvexStorageActionWriter) =>\n Layer.succeed(this, make(storageActionWriter));\n}\n"],"mappings":";;;;;;AAKA,MAAM,QAAQ,yBAAoD;CAChE,MAAM,cACJ,OAAO,cAAc,oBAAoB,IAAI,UAAU,CAAC,CAAC,KACvD,OAAO,QACL,KACE,OAAO,cACP,OAAO,MAAM;EACX,cAAc,OAAO,KAAK,IAAI,kBAAkB,EAAE,IAAI,WAAW,CAAC,CAAC;EACnE,QAAQ,OAAO;EAChB,CAAC,CACH,CACF,CACF;CACH,QAAQ,MAAY,YAClB,OAAO,cAAc,oBAAoB,MAAM,MAAM,QAAQ,CAAC;CACjE;AAED,IAAa,sBAAb,cAAyC,OAAO,IAC9C,sCACD,EAAgD,CAAC;CAChD,OAAgB,SAAS,wBACvB,MAAM,QAAQ,MAAM,KAAK,oBAAoB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
2
+ import { Effect, Layer } from "effect";
3
+ import { StorageReader as StorageReader$1 } from "convex/server";
4
+ import { GenericId } from "convex/values";
5
+ import * as effect_Context0 from "effect/Context";
6
+ import * as effect_Cause0 from "effect/Cause";
7
+
8
+ //#region src/StorageReader.d.ts
9
+ declare namespace StorageReader_d_exports {
10
+ export { StorageReader };
11
+ }
12
+ declare const StorageReader_base: effect_Context0.TagClass<StorageReader, "@confect/server/StorageReader", {
13
+ getUrl: (storageId: GenericId<"_storage">) => Effect.Effect<URL, BlobNotFoundError, never>;
14
+ }> & Effect.Tag.Proxy<StorageReader, {
15
+ getUrl: (storageId: GenericId<"_storage">) => Effect.Effect<URL, BlobNotFoundError, never>;
16
+ }> & {
17
+ use: <X>(body: (_: {
18
+ getUrl: (storageId: GenericId<"_storage">) => Effect.Effect<URL, BlobNotFoundError, never>;
19
+ }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | StorageReader> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, effect_Cause0.UnknownException, StorageReader> : Effect.Effect<X, never, StorageReader>;
20
+ };
21
+ declare class StorageReader extends StorageReader_base {
22
+ static readonly layer: (storageReader: StorageReader$1) => Layer.Layer<StorageReader, never, never>;
23
+ }
24
+ //#endregion
25
+ export { StorageReader, StorageReader_d_exports };
26
+ //# sourceMappingURL=StorageReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageReader.d.ts","names":[],"sources":["../src/StorageReader.ts"],"mappings":";;;;;;;;;;;cAGwD,kBAAA,EAGb,eAAA,CAAA,QAAA;sBAArB,SAAA,iBAAqB,MAAA,CAAA,MAAA,CAAA,GAAA,EAAA,iBAAA;AAAA;sBAArB,SAAA,iBAAqB,MAAA,CAAA,MAAA,CAAA,GAAA,EAAA,iBAAA;AAAA;;wBAArB,SAAA,iBAAqB,MAAA,CAAA,MAAA,CAAA,GAAA,EAAA,iBAAA;EAAA;;cAc9B,aAAA,SAAsB,kBAAA;EAAA,gBAIjB,KAAA,GAAS,aAAA,EAAe,eAAA,KAAmB,KAAA,CAAA,KAAA,CAAA,aAAA;AAAA"}
@@ -0,0 +1,17 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
3
+ import { Effect, Layer, Option, Schema, flow, pipe } from "effect";
4
+
5
+ //#region src/StorageReader.ts
6
+ var StorageReader_exports = /* @__PURE__ */ __exportAll({ StorageReader: () => StorageReader });
7
+ const make = (storageReader) => ({ getUrl: (storageId) => Effect.promise(() => storageReader.getUrl(storageId)).pipe(Effect.andThen(flow(Option.fromNullable, Option.match({
8
+ onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),
9
+ onSome: (doc) => pipe(doc, Schema.decode(Schema.URL), Effect.orDie)
10
+ })))) });
11
+ var StorageReader = class extends Effect.Tag("@confect/server/StorageReader")() {
12
+ static layer = (storageReader) => Layer.succeed(this, make(storageReader));
13
+ };
14
+
15
+ //#endregion
16
+ export { StorageReader, StorageReader_exports };
17
+ //# sourceMappingURL=StorageReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageReader.js","names":[],"sources":["../src/StorageReader.ts"],"sourcesContent":["import type { StorageReader as ConvexStorageReader } from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Effect, flow, Layer, Option, pipe, Schema } from \"effect\";\nimport { BlobNotFoundError } from \"./BlobNotFoundError\";\n\nconst make = (storageReader: ConvexStorageReader) => ({\n getUrl: (storageId: GenericId<\"_storage\">) =>\n Effect.promise(() => storageReader.getUrl(storageId)).pipe(\n Effect.andThen(\n flow(\n Option.fromNullable,\n Option.match({\n onNone: () => Effect.fail(new BlobNotFoundError({ id: storageId })),\n onSome: (doc) => pipe(doc, Schema.decode(Schema.URL), Effect.orDie),\n }),\n ),\n ),\n ),\n});\n\nexport class StorageReader extends Effect.Tag(\"@confect/server/StorageReader\")<\n StorageReader,\n ReturnType<typeof make>\n>() {\n static readonly layer = (storageReader: ConvexStorageReader) =>\n Layer.succeed(this, make(storageReader));\n}\n"],"mappings":";;;;;;AAKA,MAAM,QAAQ,mBAAwC,EACpD,SAAS,cACP,OAAO,cAAc,cAAc,OAAO,UAAU,CAAC,CAAC,KACpD,OAAO,QACL,KACE,OAAO,cACP,OAAO,MAAM;CACX,cAAc,OAAO,KAAK,IAAI,kBAAkB,EAAE,IAAI,WAAW,CAAC,CAAC;CACnE,SAAS,QAAQ,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,EAAE,OAAO,MAAM;CACpE,CAAC,CACH,CACF,CACF,EACJ;AAED,IAAa,gBAAb,cAAmC,OAAO,IAAI,gCAAgC,EAG3E,CAAC;CACF,OAAgB,SAAS,kBACvB,MAAM,QAAQ,MAAM,KAAK,cAAc,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
2
+ import { Effect, Layer } from "effect";
3
+ import { StorageWriter as StorageWriter$1 } from "convex/server";
4
+ import { GenericId } from "convex/values";
5
+ import * as effect_Context0 from "effect/Context";
6
+ import * as effect_Cause0 from "effect/Cause";
7
+
8
+ //#region src/StorageWriter.d.ts
9
+ declare namespace StorageWriter_d_exports {
10
+ export { StorageWriter };
11
+ }
12
+ declare const StorageWriter_base: effect_Context0.TagClass<StorageWriter, "@confect/server/StorageWriter", {
13
+ generateUploadUrl: () => Effect.Effect<URL, never, never>;
14
+ delete: (storageId: GenericId<"_storage">) => Effect.Effect<void, BlobNotFoundError, never>;
15
+ }> & Effect.Tag.Proxy<StorageWriter, {
16
+ generateUploadUrl: () => Effect.Effect<URL, never, never>;
17
+ delete: (storageId: GenericId<"_storage">) => Effect.Effect<void, BlobNotFoundError, never>;
18
+ }> & {
19
+ use: <X>(body: (_: {
20
+ generateUploadUrl: () => Effect.Effect<URL, never, never>;
21
+ delete: (storageId: GenericId<"_storage">) => Effect.Effect<void, BlobNotFoundError, never>;
22
+ }) => X) => [X] extends [Effect.Effect<infer A, infer E, infer R>] ? Effect.Effect<A, E, R | StorageWriter> : [X] extends [PromiseLike<infer A_1>] ? Effect.Effect<A_1, effect_Cause0.UnknownException, StorageWriter> : Effect.Effect<X, never, StorageWriter>;
23
+ };
24
+ declare class StorageWriter extends StorageWriter_base {
25
+ static readonly layer: (storageWriter: StorageWriter$1) => Layer.Layer<StorageWriter, never, never>;
26
+ }
27
+ //#endregion
28
+ export { StorageWriter, StorageWriter_d_exports };
29
+ //# sourceMappingURL=StorageWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageWriter.d.ts","names":[],"sources":["../src/StorageWriter.ts"],"mappings":";;;;;;;;;;;cAGwD,kBAAA,EASb,eAAA,CAAA,QAAA;;sBAArB,SAAA,iBAAqB,MAAA,CAAA,MAAA,OAAA,iBAAA;AAAA;;sBAArB,SAAA,iBAAqB,MAAA,CAAA,MAAA,OAAA,iBAAA;AAAA;;;wBAArB,SAAA,iBAAqB,MAAA,CAAA,MAAA,OAAA,iBAAA;EAAA;;cAO9B,aAAA,SAAsB,kBAAA;EAAA,gBAIjB,KAAA,GAAS,aAAA,EAAe,eAAA,KAAmB,KAAA,CAAA,KAAA,CAAA,aAAA;AAAA"}
@@ -0,0 +1,20 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
+ import { BlobNotFoundError } from "./BlobNotFoundError.js";
3
+ import { Effect, Layer, Schema, pipe } from "effect";
4
+
5
+ //#region src/StorageWriter.ts
6
+ var StorageWriter_exports = /* @__PURE__ */ __exportAll({ StorageWriter: () => StorageWriter });
7
+ const make = (storageWriter) => ({
8
+ generateUploadUrl: () => Effect.promise(() => storageWriter.generateUploadUrl()).pipe(Effect.andThen((url) => pipe(url, Schema.decode(Schema.URL), Effect.orDie))),
9
+ delete: (storageId) => Effect.tryPromise({
10
+ try: () => storageWriter.delete(storageId),
11
+ catch: () => new BlobNotFoundError({ id: storageId })
12
+ })
13
+ });
14
+ var StorageWriter = class extends Effect.Tag("@confect/server/StorageWriter")() {
15
+ static layer = (storageWriter) => Layer.succeed(this, make(storageWriter));
16
+ };
17
+
18
+ //#endregion
19
+ export { StorageWriter, StorageWriter_exports };
20
+ //# sourceMappingURL=StorageWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageWriter.js","names":[],"sources":["../src/StorageWriter.ts"],"sourcesContent":["import type { StorageWriter as ConvexStorageWriter } from \"convex/server\";\nimport type { GenericId } from \"convex/values\";\nimport { Effect, Layer, pipe, Schema } from \"effect\";\nimport { BlobNotFoundError } from \"./BlobNotFoundError\";\n\nconst make = (storageWriter: ConvexStorageWriter) => ({\n generateUploadUrl: () =>\n Effect.promise(() => storageWriter.generateUploadUrl()).pipe(\n Effect.andThen((url) =>\n pipe(url, Schema.decode(Schema.URL), Effect.orDie),\n ),\n ),\n delete: (storageId: GenericId<\"_storage\">) =>\n Effect.tryPromise({\n try: () => storageWriter.delete(storageId),\n catch: () => new BlobNotFoundError({ id: storageId }),\n }),\n});\n\nexport class StorageWriter extends Effect.Tag(\"@confect/server/StorageWriter\")<\n StorageWriter,\n ReturnType<typeof make>\n>() {\n static readonly layer = (storageWriter: ConvexStorageWriter) =>\n Layer.succeed(this, make(storageWriter));\n}\n"],"mappings":";;;;;;AAKA,MAAM,QAAQ,mBAAwC;CACpD,yBACE,OAAO,cAAc,cAAc,mBAAmB,CAAC,CAAC,KACtD,OAAO,SAAS,QACd,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,EAAE,OAAO,MAAM,CACnD,CACF;CACH,SAAS,cACP,OAAO,WAAW;EAChB,WAAW,cAAc,OAAO,UAAU;EAC1C,aAAa,IAAI,kBAAkB,EAAE,IAAI,WAAW,CAAC;EACtD,CAAC;CACL;AAED,IAAa,gBAAb,cAAmC,OAAO,IAAI,gCAAgC,EAG3E,CAAC;CACF,OAAgB,SAAS,kBACvB,MAAM,QAAQ,MAAM,KAAK,cAAc,CAAC"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,10 @@ import { Table_d_exports } from "./Table.js";
5
5
  import { DatabaseSchema_d_exports } from "./DatabaseSchema.js";
6
6
  import { Api_d_exports } from "./Api.js";
7
7
  import { Auth_d_exports } from "./Auth.js";
8
+ import { BlobNotFoundError_d_exports } from "./BlobNotFoundError.js";
8
9
  import { ConvexConfigProvider_d_exports } from "./ConvexConfigProvider.js";
10
+ import { CronJob_d_exports } from "./CronJob.js";
11
+ import { CronJobs_d_exports } from "./CronJobs.js";
9
12
  import { Document_d_exports } from "./Document.js";
10
13
  import { TableInfo_d_exports } from "./TableInfo.js";
11
14
  import { DataModel_d_exports } from "./DataModel.js";
@@ -18,16 +21,18 @@ import { MutationRunner_d_exports } from "./MutationRunner.js";
18
21
  import { QueryCtx_d_exports } from "./QueryCtx.js";
19
22
  import { QueryRunner_d_exports } from "./QueryRunner.js";
20
23
  import { Scheduler_d_exports } from "./Scheduler.js";
21
- import { Storage_d_exports } from "./Storage.js";
24
+ import { StorageActionWriter_d_exports } from "./StorageActionWriter.js";
25
+ import { StorageReader_d_exports } from "./StorageReader.js";
26
+ import { StorageWriter_d_exports } from "./StorageWriter.js";
22
27
  import { VectorSearch_d_exports } from "./VectorSearch.js";
28
+ import { RegisteredFunction_d_exports } from "./RegisteredFunction.js";
23
29
  import { Handler_d_exports } from "./Handler.js";
24
30
  import { FunctionImpl_d_exports } from "./FunctionImpl.js";
25
31
  import { GroupImpl_d_exports } from "./GroupImpl.js";
26
32
  import { HttpApi_d_exports } from "./HttpApi.js";
27
33
  import { Impl_d_exports } from "./Impl.js";
28
- import { RegisteredFunction_d_exports } from "./RegisteredFunction.js";
29
34
  import { RegistryItem_d_exports } from "./RegistryItem.js";
30
35
  import { RegisteredConvexFunction_d_exports } from "./RegisteredConvexFunction.js";
31
36
  import { RegisteredFunctions_d_exports } from "./RegisteredFunctions.js";
32
37
  import { Registry_d_exports } from "./Registry.js";
33
- export { ActionCtx_d_exports as ActionCtx, ActionRunner_d_exports as ActionRunner, Api_d_exports as Api, Auth_d_exports as Auth, ConvexConfigProvider_d_exports as ConvexConfigProvider, DataModel_d_exports as DataModel, DatabaseReader_d_exports as DatabaseReader, DatabaseSchema_d_exports as DatabaseSchema, DatabaseWriter_d_exports as DatabaseWriter, Document_d_exports as Document, FunctionImpl_d_exports as FunctionImpl, GroupImpl_d_exports as GroupImpl, Handler_d_exports as Handler, HttpApi_d_exports as HttpApi, Impl_d_exports as Impl, MutationCtx_d_exports as MutationCtx, MutationRunner_d_exports as MutationRunner, OrderedQuery_d_exports as OrderedQuery, QueryCtx_d_exports as QueryCtx, QueryInitializer_d_exports as QueryInitializer, QueryRunner_d_exports as QueryRunner, RegisteredConvexFunction_d_exports as RegisteredConvexFunction, RegisteredFunction_d_exports as RegisteredFunction, RegisteredFunctions_d_exports as RegisteredFunctions, Registry_d_exports as Registry, RegistryItem_d_exports as RegistryItem, Scheduler_d_exports as Scheduler, SchemaToValidator_d_exports as SchemaToValidator, Storage_d_exports as Storage, Table_d_exports as Table, TableInfo_d_exports as TableInfo, VectorSearch_d_exports as VectorSearch };
38
+ export { ActionCtx_d_exports as ActionCtx, ActionRunner_d_exports as ActionRunner, Api_d_exports as Api, Auth_d_exports as Auth, BlobNotFoundError_d_exports as BlobNotFoundError, ConvexConfigProvider_d_exports as ConvexConfigProvider, CronJob_d_exports as CronJob, CronJobs_d_exports as CronJobs, DataModel_d_exports as DataModel, DatabaseReader_d_exports as DatabaseReader, DatabaseSchema_d_exports as DatabaseSchema, DatabaseWriter_d_exports as DatabaseWriter, Document_d_exports as Document, FunctionImpl_d_exports as FunctionImpl, GroupImpl_d_exports as GroupImpl, Handler_d_exports as Handler, HttpApi_d_exports as HttpApi, Impl_d_exports as Impl, MutationCtx_d_exports as MutationCtx, MutationRunner_d_exports as MutationRunner, OrderedQuery_d_exports as OrderedQuery, QueryCtx_d_exports as QueryCtx, QueryInitializer_d_exports as QueryInitializer, QueryRunner_d_exports as QueryRunner, RegisteredConvexFunction_d_exports as RegisteredConvexFunction, RegisteredFunction_d_exports as RegisteredFunction, RegisteredFunctions_d_exports as RegisteredFunctions, Registry_d_exports as Registry, RegistryItem_d_exports as RegistryItem, Scheduler_d_exports as Scheduler, SchemaToValidator_d_exports as SchemaToValidator, StorageActionWriter_d_exports as StorageActionWriter, StorageReader_d_exports as StorageReader, StorageWriter_d_exports as StorageWriter, Table_d_exports as Table, TableInfo_d_exports as TableInfo, VectorSearch_d_exports as VectorSearch };
package/dist/index.js CHANGED
@@ -2,7 +2,10 @@ import { ActionCtx_exports } from "./ActionCtx.js";
2
2
  import { ActionRunner_exports } from "./ActionRunner.js";
3
3
  import { Api_exports } from "./Api.js";
4
4
  import { Auth_exports } from "./Auth.js";
5
+ import { BlobNotFoundError_exports } from "./BlobNotFoundError.js";
5
6
  import { ConvexConfigProvider_exports } from "./ConvexConfigProvider.js";
7
+ import { CronJob_exports } from "./CronJob.js";
8
+ import { CronJobs_exports } from "./CronJobs.js";
6
9
  import { DataModel_exports } from "./DataModel.js";
7
10
  import { SchemaToValidator_exports } from "./SchemaToValidator.js";
8
11
  import { Table_exports } from "./Table.js";
@@ -20,7 +23,9 @@ import { Handler_exports } from "./Handler.js";
20
23
  import { MutationRunner_exports } from "./MutationRunner.js";
21
24
  import { QueryRunner_exports } from "./QueryRunner.js";
22
25
  import { Scheduler_exports } from "./Scheduler.js";
23
- import { Storage_exports } from "./Storage.js";
26
+ import { StorageActionWriter_exports } from "./StorageActionWriter.js";
27
+ import { StorageReader_exports } from "./StorageReader.js";
28
+ import { StorageWriter_exports } from "./StorageWriter.js";
24
29
  import { HttpApi_exports } from "./HttpApi.js";
25
30
  import { Impl_exports } from "./Impl.js";
26
31
  import { MutationCtx_exports } from "./MutationCtx.js";
@@ -31,4 +36,4 @@ import { RegisteredConvexFunction_exports } from "./RegisteredConvexFunction.js"
31
36
  import { RegisteredFunctions_exports } from "./RegisteredFunctions.js";
32
37
  import { TableInfo_exports } from "./TableInfo.js";
33
38
 
34
- export { ActionCtx_exports as ActionCtx, ActionRunner_exports as ActionRunner, Api_exports as Api, Auth_exports as Auth, ConvexConfigProvider_exports as ConvexConfigProvider, DataModel_exports as DataModel, DatabaseReader_exports as DatabaseReader, DatabaseSchema_exports as DatabaseSchema, DatabaseWriter_exports as DatabaseWriter, Document_exports as Document, FunctionImpl_exports as FunctionImpl, GroupImpl_exports as GroupImpl, Handler_exports as Handler, HttpApi_exports as HttpApi, Impl_exports as Impl, MutationCtx_exports as MutationCtx, MutationRunner_exports as MutationRunner, OrderedQuery_exports as OrderedQuery, QueryCtx_exports as QueryCtx, QueryInitializer_exports as QueryInitializer, QueryRunner_exports as QueryRunner, RegisteredConvexFunction_exports as RegisteredConvexFunction, RegisteredFunction_exports as RegisteredFunction, RegisteredFunctions_exports as RegisteredFunctions, Registry_exports as Registry, RegistryItem_exports as RegistryItem, Scheduler_exports as Scheduler, SchemaToValidator_exports as SchemaToValidator, Storage_exports as Storage, Table_exports as Table, TableInfo_exports as TableInfo, VectorSearch_exports as VectorSearch };
39
+ export { ActionCtx_exports as ActionCtx, ActionRunner_exports as ActionRunner, Api_exports as Api, Auth_exports as Auth, BlobNotFoundError_exports as BlobNotFoundError, ConvexConfigProvider_exports as ConvexConfigProvider, CronJob_exports as CronJob, CronJobs_exports as CronJobs, DataModel_exports as DataModel, DatabaseReader_exports as DatabaseReader, DatabaseSchema_exports as DatabaseSchema, DatabaseWriter_exports as DatabaseWriter, Document_exports as Document, FunctionImpl_exports as FunctionImpl, GroupImpl_exports as GroupImpl, Handler_exports as Handler, HttpApi_exports as HttpApi, Impl_exports as Impl, MutationCtx_exports as MutationCtx, MutationRunner_exports as MutationRunner, OrderedQuery_exports as OrderedQuery, QueryCtx_exports as QueryCtx, QueryInitializer_exports as QueryInitializer, QueryRunner_exports as QueryRunner, RegisteredConvexFunction_exports as RegisteredConvexFunction, RegisteredFunction_exports as RegisteredFunction, RegisteredFunctions_exports as RegisteredFunctions, Registry_exports as Registry, RegistryItem_exports as RegistryItem, Scheduler_exports as Scheduler, SchemaToValidator_exports as SchemaToValidator, StorageActionWriter_exports as StorageActionWriter, StorageReader_exports as StorageReader, StorageWriter_exports as StorageWriter, Table_exports as Table, TableInfo_exports as TableInfo, VectorSearch_exports as VectorSearch };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@confect/server",
3
- "version": "2.0.0",
3
+ "version": "4.0.0",
4
4
  "description": "Backend bindings to the Convex platform",
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,15 +67,15 @@
67
67
  "vite": "7.3.1",
68
68
  "vite-tsconfig-paths": "6.1.1",
69
69
  "vitest": "3.2.4",
70
- "@confect/cli": "2.0.0",
71
- "@confect/test": "2.0.0"
70
+ "@confect/cli": "4.0.0",
71
+ "@confect/test": "4.0.0"
72
72
  },
73
73
  "peerDependencies": {
74
74
  "@effect/platform": "^0.94.5",
75
75
  "@effect/platform-node": "^0.104.1",
76
76
  "convex": "^1.30.0",
77
77
  "effect": "^3.19.16",
78
- "@confect/core": "2.0.0"
78
+ "@confect/core": "4.0.0"
79
79
  },
80
80
  "engines": {
81
81
  "node": ">=22",
@@ -1,29 +1,43 @@
1
1
  import * as Ref from "@confect/core/Ref";
2
2
  import { type GenericActionCtx } from "convex/server";
3
3
  import type { ParseResult } from "effect";
4
- import { Context, Effect, Layer, Schema } from "effect";
4
+ import { Context, Effect, Layer, Match, Schema } from "effect";
5
5
 
6
- const makeActionRunner =
6
+ const make =
7
7
  (runAction: GenericActionCtx<any>["runAction"]) =>
8
8
  <Action extends Ref.AnyAction>(
9
9
  action: Action,
10
- args: Ref.Args<Action>["Type"],
11
- ): Effect.Effect<Ref.Returns<Action>["Type"], ParseResult.ParseError> =>
10
+ args: Ref.Args<Action>,
11
+ ): Effect.Effect<Ref.Returns<Action>, ParseResult.ParseError> =>
12
12
  Effect.gen(function* () {
13
- const function_ = Ref.getFunction(action);
13
+ const functionSpec = Ref.getFunctionSpec(action);
14
14
  const functionName = Ref.getConvexFunctionName(action);
15
15
 
16
- const encodedArgs = yield* Schema.encode(function_.args)(args);
17
- const encodedReturns = yield* Effect.promise(() =>
18
- runAction(functionName as any, encodedArgs),
16
+ return yield* Match.value(functionSpec.functionProvenance).pipe(
17
+ Match.tag("Confect", (confectFunctionSpec) =>
18
+ Effect.gen(function* () {
19
+ const encodedArgs = yield* Schema.encode(confectFunctionSpec.args)(
20
+ args,
21
+ );
22
+ const encodedReturns = yield* Effect.promise(() =>
23
+ runAction(functionName as any, encodedArgs),
24
+ );
25
+ return yield* Schema.decode(confectFunctionSpec.returns)(
26
+ encodedReturns,
27
+ );
28
+ }),
29
+ ),
30
+ Match.tag("Convex", () =>
31
+ Effect.promise(() => runAction(functionName as any, args as any)),
32
+ ),
33
+ Match.exhaustive,
19
34
  );
20
- return yield* Schema.decode(function_.returns)(encodedReturns);
21
35
  });
22
36
 
23
- export const ActionRunner = Context.GenericTag<
24
- ReturnType<typeof makeActionRunner>
25
- >("@confect/server/ActionRunner");
37
+ export const ActionRunner = Context.GenericTag<ReturnType<typeof make>>(
38
+ "@confect/server/ActionRunner",
39
+ );
26
40
  export type ActionRunner = typeof ActionRunner.Identifier;
27
41
 
28
42
  export const layer = (runAction: GenericActionCtx<any>["runAction"]) =>
29
- Layer.succeed(ActionRunner, makeActionRunner(runAction));
43
+ Layer.succeed(ActionRunner, make(runAction));
@@ -0,0 +1,12 @@
1
+ import { Schema } from "effect";
2
+
3
+ export class BlobNotFoundError extends Schema.TaggedError<BlobNotFoundError>()(
4
+ "BlobNotFoundError",
5
+ {
6
+ id: Schema.String,
7
+ },
8
+ ) {
9
+ override get message(): string {
10
+ return `File with ID '${this.id}' not found`;
11
+ }
12
+ }
package/src/CronJob.ts ADDED
@@ -0,0 +1,45 @@
1
+ import type { Ref } from "@confect/core";
2
+ import type { Cron, Duration } from "effect";
3
+ import { Predicate } from "effect";
4
+
5
+ export const TypeId = "@confect/server/CronJob";
6
+ export type TypeId = typeof TypeId;
7
+
8
+ export interface CronJob {
9
+ readonly [TypeId]: TypeId;
10
+
11
+ readonly identifier: string;
12
+ readonly schedule: Cron.Cron | Duration.Duration;
13
+ readonly ref: Ref.AnyMutation | Ref.AnyAction;
14
+ readonly args: Record<string, unknown>;
15
+ }
16
+
17
+ export const isCronJob = (u: unknown): u is CronJob =>
18
+ Predicate.hasProperty(u, TypeId);
19
+
20
+ type OptionalArgs<R extends Ref.AnyMutation | Ref.AnyAction> =
21
+ keyof Ref.Args<R> extends never ? [args?: Ref.Args<R>] : [args: Ref.Args<R>];
22
+
23
+ const Proto = {
24
+ [TypeId]: TypeId,
25
+ };
26
+
27
+ const makeProto = (
28
+ identifier: string,
29
+ schedule: Cron.Cron | Duration.Duration,
30
+ ref: Ref.AnyMutation | Ref.AnyAction,
31
+ args: Record<string, unknown>,
32
+ ): CronJob =>
33
+ Object.assign(Object.create(Proto), {
34
+ identifier,
35
+ schedule,
36
+ ref,
37
+ args,
38
+ });
39
+
40
+ export const make = <R extends Ref.AnyMutation | Ref.AnyAction>(
41
+ identifier: string,
42
+ schedule: Cron.Cron | Duration.Duration,
43
+ ref: R,
44
+ ...args: OptionalArgs<R>
45
+ ): CronJob => makeProto(identifier, schedule, ref, args[0] ?? {});