@gaganref/confect-core 10.3.1-fork.4 → 10.3.1-fork.6

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 (80) hide show
  1. package/dist/App.d.ts +1 -1
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js.map +1 -1
  4. package/dist/Auth.d.ts +2 -2
  5. package/dist/Auth.d.ts.map +1 -1
  6. package/dist/Auth.js.map +1 -1
  7. package/dist/Callback.d.ts +3 -3
  8. package/dist/Callback.d.ts.map +1 -1
  9. package/dist/Callback.js.map +1 -1
  10. package/dist/Component.d.ts +8 -8
  11. package/dist/Component.d.ts.map +1 -1
  12. package/dist/Component.js.map +1 -1
  13. package/dist/FunctionProvenance.d.ts +2 -2
  14. package/dist/FunctionProvenance.d.ts.map +1 -1
  15. package/dist/FunctionProvenance.js.map +1 -1
  16. package/dist/FunctionSpec.d.ts +4 -4
  17. package/dist/FunctionSpec.d.ts.map +1 -1
  18. package/dist/FunctionSpec.js.map +1 -1
  19. package/dist/GenericId.d.ts +2 -2
  20. package/dist/GenericId.d.ts.map +1 -1
  21. package/dist/GenericId.js.map +1 -1
  22. package/dist/GroupPath.d.ts +1 -1
  23. package/dist/GroupPath.d.ts.map +1 -1
  24. package/dist/GroupPath.js.map +1 -1
  25. package/dist/GroupSpec.d.ts +4 -4
  26. package/dist/GroupSpec.d.ts.map +1 -1
  27. package/dist/GroupSpec.js.map +1 -1
  28. package/dist/Http.d.ts +1 -1
  29. package/dist/Http.d.ts.map +1 -1
  30. package/dist/Http.js.map +1 -1
  31. package/dist/Manifest.d.ts +1 -1
  32. package/dist/Manifest.d.ts.map +1 -1
  33. package/dist/Manifest.js.map +1 -1
  34. package/dist/MiddlewareAttachment.d.ts +1 -1
  35. package/dist/MiddlewareAttachment.d.ts.map +1 -1
  36. package/dist/MiddlewareAttachment.js.map +1 -1
  37. package/dist/MiddlewareSpec.d.ts +3 -3
  38. package/dist/MiddlewareSpec.d.ts.map +1 -1
  39. package/dist/MiddlewareSpec.js.map +1 -1
  40. package/dist/Ref.d.ts +5 -5
  41. package/dist/Ref.d.ts.map +1 -1
  42. package/dist/Ref.js.map +1 -1
  43. package/dist/Refs.d.ts +5 -5
  44. package/dist/Refs.d.ts.map +1 -1
  45. package/dist/Refs.js.map +1 -1
  46. package/dist/SchemaToValidator.d.ts +2 -2
  47. package/dist/SchemaToValidator.d.ts.map +1 -1
  48. package/dist/SchemaToValidator.js.map +1 -1
  49. package/dist/Spec.d.ts +1 -1
  50. package/dist/Spec.d.ts.map +1 -1
  51. package/dist/Spec.js.map +1 -1
  52. package/dist/SystemFields.d.ts +2 -2
  53. package/dist/SystemFields.d.ts.map +1 -1
  54. package/dist/SystemFields.js.map +1 -1
  55. package/dist/Table.d.ts +3 -3
  56. package/dist/Table.d.ts.map +1 -1
  57. package/dist/Table.js.map +1 -1
  58. package/dist/index.d.ts +29 -29
  59. package/dist/index.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/src/App.ts +1 -1
  62. package/src/Auth.ts +2 -2
  63. package/src/Callback.ts +3 -3
  64. package/src/Component.ts +11 -11
  65. package/src/FunctionProvenance.ts +3 -3
  66. package/src/FunctionSpec.ts +5 -5
  67. package/src/GenericId.ts +2 -2
  68. package/src/GroupPath.ts +1 -1
  69. package/src/GroupSpec.ts +5 -5
  70. package/src/Http.ts +1 -1
  71. package/src/Manifest.ts +1 -1
  72. package/src/MiddlewareAttachment.ts +1 -1
  73. package/src/MiddlewareSpec.ts +4 -4
  74. package/src/Ref.ts +6 -6
  75. package/src/Refs.ts +5 -5
  76. package/src/SchemaToValidator.ts +3 -3
  77. package/src/Spec.ts +1 -1
  78. package/src/SystemFields.ts +2 -2
  79. package/src/Table.ts +4 -4
  80. package/src/index.ts +29 -29
@@ -1 +1 @@
1
- {"version":3,"file":"MiddlewareSpec.js","names":[],"sources":["../src/MiddlewareSpec.ts"],"sourcesContent":["import type { FunctionType, FunctionVisibility } from \"convex/server\";\nimport type * as Effect from \"effect/Effect\";\nimport * as Predicate from \"effect/Predicate\";\nimport type * as Schema from \"effect/Schema\";\nimport type { unhandled } from \"effect/Types\";\nimport type * as FunctionProvenance from \"./FunctionProvenance\";\nimport type * as FunctionSpec from \"./FunctionSpec\";\nimport * as Lazy from \"./Lazy\";\nimport type * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType\";\n\nexport const TypeId = \"~@confect/core/MiddlewareSpec\";\nexport type TypeId = typeof TypeId;\n\nexport const isMiddlewareSpec = (u: unknown): u is AnyMiddlewareSpec =>\n Predicate.hasProperty(u, TypeId);\n\nexport const allFunctionTypes: ReadonlyArray<FunctionType> = [\n \"query\",\n \"mutation\",\n \"action\",\n];\n\nexport interface SupportedFunctionTypes {\n readonly query: boolean;\n readonly mutation: boolean;\n readonly action: boolean;\n}\n\n/**\n * Marker success type used by middleware to represent the handler's outcome\n * without exposing its concrete success value.\n *\n * Mirrors `RpcMiddleware.SuccessValue` in Effect.\n */\nexport interface SuccessValue {\n readonly _: unique symbol;\n}\n\n/**\n * The wrap-style middleware implementation shape: receives the downstream\n * effect (the remaining middleware plus the function handler) and the covered\n * invocation's metadata, and returns the effect that runs in its place.\n *\n * Mirrors `RpcMiddleware.RpcMiddleware` in Effect.\n */\nexport interface MiddlewareImpl<Provides_, E, R, Options_ = never> {\n (\n effect: Effect.Effect<SuccessValue, E | unhandled, Provides_>,\n context: MiddlewareOptions<Options_>,\n ): Effect.Effect<SuccessValue, E | unhandled, R>;\n}\n\nexport type MiddlewareOptions<Options_ = never> = {\n readonly invocation: {\n readonly name: string;\n readonly functionType: FunctionType;\n readonly functionVisibility: FunctionVisibility;\n readonly args: unknown;\n };\n} & ([Options_] extends [never] ? unknown : { readonly options: Options_ });\n\nexport interface AnyMiddlewareImpl {\n (\n effect: Effect.Effect<SuccessValue, any, any>,\n context: MiddlewareOptions | MiddlewareOptions<unknown>,\n ): Effect.Effect<SuccessValue, any, any>;\n}\n\n/**\n * The class shape produced by {@link MiddlewareSpec}. Only the static side is\n * ever used—the class is a value-level carrier for the middleware's key, its\n * declared functionTypes, and its (lazily-evaluated) error schema, plus the\n * type-level `Provides`/`Error` metadata. It is deliberately not a\n * `Context.Tag`: implementations are registered through the group `Registry`\n * (like `FunctionImpl`s), not resolved from a Layer context.\n */\nexport interface MiddlewareSpec<\n in out Self,\n Key_ extends string,\n Provides_,\n Requires_,\n ErrorSchema_ extends Schema.Codec<any, any>,\n FunctionTypes_ extends FunctionType,\n OptionsSchema_ extends Schema.Schema<any> = never,\n> {\n new (_: never): {\n readonly [TypeId]: TypeId;\n readonly key: Key_;\n };\n readonly [TypeId]: TypeId;\n readonly key: Key_;\n readonly functionTypes: SupportedFunctionTypes;\n readonly error?: ErrorSchema_;\n readonly options?: OptionsSchema_;\n readonly \"~Provides\": Provides_;\n readonly \"~Requires\": Requires_;\n readonly \"~Error\": ErrorSchema_;\n readonly \"~FunctionTypes\": FunctionTypes_;\n readonly \"~Self\": Self;\n readonly \"~Options\": OptionsSchema_;\n}\n\nexport interface AnyMiddlewareSpec {\n readonly [TypeId]: TypeId;\n readonly key: string;\n readonly functionTypes: SupportedFunctionTypes;\n readonly error?: Schema.Codec<any, any>;\n readonly options?: Schema.Schema<any>;\n readonly \"~Provides\": any;\n readonly \"~Requires\": any;\n readonly \"~Error\": any;\n readonly \"~FunctionTypes\": FunctionType;\n readonly \"~Options\": any;\n}\n\nexport type Options<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_[\"~Options\"][\"Type\"];\n\nexport type WithoutOptions<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? [MiddlewareSpec_[\"~Options\"]] extends [never]\n ? MiddlewareSpec_\n : never\n : never;\n\nexport type Key<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_[\"key\"];\n\nexport type Provides<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Provides\"]\n : never;\n\n/**\n * The services a middleware's implementation may consume from middleware that\n * runs earlier in the same chain (type-level only, like `provides`).\n */\nexport type Requires<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Requires\"]\n : never;\n\nexport type ErrorSchema<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec ? MiddlewareSpec_[\"~Error\"] : never;\n\nexport type Error<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Error\"][\"Type\"]\n : never;\n\nexport type EncodedError<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Error\"][\"Encoded\"]\n : never;\n\nexport type FunctionTypes<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~FunctionTypes\"]\n : never;\n\n/**\n * Declare a middleware's client-safe interface: its identifying key, the\n * service it provides to downstream handlers, the error schema its failures\n * encode through, and the function types it may attach to.\n *\n * ```ts\n * class RequireUser extends MiddlewareSpec.MiddlewareSpec<\n * RequireUser,\n * {\n * provides: CurrentUser;\n * }\n * >()(\"RequireUser\", {\n * error: () => NotSignedIn,\n * functionTypes: { query: true, mutation: true, action: false },\n * }) {}\n * ```\n *\n * The implementation is server-only and supplied separately via\n * `MiddlewareImpl.make` (or `makeByFunctionType`/`provides`) in\n * `@confect/server`.\n */\nexport const MiddlewareSpec =\n <Self, Config extends { provides?: any; requires?: any } = {}>() =>\n <\n const Key_ extends string,\n const FunctionTypesConfig_ extends SupportedFunctionTypes,\n ErrorSchema_ extends Schema.Codec<any, any> = never,\n OptionsSchema_ extends Schema.Schema<any> = never,\n >(\n key: Key_,\n options: {\n readonly error?: () => ErrorSchema_;\n readonly options?: () => OptionsSchema_;\n readonly functionTypes: FunctionTypesConfig_ &\n ValidateFunctionTypesConfig<FunctionTypesConfig_>;\n },\n ): MiddlewareSpec<\n Self,\n Key_,\n \"provides\" extends keyof Config ? Config[\"provides\"] : never,\n \"requires\" extends keyof Config ? Config[\"requires\"] : never,\n ErrorSchema_,\n FunctionTypesFromConfig<FunctionTypesConfig_>,\n OptionsSchema_\n > => {\n const { query, mutation, action } = options.functionTypes;\n if (!query && !mutation && !action) {\n throw new Error(\n `Middleware \"${key}\" must declare at least one function type`,\n );\n }\n\n function MiddlewareSpecClass() {}\n const class_ = MiddlewareSpecClass as any;\n class_[TypeId] = TypeId;\n class_.key = key;\n class_.functionTypes = {\n query,\n mutation,\n action,\n } satisfies SupportedFunctionTypes;\n if (options.error !== undefined) {\n Lazy.defineProperty(class_, \"error\", options.error);\n }\n if (options.options !== undefined) {\n Lazy.defineProperty(class_, \"options\", options.options);\n }\n return class_;\n };\n\ntype FunctionTypesFromConfig<Config extends SupportedFunctionTypes> = {\n [K in FunctionType]: Config[K] extends true ? K : never;\n}[FunctionType];\n\ntype ValidateFunctionTypesConfig<Config extends SupportedFunctionTypes> =\n ValidationResult<\n | {\n [K in keyof Config]: boolean extends Config[K]\n ? AttachmentError<`Function type flag \"${K & string}\" must be a literal \\`true\\` or \\`false\\`, not a computed \\`boolean\\``>\n : never;\n }[keyof Config]\n | ([FunctionTypesFromConfig<Config>] extends [never]\n ? AttachmentError<`A middleware must declare at least one function type`>\n : never)\n >;\n\nexport const errorSchemas = (\n middlewareSpecs: ReadonlyArray<AnyMiddlewareSpec>,\n): ReadonlyArray<Schema.Codec<any, any>> =>\n middlewareSpecs.flatMap((middlewareSpec) =>\n \"error\" in middlewareSpec && middlewareSpec.error !== undefined\n ? [middlewareSpec.error]\n : [],\n );\n\n/**\n * A branded, unconstructible type carrying a spec-authoring error message.\n * Surfaced as (part of) a parameter type so the diagnostic names the exact\n * problem at the `.middleware()`/`.addFunction()` call site.\n */\nexport interface AttachmentError<Message extends string> {\n readonly \"~@confect/core/MiddlewareSpec/AttachmentError\": Message;\n}\n\ntype FunctionTypeOf<FunctionSpec_ extends FunctionSpec.AnyWithProps> =\n FunctionSpec_[\"runtimeAndFunctionType\"][\"functionType\"];\n\ntype ValidationResult<Errors> = [Errors] extends [never] ? unknown : Errors;\n\n/**\n * A matching-type Convex-provenance function is rejected rather than silently\n * skipped: its raw handler passes through Confect untouched, so the middleware\n * could not actually cover it, and skipping it would be a policy hole.\n */\nexport type ValidateFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpec_ extends AnyMiddlewareSpec,\n> = FunctionSpec_ extends any\n ? MiddlewareSpec_ extends any\n ? FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Convex\" };\n }\n ? FunctionTypeOf<FunctionSpec_> extends FunctionTypes<MiddlewareSpec_>\n ? AttachmentError<`Convex-provenance function \"${FunctionSpec_[\"name\"]}\" cannot be covered by middleware \"${Key<MiddlewareSpec_>}\"—attach middleware only to groups whose matching-type functions are all Confect-provenance`>\n : never\n : [\n Extract<\n FunctionSpec.MiddlewareSpecs<FunctionSpec_>,\n { readonly key: Key<WithoutOptions<MiddlewareSpec_>> }\n >,\n ] extends [never]\n ? FunctionTypeOf<FunctionSpec_> extends FunctionTypes<MiddlewareSpec_>\n ? never\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" does not declare function type \"${FunctionTypeOf<FunctionSpec_>}\", the type of function \"${FunctionSpec_[\"name\"]}\"`>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" is already attached to function \"${FunctionSpec_[\"name\"]}\"`>\n : never\n : never;\n\n/**\n * Attachment order is chain order, so requiring `requires` to be satisfied by\n * already-attached middleware is exactly requiring the provider to run\n * earlier.\n */\nexport type ValidateAttach<\n MiddlewareSpec_ extends AnyMiddlewareSpec,\n Functions_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = [\n Extract<\n MiddlewareSpecs_,\n { readonly key: Key<WithoutOptions<MiddlewareSpec_>> }\n >,\n] extends [never]\n ? [Exclude<Requires<MiddlewareSpec_>, Provides<MiddlewareSpecs_>>] extends [\n never,\n ]\n ? ValidationResult<ValidateFunction<Functions_, MiddlewareSpec_>>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" requires services that no middleware attached earlier to this group provides—attach the providing middleware first`>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" is already attached to this group`>;\n\nexport type ValidateAddedFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = [MiddlewareSpecs_] extends [never]\n ? unknown\n : ValidationResult<\n | ValidateFunction<FunctionSpec_, MiddlewareSpecs_>\n | GroupOverlap<FunctionSpec_, MiddlewareSpecs_>\n >;\n\ntype GroupOverlap<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> =\n FunctionSpec.MiddlewareSpecs<FunctionSpec_> extends infer FunctionMiddlewareSpec\n ? FunctionMiddlewareSpec extends AnyMiddlewareSpec\n ? [\n Extract<\n MiddlewareSpecs_,\n { readonly key: Key<WithoutOptions<FunctionMiddlewareSpec>> }\n >,\n ] extends [never]\n ? never\n : AttachmentError<`Middleware \"${Key<FunctionMiddlewareSpec>}\" is attached to both function \"${FunctionSpec_[\"name\"]}\" and its group`>\n : never\n : never;\n\n/**\n * The parameter-type validation applied to the group spec at `GroupImpl.make`:\n * every function's attached middleware must have its `requires` services\n * provided by some middleware covering that function (the group's or the\n * function's own). Checked here—with the group fully assembled—rather than at\n * the spec builders, because a function-level middleware's `requires` may\n * legitimately be satisfied by a group middleware the function spec never sees,\n * and group attachment is declaratively order-independent with respect to\n * `addFunction`.\n */\nexport type ValidateImplRequires<\n Functions_ extends FunctionSpec.AnyWithProps,\n GroupMiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = ValidationResult<\n Functions_ extends any\n ? [\n Exclude<\n Requires<FunctionSpec.MiddlewareSpecs<Functions_>>,\n Provides<\n GroupMiddlewareSpecs_ | FunctionSpec.MiddlewareSpecs<Functions_>\n >\n >,\n ] extends [never]\n ? never\n : AttachmentError<`Function \"${Functions_[\"name\"]}\" has middleware requiring services that no middleware covering it provides`>\n : never\n>;\n\nexport type ValidateFunctionAttach<\n MiddlewareSpec_ extends AnyMiddlewareSpec,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = FunctionProvenance_ extends { readonly _tag: \"Convex\" }\n ? AttachmentError<`Plain Convex functions cannot have middleware—their raw handlers are passed through untouched`>\n : [\n Extract<\n MiddlewareSpecs_,\n { readonly key: Key<WithoutOptions<MiddlewareSpec_>> }\n >,\n ] extends [never]\n ? RuntimeAndFunctionType_[\"functionType\"] extends FunctionTypes<MiddlewareSpec_>\n ? unknown\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" does not declare function type \"${RuntimeAndFunctionType_[\"functionType\"]}\"`>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" is already attached to this function`>;\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,SAAS;AAGtB,MAAa,oBAAoB,MAC/B,UAAU,YAAY,GAAG,MAAM;AAEjC,MAAa,mBAAgD;CAC3D;CACA;CACA;AACF;;;;;;;;;;;;;;;;;;;;;;AAiKA,MAAa,wBAQT,KACA,YAcG;CACH,MAAM,EAAE,OAAO,UAAU,WAAW,QAAQ;CAC5C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAC1B,MAAM,IAAI,MACR,eAAe,IAAI,0CACrB;CAGF,SAAS,sBAAsB,CAAC;CAChC,MAAM,SAAS;CACf,OAAO,UAAU;CACjB,OAAO,MAAM;CACb,OAAO,gBAAgB;EACrB;EACA;EACA;CACF;CACA,IAAI,QAAQ,UAAU,KAAA,GACpB,eAAoB,QAAQ,SAAS,QAAQ,KAAK;CAEpD,IAAI,QAAQ,YAAY,KAAA,GACtB,eAAoB,QAAQ,WAAW,QAAQ,OAAO;CAExD,OAAO;AACT;AAkBF,MAAa,gBACX,oBAEA,gBAAgB,SAAS,mBACvB,WAAW,kBAAkB,eAAe,UAAU,KAAA,IAClD,CAAC,eAAe,KAAK,IACrB,CAAC,CACP"}
1
+ {"version":3,"file":"MiddlewareSpec.js","names":[],"sources":["../src/MiddlewareSpec.ts"],"sourcesContent":["import type { FunctionType, FunctionVisibility } from \"convex/server\";\nimport type * as Effect from \"effect/Effect\";\nimport * as Predicate from \"effect/Predicate\";\nimport type * as Schema from \"effect/Schema\";\nimport type { unhandled } from \"effect/Types\";\nimport type * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport type * as FunctionSpec from \"./FunctionSpec.js\";\nimport * as Lazy from \"./Lazy.js\";\nimport type * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType.js\";\n\nexport const TypeId = \"~@confect/core/MiddlewareSpec\";\nexport type TypeId = typeof TypeId;\n\nexport const isMiddlewareSpec = (u: unknown): u is AnyMiddlewareSpec =>\n Predicate.hasProperty(u, TypeId);\n\nexport const allFunctionTypes: ReadonlyArray<FunctionType> = [\n \"query\",\n \"mutation\",\n \"action\",\n];\n\nexport interface SupportedFunctionTypes {\n readonly query: boolean;\n readonly mutation: boolean;\n readonly action: boolean;\n}\n\n/**\n * Marker success type used by middleware to represent the handler's outcome\n * without exposing its concrete success value.\n *\n * Mirrors `RpcMiddleware.SuccessValue` in Effect.\n */\nexport interface SuccessValue {\n readonly _: unique symbol;\n}\n\n/**\n * The wrap-style middleware implementation shape: receives the downstream\n * effect (the remaining middleware plus the function handler) and the covered\n * invocation's metadata, and returns the effect that runs in its place.\n *\n * Mirrors `RpcMiddleware.RpcMiddleware` in Effect.\n */\nexport interface MiddlewareImpl<Provides_, E, R, Options_ = never> {\n (\n effect: Effect.Effect<SuccessValue, E | unhandled, Provides_>,\n context: MiddlewareOptions<Options_>,\n ): Effect.Effect<SuccessValue, E | unhandled, R>;\n}\n\nexport type MiddlewareOptions<Options_ = never> = {\n readonly invocation: {\n readonly name: string;\n readonly functionType: FunctionType;\n readonly functionVisibility: FunctionVisibility;\n readonly args: unknown;\n };\n} & ([Options_] extends [never] ? unknown : { readonly options: Options_ });\n\nexport interface AnyMiddlewareImpl {\n (\n effect: Effect.Effect<SuccessValue, any, any>,\n context: MiddlewareOptions | MiddlewareOptions<unknown>,\n ): Effect.Effect<SuccessValue, any, any>;\n}\n\n/**\n * The class shape produced by {@link MiddlewareSpec}. Only the static side is\n * ever used—the class is a value-level carrier for the middleware's key, its\n * declared functionTypes, and its (lazily-evaluated) error schema, plus the\n * type-level `Provides`/`Error` metadata. It is deliberately not a\n * `Context.Tag`: implementations are registered through the group `Registry`\n * (like `FunctionImpl`s), not resolved from a Layer context.\n */\nexport interface MiddlewareSpec<\n in out Self,\n Key_ extends string,\n Provides_,\n Requires_,\n ErrorSchema_ extends Schema.Codec<any, any>,\n FunctionTypes_ extends FunctionType,\n OptionsSchema_ extends Schema.Schema<any> = never,\n> {\n new (_: never): {\n readonly [TypeId]: TypeId;\n readonly key: Key_;\n };\n readonly [TypeId]: TypeId;\n readonly key: Key_;\n readonly functionTypes: SupportedFunctionTypes;\n readonly error?: ErrorSchema_;\n readonly options?: OptionsSchema_;\n readonly \"~Provides\": Provides_;\n readonly \"~Requires\": Requires_;\n readonly \"~Error\": ErrorSchema_;\n readonly \"~FunctionTypes\": FunctionTypes_;\n readonly \"~Self\": Self;\n readonly \"~Options\": OptionsSchema_;\n}\n\nexport interface AnyMiddlewareSpec {\n readonly [TypeId]: TypeId;\n readonly key: string;\n readonly functionTypes: SupportedFunctionTypes;\n readonly error?: Schema.Codec<any, any>;\n readonly options?: Schema.Schema<any>;\n readonly \"~Provides\": any;\n readonly \"~Requires\": any;\n readonly \"~Error\": any;\n readonly \"~FunctionTypes\": FunctionType;\n readonly \"~Options\": any;\n}\n\nexport type Options<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_[\"~Options\"][\"Type\"];\n\nexport type WithoutOptions<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? [MiddlewareSpec_[\"~Options\"]] extends [never]\n ? MiddlewareSpec_\n : never\n : never;\n\nexport type Key<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_[\"key\"];\n\nexport type Provides<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Provides\"]\n : never;\n\n/**\n * The services a middleware's implementation may consume from middleware that\n * runs earlier in the same chain (type-level only, like `provides`).\n */\nexport type Requires<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Requires\"]\n : never;\n\nexport type ErrorSchema<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec ? MiddlewareSpec_[\"~Error\"] : never;\n\nexport type Error<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Error\"][\"Type\"]\n : never;\n\nexport type EncodedError<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~Error\"][\"Encoded\"]\n : never;\n\nexport type FunctionTypes<MiddlewareSpec_ extends AnyMiddlewareSpec> =\n MiddlewareSpec_ extends AnyMiddlewareSpec\n ? MiddlewareSpec_[\"~FunctionTypes\"]\n : never;\n\n/**\n * Declare a middleware's client-safe interface: its identifying key, the\n * service it provides to downstream handlers, the error schema its failures\n * encode through, and the function types it may attach to.\n *\n * ```ts\n * class RequireUser extends MiddlewareSpec.MiddlewareSpec<\n * RequireUser,\n * {\n * provides: CurrentUser;\n * }\n * >()(\"RequireUser\", {\n * error: () => NotSignedIn,\n * functionTypes: { query: true, mutation: true, action: false },\n * }) {}\n * ```\n *\n * The implementation is server-only and supplied separately via\n * `MiddlewareImpl.make` (or `makeByFunctionType`/`provides`) in\n * `@confect/server`.\n */\nexport const MiddlewareSpec =\n <Self, Config extends { provides?: any; requires?: any } = {}>() =>\n <\n const Key_ extends string,\n const FunctionTypesConfig_ extends SupportedFunctionTypes,\n ErrorSchema_ extends Schema.Codec<any, any> = never,\n OptionsSchema_ extends Schema.Schema<any> = never,\n >(\n key: Key_,\n options: {\n readonly error?: () => ErrorSchema_;\n readonly options?: () => OptionsSchema_;\n readonly functionTypes: FunctionTypesConfig_ &\n ValidateFunctionTypesConfig<FunctionTypesConfig_>;\n },\n ): MiddlewareSpec<\n Self,\n Key_,\n \"provides\" extends keyof Config ? Config[\"provides\"] : never,\n \"requires\" extends keyof Config ? Config[\"requires\"] : never,\n ErrorSchema_,\n FunctionTypesFromConfig<FunctionTypesConfig_>,\n OptionsSchema_\n > => {\n const { query, mutation, action } = options.functionTypes;\n if (!query && !mutation && !action) {\n throw new Error(\n `Middleware \"${key}\" must declare at least one function type`,\n );\n }\n\n function MiddlewareSpecClass() {}\n const class_ = MiddlewareSpecClass as any;\n class_[TypeId] = TypeId;\n class_.key = key;\n class_.functionTypes = {\n query,\n mutation,\n action,\n } satisfies SupportedFunctionTypes;\n if (options.error !== undefined) {\n Lazy.defineProperty(class_, \"error\", options.error);\n }\n if (options.options !== undefined) {\n Lazy.defineProperty(class_, \"options\", options.options);\n }\n return class_;\n };\n\ntype FunctionTypesFromConfig<Config extends SupportedFunctionTypes> = {\n [K in FunctionType]: Config[K] extends true ? K : never;\n}[FunctionType];\n\ntype ValidateFunctionTypesConfig<Config extends SupportedFunctionTypes> =\n ValidationResult<\n | {\n [K in keyof Config]: boolean extends Config[K]\n ? AttachmentError<`Function type flag \"${K & string}\" must be a literal \\`true\\` or \\`false\\`, not a computed \\`boolean\\``>\n : never;\n }[keyof Config]\n | ([FunctionTypesFromConfig<Config>] extends [never]\n ? AttachmentError<`A middleware must declare at least one function type`>\n : never)\n >;\n\nexport const errorSchemas = (\n middlewareSpecs: ReadonlyArray<AnyMiddlewareSpec>,\n): ReadonlyArray<Schema.Codec<any, any>> =>\n middlewareSpecs.flatMap((middlewareSpec) =>\n \"error\" in middlewareSpec && middlewareSpec.error !== undefined\n ? [middlewareSpec.error]\n : [],\n );\n\n/**\n * A branded, unconstructible type carrying a spec-authoring error message.\n * Surfaced as (part of) a parameter type so the diagnostic names the exact\n * problem at the `.middleware()`/`.addFunction()` call site.\n */\nexport interface AttachmentError<Message extends string> {\n readonly \"~@confect/core/MiddlewareSpec/AttachmentError\": Message;\n}\n\ntype FunctionTypeOf<FunctionSpec_ extends FunctionSpec.AnyWithProps> =\n FunctionSpec_[\"runtimeAndFunctionType\"][\"functionType\"];\n\ntype ValidationResult<Errors> = [Errors] extends [never] ? unknown : Errors;\n\n/**\n * A matching-type Convex-provenance function is rejected rather than silently\n * skipped: its raw handler passes through Confect untouched, so the middleware\n * could not actually cover it, and skipping it would be a policy hole.\n */\nexport type ValidateFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpec_ extends AnyMiddlewareSpec,\n> = FunctionSpec_ extends any\n ? MiddlewareSpec_ extends any\n ? FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Convex\" };\n }\n ? FunctionTypeOf<FunctionSpec_> extends FunctionTypes<MiddlewareSpec_>\n ? AttachmentError<`Convex-provenance function \"${FunctionSpec_[\"name\"]}\" cannot be covered by middleware \"${Key<MiddlewareSpec_>}\"—attach middleware only to groups whose matching-type functions are all Confect-provenance`>\n : never\n : [\n Extract<\n FunctionSpec.MiddlewareSpecs<FunctionSpec_>,\n { readonly key: Key<WithoutOptions<MiddlewareSpec_>> }\n >,\n ] extends [never]\n ? FunctionTypeOf<FunctionSpec_> extends FunctionTypes<MiddlewareSpec_>\n ? never\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" does not declare function type \"${FunctionTypeOf<FunctionSpec_>}\", the type of function \"${FunctionSpec_[\"name\"]}\"`>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" is already attached to function \"${FunctionSpec_[\"name\"]}\"`>\n : never\n : never;\n\n/**\n * Attachment order is chain order, so requiring `requires` to be satisfied by\n * already-attached middleware is exactly requiring the provider to run\n * earlier.\n */\nexport type ValidateAttach<\n MiddlewareSpec_ extends AnyMiddlewareSpec,\n Functions_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = [\n Extract<\n MiddlewareSpecs_,\n { readonly key: Key<WithoutOptions<MiddlewareSpec_>> }\n >,\n] extends [never]\n ? [Exclude<Requires<MiddlewareSpec_>, Provides<MiddlewareSpecs_>>] extends [\n never,\n ]\n ? ValidationResult<ValidateFunction<Functions_, MiddlewareSpec_>>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" requires services that no middleware attached earlier to this group provides—attach the providing middleware first`>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" is already attached to this group`>;\n\nexport type ValidateAddedFunction<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = [MiddlewareSpecs_] extends [never]\n ? unknown\n : ValidationResult<\n | ValidateFunction<FunctionSpec_, MiddlewareSpecs_>\n | GroupOverlap<FunctionSpec_, MiddlewareSpecs_>\n >;\n\ntype GroupOverlap<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> =\n FunctionSpec.MiddlewareSpecs<FunctionSpec_> extends infer FunctionMiddlewareSpec\n ? FunctionMiddlewareSpec extends AnyMiddlewareSpec\n ? [\n Extract<\n MiddlewareSpecs_,\n { readonly key: Key<WithoutOptions<FunctionMiddlewareSpec>> }\n >,\n ] extends [never]\n ? never\n : AttachmentError<`Middleware \"${Key<FunctionMiddlewareSpec>}\" is attached to both function \"${FunctionSpec_[\"name\"]}\" and its group`>\n : never\n : never;\n\n/**\n * The parameter-type validation applied to the group spec at `GroupImpl.make`:\n * every function's attached middleware must have its `requires` services\n * provided by some middleware covering that function (the group's or the\n * function's own). Checked here—with the group fully assembled—rather than at\n * the spec builders, because a function-level middleware's `requires` may\n * legitimately be satisfied by a group middleware the function spec never sees,\n * and group attachment is declaratively order-independent with respect to\n * `addFunction`.\n */\nexport type ValidateImplRequires<\n Functions_ extends FunctionSpec.AnyWithProps,\n GroupMiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = ValidationResult<\n Functions_ extends any\n ? [\n Exclude<\n Requires<FunctionSpec.MiddlewareSpecs<Functions_>>,\n Provides<\n GroupMiddlewareSpecs_ | FunctionSpec.MiddlewareSpecs<Functions_>\n >\n >,\n ] extends [never]\n ? never\n : AttachmentError<`Function \"${Functions_[\"name\"]}\" has middleware requiring services that no middleware covering it provides`>\n : never\n>;\n\nexport type ValidateFunctionAttach<\n MiddlewareSpec_ extends AnyMiddlewareSpec,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends AnyMiddlewareSpec,\n> = FunctionProvenance_ extends { readonly _tag: \"Convex\" }\n ? AttachmentError<`Plain Convex functions cannot have middleware—their raw handlers are passed through untouched`>\n : [\n Extract<\n MiddlewareSpecs_,\n { readonly key: Key<WithoutOptions<MiddlewareSpec_>> }\n >,\n ] extends [never]\n ? RuntimeAndFunctionType_[\"functionType\"] extends FunctionTypes<MiddlewareSpec_>\n ? unknown\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" does not declare function type \"${RuntimeAndFunctionType_[\"functionType\"]}\"`>\n : AttachmentError<`Middleware \"${Key<MiddlewareSpec_>}\" is already attached to this function`>;\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,SAAS;AAGtB,MAAa,oBAAoB,MAC/B,UAAU,YAAY,GAAG,MAAM;AAEjC,MAAa,mBAAgD;CAC3D;CACA;CACA;AACF;;;;;;;;;;;;;;;;;;;;;;AAiKA,MAAa,wBAQT,KACA,YAcG;CACH,MAAM,EAAE,OAAO,UAAU,WAAW,QAAQ;CAC5C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAC1B,MAAM,IAAI,MACR,eAAe,IAAI,0CACrB;CAGF,SAAS,sBAAsB,CAAC;CAChC,MAAM,SAAS;CACf,OAAO,UAAU;CACjB,OAAO,MAAM;CACb,OAAO,gBAAgB;EACrB;EACA;EACA;CACF;CACA,IAAI,QAAQ,UAAU,KAAA,GACpB,eAAoB,QAAQ,SAAS,QAAQ,KAAK;CAEpD,IAAI,QAAQ,YAAY,KAAA,GACtB,eAAoB,QAAQ,WAAW,QAAQ,OAAO;CAExD,OAAO;AACT;AAkBF,MAAa,gBACX,oBAEA,gBAAgB,SAAS,mBACvB,WAAW,kBAAkB,eAAe,UAAU,KAAA,IAClD,CAAC,eAAe,KAAK,IACrB,CAAC,CACP"}
package/dist/Ref.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import type * as MiddlewareAttachment from "./MiddlewareAttachment";
1
+ import type * as MiddlewareAttachment from "./MiddlewareAttachment.js";
2
2
  import type { DefaultFunctionArgs, FunctionReference as ConvexFunctionReference, FunctionVisibility, PaginationOptions, PaginationResult } from "convex/server";
3
3
  import type { Value } from "convex/values";
4
4
  import { ConvexError } from "convex/values";
5
5
  import * as Effect from "effect/Effect";
6
6
  import * as Option from "effect/Option";
7
7
  import * as Schema from "effect/Schema";
8
- import type * as FunctionProvenance from "./FunctionProvenance";
9
- import type * as FunctionSpec from "./FunctionSpec";
10
- import * as MiddlewareSpec from "./MiddlewareSpec";
11
- import type * as RuntimeAndFunctionType from "./RuntimeAndFunctionType";
8
+ import type * as FunctionProvenance from "./FunctionProvenance.js";
9
+ import type * as FunctionSpec from "./FunctionSpec.js";
10
+ import * as MiddlewareSpec from "./MiddlewareSpec.js";
11
+ import type * as RuntimeAndFunctionType from "./RuntimeAndFunctionType.js";
12
12
  export declare const TypeId = "~@confect/core/Ref";
13
13
  export type TypeId = typeof TypeId;
14
14
  export interface Base<RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType, FunctionVisibility_ extends FunctionVisibility, Args_ extends DefaultFunctionArgs, Returns_, Error_ = never> {
package/dist/Ref.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../src/Ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../src/Ref.ts"],"names":[],"mappings":"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"}
package/dist/Ref.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.js","names":["MiddlewareSpec.errorSchemas"],"sources":["../src/Ref.ts"],"sourcesContent":["import type * as MiddlewareAttachment from \"./MiddlewareAttachment\";\nimport type {\n DefaultFunctionArgs,\n FunctionReference as ConvexFunctionReference,\n FunctionVisibility,\n PaginationOptions,\n PaginationResult,\n} from \"convex/server\";\nimport { getFunctionAddress, makeFunctionReference } from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { ConvexError } from \"convex/values\";\nimport * as Effect from \"effect/Effect\";\nimport * as Match from \"effect/Match\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport type * as FunctionProvenance from \"./FunctionProvenance\";\nimport type * as FunctionSpec from \"./FunctionSpec\";\nimport * as Lazy from \"./Lazy\";\nimport * as MiddlewareSpec from \"./MiddlewareSpec\";\nimport type * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType\";\n\nexport const TypeId = \"~@confect/core/Ref\";\nexport type TypeId = typeof TypeId;\n\nexport interface Base<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_ = never,\n> {\n readonly [TypeId]: TypeId;\n readonly \"~RuntimeAndFunctionType\": RuntimeAndFunctionType_;\n readonly \"~FunctionVisibility\": FunctionVisibility_;\n readonly \"~Args\": Args_;\n // Concrete call inputs must not narrow across assignments. Erased refs and\n // pagination constraints use index signatures and keep their broad variance.\n readonly \"~ArgsVariance\"?: string extends keyof Args_\n ? unknown\n : (args: Args_) => void;\n readonly \"~Returns\": Returns_;\n readonly \"~Error\": Error_;\n readonly convexFunctionName: string;\n /**\n * Preserved for component references and function handles, which have no\n * local name.\n */\n readonly functionReference?: ConvexFunctionReference<any, any>;\n}\n\n/**\n * A reference to a single Convex function, as callers see it: the wire name\n * plus the data needed to encode args, decode returns, and decode typed errors.\n * A ref is one of two shapes, keyed by the spec's provenance.\n */\nexport type Ref<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_ = never,\n> =\n | ConfectRefWithTypes<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n FunctionProvenance.ArgsFields,\n Args_,\n Returns_,\n Error_\n >\n | ConvexRef<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n >;\n\nexport type ConfectRef<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n ReturnsSchema_ extends Schema.Codec<any, any>,\n ErrorSchema_ extends Schema.Codec<any, any> = never,\n MiddlewareError_ = never,\n MiddlewareEncodedError_ = never,\n> = ConfectRefWithTypes<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n ArgsFields_,\n Schema.Struct.Type<ArgsFields_>,\n ReturnsSchema_[\"Type\"],\n ErrorSchema_[\"Type\"] | MiddlewareError_,\n ReturnsSchema_,\n ErrorSchema_,\n ErrorSchema_[\"Encoded\"] | MiddlewareEncodedError_\n>;\n\n/**\n * Internal form used while mapping a spec to a ref. Supplying the already\n * derived value types avoids repeatedly expanding `Schema.Struct` for every\n * leaf in a generated ref tree; the public `ConfectRef` alias still derives the\n * same values from its fields and schemas.\n *\n * The codecs keep their own types so that a ref's wire encoding stays visible\n * to type-level checks, and `~EncodedError` carries the wire form of every\n * error the function can fail with, middleware included. A ref built from value\n * types alone (`Ref`) has no codecs to keep and erases them.\n */\ninterface ConfectRefWithTypes<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_,\n ReturnsSchema_ extends Schema.Codec<any, any> = Schema.Codec<any, any>,\n ErrorSchema_ extends Schema.Codec<any, any> = Schema.Codec<any, any>,\n EncodedError_ = any,\n> extends Base<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n> {\n readonly _tag: \"Confect\";\n readonly args: FunctionProvenance.ArgsSchema<ArgsFields_>;\n readonly returns: ReturnsSchema_;\n readonly kind: FunctionProvenance.ConfectKind;\n readonly middlewareSpecs: ReadonlyArray<MiddlewareSpec.AnyMiddlewareSpec>;\n readonly middlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>;\n readonly error?: ErrorSchema_;\n readonly \"~EncodedError\": EncodedError_;\n}\n\nexport interface ConvexRef<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_ = never,\n> extends Base<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n> {\n readonly _tag: \"Convex\";\n}\n\n/**\n * A ref's call contract without a visibility requirement. Use this for handlers\n * shared by a component's public ref and its host's internal binding. Args,\n * returns, errors, runtime and function kind remain constrained.\n */\nexport type Callable<Ref_ extends Any> = Ref<\n GetRuntimeAndFunctionType<Ref_>,\n FunctionVisibility,\n Args<Ref_>,\n Returns<Ref_>,\n Error<Ref_>\n>;\n\nexport type Any = Ref<any, any, any, any, any>;\n\n/**\n * Recognizes references by their runtime type identity.\n */\nexport const isRef = (value: unknown): value is Any =>\n Predicate.hasProperty(value, TypeId);\n\n/**\n * Erased Confect-provenance ref used by provenance-specific APIs.\n */\nexport type AnyConfect = Extract<Any, { readonly _tag: \"Confect\" }>;\n\nexport type AnyInternal = Ref<any, \"internal\", any, any, any>;\n\nexport type AnyPublic = Ref<any, \"public\", any, any, any>;\n\nexport type AnyQuery = Ref<\n RuntimeAndFunctionType.AnyQuery,\n FunctionVisibility,\n any,\n any,\n any\n>;\n\nexport type AnyPaginatedQuery = AnyQuery &\n Base<\n RuntimeAndFunctionType.AnyQuery,\n FunctionVisibility,\n {\n [key: string]: any;\n paginationOpts: PaginationOptions;\n },\n PaginationResult<any>,\n any\n >;\n\nexport type AnyMutation = Ref<\n RuntimeAndFunctionType.AnyMutation,\n FunctionVisibility,\n any,\n any,\n any\n>;\n\nexport type AnyAction = Ref<\n RuntimeAndFunctionType.AnyAction,\n FunctionVisibility,\n any,\n any,\n any\n>;\n\nexport type AnyPublicQuery = Ref<\n RuntimeAndFunctionType.AnyQuery,\n \"public\",\n any,\n any,\n any\n>;\n\nexport type AnyConfectPublicQuery = Extract<AnyPublicQuery, AnyConfect>;\n\nexport type AnyPublicPaginatedQuery = AnyPublicQuery & AnyPaginatedQuery;\n\nexport type AnyConfectPublicPaginatedQuery = AnyConfectPublicQuery &\n AnyPublicPaginatedQuery;\n\nexport type AnyPublicMutation = Ref<\n RuntimeAndFunctionType.AnyMutation,\n \"public\",\n any,\n any,\n any\n>;\n\nexport type AnyConfectPublicMutation = Extract<AnyPublicMutation, AnyConfect>;\n\nexport type AnyPublicAction = Ref<\n RuntimeAndFunctionType.AnyAction,\n \"public\",\n any,\n any,\n any\n>;\n\nexport type AnyConfectPublicAction = Extract<AnyPublicAction, AnyConfect>;\n\nexport type GetRuntimeAndFunctionType<Ref_> = Ref_ extends {\n readonly \"~RuntimeAndFunctionType\": infer RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType;\n}\n ? RuntimeAndFunctionType_\n : never;\n\nexport type GetRuntime<Ref_> = RuntimeAndFunctionType.GetRuntime<\n GetRuntimeAndFunctionType<Ref_>\n>;\n\nexport type GetFunctionType<Ref_> = RuntimeAndFunctionType.GetFunctionType<\n GetRuntimeAndFunctionType<Ref_>\n>;\n\nexport type GetFunctionVisibility<Ref_> = Ref_ extends {\n readonly \"~FunctionVisibility\": infer FunctionVisibility_;\n}\n ? FunctionVisibility_\n : never;\n\nexport type Args<Ref_> = Ref_ extends { readonly \"~Args\": infer Args_ }\n ? Args_\n : never;\n\n/**\n * The field map captured by a Confect-provenance ref.\n */\nexport type ArgsFields<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly args: {\n readonly fields: infer ArgsFields_ extends FunctionProvenance.ArgsFields;\n };\n}\n ? ArgsFields_\n : never;\n\n/**\n * The assembled args schema carried by a Confect-provenance ref.\n */\nexport type ArgsSchema<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly args: infer ArgsSchema_ extends FunctionProvenance.AnyArgsSchema;\n}\n ? ArgsSchema_\n : never;\n\nexport type OptionalArgs<Ref_ extends Any> = keyof Args<Ref_> extends never\n ? [args?: Args<Ref_>]\n : [args: Args<Ref_>];\n\nexport type Returns<Ref_> = Ref_ extends { readonly \"~Returns\": infer Returns_ }\n ? Returns_\n : never;\n\n/**\n * The returns codec carried by a Confect-provenance ref.\n */\nexport type ReturnsSchema<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly returns: infer ReturnsSchema_ extends Schema.Codec<any, any>;\n}\n ? ReturnsSchema_\n : never;\n\n/**\n * The wire form of every error a ref can fail with: its function's declared\n * error and its middleware's errors.\n */\nexport type EncodedError<Ref_> = Ref_ extends {\n readonly \"~EncodedError\": infer EncodedError_;\n}\n ? EncodedError_\n : never;\n\n/**\n * The function's own error codec carried by a Confect-provenance ref; errors\n * contributed by middleware are not part of it.\n */\nexport type ErrorSchema<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly error?: infer ErrorSchema_;\n}\n ? Extract<ErrorSchema_, Schema.Codec<any, any>>\n : never;\n\nexport type Error<Ref_> = Ref_ extends { readonly \"~Error\": infer Error_ }\n ? Error_\n : never;\n\nexport type FunctionReference<Ref_ extends Any> = ConvexFunctionReference<\n GetFunctionType<Ref_>,\n GetFunctionVisibility<Ref_>\n>;\n\n/**\n * The ref type of a function spec. Errors from middleware attached to the\n * function are included; pass the errors of middleware attached to its groups\n * as `MiddlewareError` and `MiddlewareEncodedError`.\n */\nexport type FromFunctionSpec<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareError = never,\n MiddlewareEncodedError = never,\n> = FromFunctionSpecHelper<\n FunctionSpec_,\n FunctionSpec.GetRuntimeAndFunctionType<FunctionSpec_>,\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n FunctionSpec.ArgsFields<FunctionSpec_>,\n FunctionSpec.Args<FunctionSpec_>,\n FunctionSpec.Returns<FunctionSpec_>,\n | FunctionSpec.Error<FunctionSpec_>\n | MiddlewareSpec.Error<FunctionSpec.MiddlewareSpecs<FunctionSpec_>>\n | MiddlewareError,\n FunctionSpec.ReturnsSchema<FunctionSpec_>,\n FunctionSpec.ErrorSchema<FunctionSpec_>,\n | FunctionSpec.EncodedError<FunctionSpec_>\n | MiddlewareSpec.EncodedError<FunctionSpec.MiddlewareSpecs<FunctionSpec_>>\n | MiddlewareEncodedError\n>;\n\ntype FromFunctionSpecHelper<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_,\n ReturnsSchema_ extends Schema.Codec<any, any>,\n ErrorSchema_ extends Schema.Codec<any, any>,\n EncodedError_,\n> =\n FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConvex\n >\n ? ConvexRef<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_ extends DefaultFunctionArgs ? Args_ : never,\n Returns_,\n never\n >\n : FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConfect\n >\n ? ConfectRefWithTypes<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n ArgsFields_,\n Args_,\n Returns_,\n Error_,\n ReturnsSchema_,\n ErrorSchema_,\n EncodedError_\n >\n : Ref<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n >;\n\nexport const make = <\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n GroupMiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n>(\n /**\n * The namespace portion of a Convex function name, i.e. the part before the\n * colon. For example, for `myGroupDir/myGroupMod:myFunc` this would be\n * `myGroupDir/myGroupMod`.\n */\n convexFunctionNamespace: string,\n functionSpec: FunctionSpec_,\n groupMiddlewareAttachments: ReadonlyArray<\n MiddlewareAttachment.MiddlewareAttachment<GroupMiddlewareSpec_>\n > = [],\n): FromFunctionSpec<\n FunctionSpec_,\n MiddlewareSpec.Error<GroupMiddlewareSpec_>,\n MiddlewareSpec.EncodedError<GroupMiddlewareSpec_>\n> => {\n const convexFunctionName = `${convexFunctionNamespace}:${functionSpec.name}`;\n\n return Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\n \"Convex\",\n (): Any =>\n ({\n [TypeId]: TypeId,\n _tag: \"Convex\",\n convexFunctionName,\n }) as Any,\n ),\n Match.tag(\"Confect\", (provenance): Any =>\n fromProvenance(convexFunctionName, provenance, [\n ...groupMiddlewareAttachments,\n ...functionSpec.middlewareAttachments,\n ]),\n ),\n Match.exhaustive,\n ) as FromFunctionSpec<\n FunctionSpec_,\n MiddlewareSpec.Error<GroupMiddlewareSpec_>,\n MiddlewareSpec.EncodedError<GroupMiddlewareSpec_>\n >;\n};\n\n/**\n * Build a Confect ref that runs with `provenance`'s codecs. Pass\n * `functionReference` when the function has no local name: an installed\n * component's function or a function handle. The ref reads `args`, `returns`\n * and `error` from the provenance on first use, so building it forces no\n * schema.\n */\nexport const fromProvenance = (\n convexFunctionName: string,\n provenance: FunctionProvenance.AnyConfect,\n middlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>,\n functionReference?: ConvexFunctionReference<any, any>,\n): AnyConfect => {\n const ref = {\n [TypeId]: TypeId as TypeId,\n _tag: \"Confect\" as const,\n convexFunctionName,\n ...(functionReference === undefined ? {} : { functionReference }),\n kind: provenance.kind,\n middlewareAttachments,\n get middlewareSpecs() {\n return middlewareAttachments.map(({ spec }) => spec);\n },\n };\n\n Lazy.defineProperty(ref, \"args\", () => provenance.args);\n Lazy.defineProperty(ref, \"returns\", () => provenance.returns);\n if (\"error\" in provenance) {\n Lazy.defineProperty(ref, \"error\", () => provenance.error);\n }\n\n return ref as unknown as AnyConfect;\n};\n\nexport const getConvexFunctionName = (ref: Any): string =>\n ref.convexFunctionName;\n\nconst functionReferenceCache = new Map<string, FunctionReference<Any>>();\n\nexport const getFunctionReference = <Ref_ extends Any>(\n ref: Ref_,\n): FunctionReference<Ref_> => {\n if (ref.functionReference !== undefined) {\n return ref.functionReference as FunctionReference<Ref_>;\n }\n const convexFunctionName = getConvexFunctionName(ref);\n\n const cached = functionReferenceCache.get(convexFunctionName);\n if (cached !== undefined) {\n return cached as FunctionReference<Ref_>;\n }\n\n const functionReference = makeFunctionReference(convexFunctionName);\n functionReferenceCache.set(convexFunctionName, functionReference);\n\n return functionReference as FunctionReference<Ref_>;\n};\n\n/**\n * Adapt a native reference without assigning Confect codecs or typed errors.\n */\nexport const fromFunctionReference = <\n Type extends \"query\" | \"mutation\" | \"action\",\n Visibility extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n>(\n functionReference: ConvexFunctionReference<Type, Visibility, Args_, Returns_>,\n): ConvexRef<\n Extract<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n { readonly runtime: \"Convex\"; readonly functionType: Type }\n >,\n Visibility,\n Args_,\n Returns_\n> => {\n const address = getFunctionAddress(functionReference);\n return {\n [TypeId]: TypeId,\n _tag: \"Convex\",\n convexFunctionName:\n address.name ??\n address.reference ??\n address.functionHandle ??\n \"<external function>\",\n functionReference,\n } as ConvexRef<\n Extract<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n { readonly runtime: \"Convex\"; readonly functionType: Type }\n >,\n Visibility,\n Args_,\n Returns_\n >;\n};\n\nexport const hasErrorSchema = (ref: Any): boolean =>\n Match.value(ref).pipe(\n Match.tag(\n \"Confect\",\n (confectRef) =>\n \"error\" in confectRef ||\n confectRef.middlewareSpecs.some(\n (middlewareSpec) => \"error\" in middlewareSpec,\n ),\n ),\n Match.tag(\"Convex\", () => false),\n Match.exhaustive,\n );\n\nexport const encodeArgs = <Ref_ extends Any>(\n ref: Ref_,\n args: Args<Ref_>,\n): Effect.Effect<unknown, Schema.SchemaError> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeEffect(confectRef.args)(args),\n ),\n Match.tag(\"Convex\", () => Effect.succeed(args)),\n Match.exhaustive,\n );\n\nexport const decodeReturns = <Ref_ extends Any>(\n ref: Ref_,\n returns: unknown,\n): Effect.Effect<Returns<Ref_>, Schema.SchemaError> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownEffect(confectRef.returns)(returns),\n ),\n Match.tag(\"Convex\", () => Effect.succeed(returns as Returns<Ref_>)),\n Match.exhaustive,\n );\n\nexport const encodeArgsSync = <Ref_ extends Any>(\n ref: Ref_,\n args: Args<Ref_>,\n): unknown =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeSync(confectRef.args)(args),\n ),\n Match.tag(\"Convex\", () => args),\n Match.exhaustive,\n );\n\nexport const decodeArgsSync = <Ref_ extends Any>(\n ref: Ref_,\n encodedArgs: unknown,\n): Args<Ref_> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownSync(confectRef.args)(encodedArgs),\n ),\n Match.tag(\"Convex\", () => encodedArgs),\n Match.exhaustive,\n ) as Args<Ref_>;\n\nexport const encodeReturnsSync = <Ref_ extends Any>(\n ref: Ref_,\n returns: Returns<Ref_>,\n): unknown =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeSync(confectRef.returns)(returns),\n ),\n Match.tag(\"Convex\", () => returns),\n Match.exhaustive,\n );\n\nexport const decodeReturnsSync = <Ref_ extends Any>(\n ref: Ref_,\n encodedReturns: unknown,\n): Returns<Ref_> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownSync(confectRef.returns)(encodedReturns),\n ),\n Match.tag(\"Convex\", () => encodedReturns),\n Match.exhaustive,\n ) as Returns<Ref_>;\n\nconst ConvexErrorIdentifier = Symbol.for(\"ConvexError\");\n\nexport const isConvexError = (error: unknown): error is ConvexError<Value> =>\n error instanceof ConvexError ||\n (typeof error === \"object\" &&\n error !== null &&\n ConvexErrorIdentifier in error);\n\n/**\n * Build a callback-style handler that decodes the ref's typed error from a\n * caught `ConvexError`, or else forwards the value to `mapUnknownError`. The\n * fallback is also invoked when the input _is_ a `ConvexError` but the ref\n * doesn't declare a typed-error schema—by definition such a value falls outside\n * the ref's error contract. Useful when adapting non-Effect APIs (e.g. emitter\n * callbacks for streamed subscriptions) to the same error semantics that\n * `runWithCodec` provides.\n */\nexport const decodeErrorOrElse =\n <Ref_ extends Any, E>(ref: Ref_, mapUnknownError: (error: unknown) => E) =>\n (error: unknown): Error<Ref_> | E => {\n if (isConvexError(error)) {\n const decoded = decodeErrorOption(ref, error.data);\n if (Option.isSome(decoded)) {\n return decoded.value;\n }\n }\n return mapUnknownError(error);\n };\n\nconst errorSchemaOf = (ref: Any): Option.Option<Schema.Codec<any, any>> =>\n Match.value(ref).pipe(\n Match.tag(\"Confect\", (confectRef) => {\n const schemas = [\n ...(\"error\" in confectRef && confectRef.error !== undefined\n ? [confectRef.error]\n : []),\n ...MiddlewareSpec.errorSchemas(confectRef.middlewareSpecs),\n ];\n return schemas.length === 0\n ? Option.none<Schema.Codec<any, any>>()\n : Option.some(\n schemas.length === 1 ? schemas[0]! : Schema.Union(schemas),\n );\n }),\n Match.tag(\"Convex\", () => Option.none<Schema.Codec<any, any>>()),\n Match.exhaustive,\n );\n\n/**\n * Decode `encodedError` against the ref's error schema—the function's declared\n * `error` schema unioned with its covering middlewares' error schemas. Returns\n * `None` if the ref declares no typed error at all (Confect ref without an\n * `error` schema and without failing middleware, or a Convex-provenance ref)—by\n * definition there's nothing to decode the value into, and the caller is\n * responsible for deciding what to do (typically: surface the original value as\n * a defect).\n */\nexport const decodeError = <Ref_ extends Any>(\n ref: Ref_,\n encodedError: unknown,\n): Effect.Effect<Option.Option<Error<Ref_>>, Schema.SchemaError> =>\n Option.match(errorSchemaOf(ref), {\n onNone: () => Effect.succeed(Option.none<Error<Ref_>>()),\n onSome: (schema) =>\n Effect.asSome(\n Schema.decodeUnknownEffect(schema)(encodedError),\n ) as Effect.Effect<Option.Option<Error<Ref_>>, Schema.SchemaError>,\n });\n\n/**\n * Synchronous counterpart to `decodeError`. Returns `None` when the value is\n * not this ref's typed error—either because the ref declares no `error` schema,\n * or because `encodedError` doesn't match the one it declares.\n *\n * The second case is reachable in normal operation: Convex raises its own\n * `ConvexError`s (an `InvalidCursor` pagination error, for instance), and those\n * never match a user-declared error schema. Callers pair this with a fallback\n * that surfaces the original error, so failing to decode must not throw—a\n * `ParseError` here would replace the real error with an opaque one and lose\n * the only useful diagnostic. Hence the `Option` suffix rather than `Sync`,\n * matching `Schema.decodeUnknownOption`: the sibling `*Sync` helpers in this\n * module all throw on a parse failure, and this one deliberately doesn't.\n */\nexport const decodeErrorOption = <Ref_ extends Any>(\n ref: Ref_,\n encodedError: unknown,\n): Option.Option<Error<Ref_>> =>\n Option.flatMap(\n errorSchemaOf(ref),\n (schema) =>\n Schema.decodeUnknownOption(schema)(encodedError) as Option.Option<\n Error<Ref_>\n >,\n );\n\nconst missingPaginatedProvenanceError = (ref: Any) =>\n new globalThis.Error(\n `Paginated query ref \"${getConvexFunctionName(ref)}\" was not built with ` +\n \"`FunctionSpec.publicPaginatedQuery` (or `FunctionSpec.internalPaginatedQuery`). \" +\n \"Paginated encoding and decoding require the user-args and item schemas \" +\n \"those constructors store. Define the function as, e.g.:\\n\\n\" +\n \" FunctionSpec.publicPaginatedQuery({\\n\" +\n ' name: \"...\",\\n' +\n \" args: () => ({ ... }), // optional; without paginationOpts\\n\" +\n \" item: () => ItemSchema,\\n\" +\n \" })\",\n );\n\nconst paginatedKind = (ref: AnyConfect): FunctionProvenance.Paginated =>\n Match.value(ref.kind).pipe(\n Match.tag(\"Paginated\", (kind) => kind),\n Match.tag(\"Standard\", () => {\n throw missingPaginatedProvenanceError(ref);\n }),\n Match.exhaustive,\n );\n\n/**\n * Encode the args of a paginated query ref via its user-args\n * schema—`paginationOpts` is excluded, since the pagination protocol fields are\n * managed by the client (e.g. `usePaginatedQuery` from `convex/react`), not by\n * the caller. Requires a ref built with `FunctionSpec.publicPaginatedQuery` (or\n * `internalPaginatedQuery`).\n */\nexport const encodePaginatedQueryArgsSync = <\n Ref_ extends AnyPublicPaginatedQuery,\n>(\n ref: Ref_,\n args: Omit<Args<Ref_>, \"paginationOpts\">,\n): unknown =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeUnknownSync(paginatedKind(confectRef).userArgs)(args),\n ),\n Match.tag(\"Convex\", () => args),\n Match.exhaustive,\n );\n\n/**\n * Decode a page of a paginated query's results via the ref's item schema.\n * Requires a ref built with `FunctionSpec.publicPaginatedQuery` (or\n * `internalPaginatedQuery`).\n */\nexport const decodePaginationPageSync = <Ref_ extends AnyPublicPaginatedQuery>(\n ref: Ref_,\n encodedPage: unknown,\n): Returns<Ref_>[\"page\"] =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownSync(paginatedKind(confectRef).page)(encodedPage),\n ),\n Match.tag(\"Convex\", () => encodedPage),\n Match.exhaustive,\n ) as Returns<Ref_>[\"page\"];\n\n/**\n * Encode args via the ref's args schema, invoke `call`, decode returns via the\n * ref's returns schema, and translate any thrown `ConvexError` into the ref's\n * typed error. Anything else the Promise rejects with—network failures,\n * server-side runtime errors, validation failures, etc.—is passed to\n * `mapUnknownError` to be turned into a typed `E`, or surfaced as a defect when\n * no handler is provided.\n */\nexport const runWithCodec = Effect.fnUntraced(function* <\n Ref_ extends Any,\n E = never,\n>(\n ref: Ref_,\n args: Args<Ref_>,\n call: (\n functionReference: FunctionReference<Ref_>,\n encodedArgs: unknown,\n ) => PromiseLike<unknown>,\n mapUnknownError?: (error: unknown) => E,\n): Effect.fn.Return<Returns<Ref_>, E | Error<Ref_> | Schema.SchemaError> {\n const functionReference = getFunctionReference(ref);\n const invoke = (\n encodedArgs: unknown,\n ): Effect.Effect<unknown, Error<Ref_> | E> =>\n Effect.tryPromise({\n try: () => Promise.resolve(call(functionReference, encodedArgs)),\n catch: (error): Error<Ref_> | E => {\n if (isConvexError(error)) {\n const decoded = decodeErrorOption(ref, error.data);\n if (Option.isSome(decoded)) {\n return decoded.value;\n }\n }\n if (mapUnknownError !== undefined) {\n return mapUnknownError(error);\n }\n throw error;\n },\n });\n\n const encodedArgs = yield* encodeArgs(ref, args);\n const encodedReturns = yield* invoke(encodedArgs);\n return yield* decodeReturns(ref, encodedReturns);\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Ref.js","names":["MiddlewareSpec.errorSchemas"],"sources":["../src/Ref.ts"],"sourcesContent":["import type * as MiddlewareAttachment from \"./MiddlewareAttachment.js\";\nimport type {\n DefaultFunctionArgs,\n FunctionReference as ConvexFunctionReference,\n FunctionVisibility,\n PaginationOptions,\n PaginationResult,\n} from \"convex/server\";\nimport { getFunctionAddress, makeFunctionReference } from \"convex/server\";\nimport type { Value } from \"convex/values\";\nimport { ConvexError } from \"convex/values\";\nimport * as Effect from \"effect/Effect\";\nimport * as Match from \"effect/Match\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport type * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport type * as FunctionSpec from \"./FunctionSpec.js\";\nimport * as Lazy from \"./Lazy.js\";\nimport * as MiddlewareSpec from \"./MiddlewareSpec.js\";\nimport type * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType.js\";\n\nexport const TypeId = \"~@confect/core/Ref\";\nexport type TypeId = typeof TypeId;\n\nexport interface Base<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_ = never,\n> {\n readonly [TypeId]: TypeId;\n readonly \"~RuntimeAndFunctionType\": RuntimeAndFunctionType_;\n readonly \"~FunctionVisibility\": FunctionVisibility_;\n readonly \"~Args\": Args_;\n // Concrete call inputs must not narrow across assignments. Erased refs and\n // pagination constraints use index signatures and keep their broad variance.\n readonly \"~ArgsVariance\"?: string extends keyof Args_\n ? unknown\n : (args: Args_) => void;\n readonly \"~Returns\": Returns_;\n readonly \"~Error\": Error_;\n readonly convexFunctionName: string;\n /**\n * Preserved for component references and function handles, which have no\n * local name.\n */\n readonly functionReference?: ConvexFunctionReference<any, any>;\n}\n\n/**\n * A reference to a single Convex function, as callers see it: the wire name\n * plus the data needed to encode args, decode returns, and decode typed errors.\n * A ref is one of two shapes, keyed by the spec's provenance.\n */\nexport type Ref<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_ = never,\n> =\n | ConfectRefWithTypes<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n FunctionProvenance.ArgsFields,\n Args_,\n Returns_,\n Error_\n >\n | ConvexRef<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n >;\n\nexport type ConfectRef<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n ReturnsSchema_ extends Schema.Codec<any, any>,\n ErrorSchema_ extends Schema.Codec<any, any> = never,\n MiddlewareError_ = never,\n MiddlewareEncodedError_ = never,\n> = ConfectRefWithTypes<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n ArgsFields_,\n Schema.Struct.Type<ArgsFields_>,\n ReturnsSchema_[\"Type\"],\n ErrorSchema_[\"Type\"] | MiddlewareError_,\n ReturnsSchema_,\n ErrorSchema_,\n ErrorSchema_[\"Encoded\"] | MiddlewareEncodedError_\n>;\n\n/**\n * Internal form used while mapping a spec to a ref. Supplying the already\n * derived value types avoids repeatedly expanding `Schema.Struct` for every\n * leaf in a generated ref tree; the public `ConfectRef` alias still derives the\n * same values from its fields and schemas.\n *\n * The codecs keep their own types so that a ref's wire encoding stays visible\n * to type-level checks, and `~EncodedError` carries the wire form of every\n * error the function can fail with, middleware included. A ref built from value\n * types alone (`Ref`) has no codecs to keep and erases them.\n */\ninterface ConfectRefWithTypes<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_,\n ReturnsSchema_ extends Schema.Codec<any, any> = Schema.Codec<any, any>,\n ErrorSchema_ extends Schema.Codec<any, any> = Schema.Codec<any, any>,\n EncodedError_ = any,\n> extends Base<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n> {\n readonly _tag: \"Confect\";\n readonly args: FunctionProvenance.ArgsSchema<ArgsFields_>;\n readonly returns: ReturnsSchema_;\n readonly kind: FunctionProvenance.ConfectKind;\n readonly middlewareSpecs: ReadonlyArray<MiddlewareSpec.AnyMiddlewareSpec>;\n readonly middlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>;\n readonly error?: ErrorSchema_;\n readonly \"~EncodedError\": EncodedError_;\n}\n\nexport interface ConvexRef<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_ = never,\n> extends Base<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n> {\n readonly _tag: \"Convex\";\n}\n\n/**\n * A ref's call contract without a visibility requirement. Use this for handlers\n * shared by a component's public ref and its host's internal binding. Args,\n * returns, errors, runtime and function kind remain constrained.\n */\nexport type Callable<Ref_ extends Any> = Ref<\n GetRuntimeAndFunctionType<Ref_>,\n FunctionVisibility,\n Args<Ref_>,\n Returns<Ref_>,\n Error<Ref_>\n>;\n\nexport type Any = Ref<any, any, any, any, any>;\n\n/**\n * Recognizes references by their runtime type identity.\n */\nexport const isRef = (value: unknown): value is Any =>\n Predicate.hasProperty(value, TypeId);\n\n/**\n * Erased Confect-provenance ref used by provenance-specific APIs.\n */\nexport type AnyConfect = Extract<Any, { readonly _tag: \"Confect\" }>;\n\nexport type AnyInternal = Ref<any, \"internal\", any, any, any>;\n\nexport type AnyPublic = Ref<any, \"public\", any, any, any>;\n\nexport type AnyQuery = Ref<\n RuntimeAndFunctionType.AnyQuery,\n FunctionVisibility,\n any,\n any,\n any\n>;\n\nexport type AnyPaginatedQuery = AnyQuery &\n Base<\n RuntimeAndFunctionType.AnyQuery,\n FunctionVisibility,\n {\n [key: string]: any;\n paginationOpts: PaginationOptions;\n },\n PaginationResult<any>,\n any\n >;\n\nexport type AnyMutation = Ref<\n RuntimeAndFunctionType.AnyMutation,\n FunctionVisibility,\n any,\n any,\n any\n>;\n\nexport type AnyAction = Ref<\n RuntimeAndFunctionType.AnyAction,\n FunctionVisibility,\n any,\n any,\n any\n>;\n\nexport type AnyPublicQuery = Ref<\n RuntimeAndFunctionType.AnyQuery,\n \"public\",\n any,\n any,\n any\n>;\n\nexport type AnyConfectPublicQuery = Extract<AnyPublicQuery, AnyConfect>;\n\nexport type AnyPublicPaginatedQuery = AnyPublicQuery & AnyPaginatedQuery;\n\nexport type AnyConfectPublicPaginatedQuery = AnyConfectPublicQuery &\n AnyPublicPaginatedQuery;\n\nexport type AnyPublicMutation = Ref<\n RuntimeAndFunctionType.AnyMutation,\n \"public\",\n any,\n any,\n any\n>;\n\nexport type AnyConfectPublicMutation = Extract<AnyPublicMutation, AnyConfect>;\n\nexport type AnyPublicAction = Ref<\n RuntimeAndFunctionType.AnyAction,\n \"public\",\n any,\n any,\n any\n>;\n\nexport type AnyConfectPublicAction = Extract<AnyPublicAction, AnyConfect>;\n\nexport type GetRuntimeAndFunctionType<Ref_> = Ref_ extends {\n readonly \"~RuntimeAndFunctionType\": infer RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType;\n}\n ? RuntimeAndFunctionType_\n : never;\n\nexport type GetRuntime<Ref_> = RuntimeAndFunctionType.GetRuntime<\n GetRuntimeAndFunctionType<Ref_>\n>;\n\nexport type GetFunctionType<Ref_> = RuntimeAndFunctionType.GetFunctionType<\n GetRuntimeAndFunctionType<Ref_>\n>;\n\nexport type GetFunctionVisibility<Ref_> = Ref_ extends {\n readonly \"~FunctionVisibility\": infer FunctionVisibility_;\n}\n ? FunctionVisibility_\n : never;\n\nexport type Args<Ref_> = Ref_ extends { readonly \"~Args\": infer Args_ }\n ? Args_\n : never;\n\n/**\n * The field map captured by a Confect-provenance ref.\n */\nexport type ArgsFields<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly args: {\n readonly fields: infer ArgsFields_ extends FunctionProvenance.ArgsFields;\n };\n}\n ? ArgsFields_\n : never;\n\n/**\n * The assembled args schema carried by a Confect-provenance ref.\n */\nexport type ArgsSchema<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly args: infer ArgsSchema_ extends FunctionProvenance.AnyArgsSchema;\n}\n ? ArgsSchema_\n : never;\n\nexport type OptionalArgs<Ref_ extends Any> = keyof Args<Ref_> extends never\n ? [args?: Args<Ref_>]\n : [args: Args<Ref_>];\n\nexport type Returns<Ref_> = Ref_ extends { readonly \"~Returns\": infer Returns_ }\n ? Returns_\n : never;\n\n/**\n * The returns codec carried by a Confect-provenance ref.\n */\nexport type ReturnsSchema<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly returns: infer ReturnsSchema_ extends Schema.Codec<any, any>;\n}\n ? ReturnsSchema_\n : never;\n\n/**\n * The wire form of every error a ref can fail with: its function's declared\n * error and its middleware's errors.\n */\nexport type EncodedError<Ref_> = Ref_ extends {\n readonly \"~EncodedError\": infer EncodedError_;\n}\n ? EncodedError_\n : never;\n\n/**\n * The function's own error codec carried by a Confect-provenance ref; errors\n * contributed by middleware are not part of it.\n */\nexport type ErrorSchema<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly error?: infer ErrorSchema_;\n}\n ? Extract<ErrorSchema_, Schema.Codec<any, any>>\n : never;\n\nexport type Error<Ref_> = Ref_ extends { readonly \"~Error\": infer Error_ }\n ? Error_\n : never;\n\nexport type FunctionReference<Ref_ extends Any> = ConvexFunctionReference<\n GetFunctionType<Ref_>,\n GetFunctionVisibility<Ref_>\n>;\n\n/**\n * The ref type of a function spec. Errors from middleware attached to the\n * function are included; pass the errors of middleware attached to its groups\n * as `MiddlewareError` and `MiddlewareEncodedError`.\n */\nexport type FromFunctionSpec<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n MiddlewareError = never,\n MiddlewareEncodedError = never,\n> = FromFunctionSpecHelper<\n FunctionSpec_,\n FunctionSpec.GetRuntimeAndFunctionType<FunctionSpec_>,\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n FunctionSpec.ArgsFields<FunctionSpec_>,\n FunctionSpec.Args<FunctionSpec_>,\n FunctionSpec.Returns<FunctionSpec_>,\n | FunctionSpec.Error<FunctionSpec_>\n | MiddlewareSpec.Error<FunctionSpec.MiddlewareSpecs<FunctionSpec_>>\n | MiddlewareError,\n FunctionSpec.ReturnsSchema<FunctionSpec_>,\n FunctionSpec.ErrorSchema<FunctionSpec_>,\n | FunctionSpec.EncodedError<FunctionSpec_>\n | MiddlewareSpec.EncodedError<FunctionSpec.MiddlewareSpecs<FunctionSpec_>>\n | MiddlewareEncodedError\n>;\n\ntype FromFunctionSpecHelper<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n Error_,\n ReturnsSchema_ extends Schema.Codec<any, any>,\n ErrorSchema_ extends Schema.Codec<any, any>,\n EncodedError_,\n> =\n FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConvex\n >\n ? ConvexRef<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_ extends DefaultFunctionArgs ? Args_ : never,\n Returns_,\n never\n >\n : FunctionSpec_ extends FunctionSpec.WithFunctionProvenance<\n FunctionSpec_,\n FunctionProvenance.AnyConfect\n >\n ? ConfectRefWithTypes<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n ArgsFields_,\n Args_,\n Returns_,\n Error_,\n ReturnsSchema_,\n ErrorSchema_,\n EncodedError_\n >\n : Ref<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Args_,\n Returns_,\n Error_\n >;\n\nexport const make = <\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n GroupMiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n>(\n /**\n * The namespace portion of a Convex function name, i.e. the part before the\n * colon. For example, for `myGroupDir/myGroupMod:myFunc` this would be\n * `myGroupDir/myGroupMod`.\n */\n convexFunctionNamespace: string,\n functionSpec: FunctionSpec_,\n groupMiddlewareAttachments: ReadonlyArray<\n MiddlewareAttachment.MiddlewareAttachment<GroupMiddlewareSpec_>\n > = [],\n): FromFunctionSpec<\n FunctionSpec_,\n MiddlewareSpec.Error<GroupMiddlewareSpec_>,\n MiddlewareSpec.EncodedError<GroupMiddlewareSpec_>\n> => {\n const convexFunctionName = `${convexFunctionNamespace}:${functionSpec.name}`;\n\n return Match.value(functionSpec.functionProvenance).pipe(\n Match.tag(\n \"Convex\",\n (): Any =>\n ({\n [TypeId]: TypeId,\n _tag: \"Convex\",\n convexFunctionName,\n }) as Any,\n ),\n Match.tag(\"Confect\", (provenance): Any =>\n fromProvenance(convexFunctionName, provenance, [\n ...groupMiddlewareAttachments,\n ...functionSpec.middlewareAttachments,\n ]),\n ),\n Match.exhaustive,\n ) as FromFunctionSpec<\n FunctionSpec_,\n MiddlewareSpec.Error<GroupMiddlewareSpec_>,\n MiddlewareSpec.EncodedError<GroupMiddlewareSpec_>\n >;\n};\n\n/**\n * Build a Confect ref that runs with `provenance`'s codecs. Pass\n * `functionReference` when the function has no local name: an installed\n * component's function or a function handle. The ref reads `args`, `returns`\n * and `error` from the provenance on first use, so building it forces no\n * schema.\n */\nexport const fromProvenance = (\n convexFunctionName: string,\n provenance: FunctionProvenance.AnyConfect,\n middlewareAttachments: ReadonlyArray<MiddlewareAttachment.MiddlewareAttachment>,\n functionReference?: ConvexFunctionReference<any, any>,\n): AnyConfect => {\n const ref = {\n [TypeId]: TypeId as TypeId,\n _tag: \"Confect\" as const,\n convexFunctionName,\n ...(functionReference === undefined ? {} : { functionReference }),\n kind: provenance.kind,\n middlewareAttachments,\n get middlewareSpecs() {\n return middlewareAttachments.map(({ spec }) => spec);\n },\n };\n\n Lazy.defineProperty(ref, \"args\", () => provenance.args);\n Lazy.defineProperty(ref, \"returns\", () => provenance.returns);\n if (\"error\" in provenance) {\n Lazy.defineProperty(ref, \"error\", () => provenance.error);\n }\n\n return ref as unknown as AnyConfect;\n};\n\nexport const getConvexFunctionName = (ref: Any): string =>\n ref.convexFunctionName;\n\nconst functionReferenceCache = new Map<string, FunctionReference<Any>>();\n\nexport const getFunctionReference = <Ref_ extends Any>(\n ref: Ref_,\n): FunctionReference<Ref_> => {\n if (ref.functionReference !== undefined) {\n return ref.functionReference as FunctionReference<Ref_>;\n }\n const convexFunctionName = getConvexFunctionName(ref);\n\n const cached = functionReferenceCache.get(convexFunctionName);\n if (cached !== undefined) {\n return cached as FunctionReference<Ref_>;\n }\n\n const functionReference = makeFunctionReference(convexFunctionName);\n functionReferenceCache.set(convexFunctionName, functionReference);\n\n return functionReference as FunctionReference<Ref_>;\n};\n\n/**\n * Adapt a native reference without assigning Confect codecs or typed errors.\n */\nexport const fromFunctionReference = <\n Type extends \"query\" | \"mutation\" | \"action\",\n Visibility extends FunctionVisibility,\n Args_ extends DefaultFunctionArgs,\n Returns_,\n>(\n functionReference: ConvexFunctionReference<Type, Visibility, Args_, Returns_>,\n): ConvexRef<\n Extract<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n { readonly runtime: \"Convex\"; readonly functionType: Type }\n >,\n Visibility,\n Args_,\n Returns_\n> => {\n const address = getFunctionAddress(functionReference);\n return {\n [TypeId]: TypeId,\n _tag: \"Convex\",\n convexFunctionName:\n address.name ??\n address.reference ??\n address.functionHandle ??\n \"<external function>\",\n functionReference,\n } as ConvexRef<\n Extract<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n { readonly runtime: \"Convex\"; readonly functionType: Type }\n >,\n Visibility,\n Args_,\n Returns_\n >;\n};\n\nexport const hasErrorSchema = (ref: Any): boolean =>\n Match.value(ref).pipe(\n Match.tag(\n \"Confect\",\n (confectRef) =>\n \"error\" in confectRef ||\n confectRef.middlewareSpecs.some(\n (middlewareSpec) => \"error\" in middlewareSpec,\n ),\n ),\n Match.tag(\"Convex\", () => false),\n Match.exhaustive,\n );\n\nexport const encodeArgs = <Ref_ extends Any>(\n ref: Ref_,\n args: Args<Ref_>,\n): Effect.Effect<unknown, Schema.SchemaError> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeEffect(confectRef.args)(args),\n ),\n Match.tag(\"Convex\", () => Effect.succeed(args)),\n Match.exhaustive,\n );\n\nexport const decodeReturns = <Ref_ extends Any>(\n ref: Ref_,\n returns: unknown,\n): Effect.Effect<Returns<Ref_>, Schema.SchemaError> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownEffect(confectRef.returns)(returns),\n ),\n Match.tag(\"Convex\", () => Effect.succeed(returns as Returns<Ref_>)),\n Match.exhaustive,\n );\n\nexport const encodeArgsSync = <Ref_ extends Any>(\n ref: Ref_,\n args: Args<Ref_>,\n): unknown =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeSync(confectRef.args)(args),\n ),\n Match.tag(\"Convex\", () => args),\n Match.exhaustive,\n );\n\nexport const decodeArgsSync = <Ref_ extends Any>(\n ref: Ref_,\n encodedArgs: unknown,\n): Args<Ref_> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownSync(confectRef.args)(encodedArgs),\n ),\n Match.tag(\"Convex\", () => encodedArgs),\n Match.exhaustive,\n ) as Args<Ref_>;\n\nexport const encodeReturnsSync = <Ref_ extends Any>(\n ref: Ref_,\n returns: Returns<Ref_>,\n): unknown =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeSync(confectRef.returns)(returns),\n ),\n Match.tag(\"Convex\", () => returns),\n Match.exhaustive,\n );\n\nexport const decodeReturnsSync = <Ref_ extends Any>(\n ref: Ref_,\n encodedReturns: unknown,\n): Returns<Ref_> =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownSync(confectRef.returns)(encodedReturns),\n ),\n Match.tag(\"Convex\", () => encodedReturns),\n Match.exhaustive,\n ) as Returns<Ref_>;\n\nconst ConvexErrorIdentifier = Symbol.for(\"ConvexError\");\n\nexport const isConvexError = (error: unknown): error is ConvexError<Value> =>\n error instanceof ConvexError ||\n (typeof error === \"object\" &&\n error !== null &&\n ConvexErrorIdentifier in error);\n\n/**\n * Build a callback-style handler that decodes the ref's typed error from a\n * caught `ConvexError`, or else forwards the value to `mapUnknownError`. The\n * fallback is also invoked when the input _is_ a `ConvexError` but the ref\n * doesn't declare a typed-error schema—by definition such a value falls outside\n * the ref's error contract. Useful when adapting non-Effect APIs (e.g. emitter\n * callbacks for streamed subscriptions) to the same error semantics that\n * `runWithCodec` provides.\n */\nexport const decodeErrorOrElse =\n <Ref_ extends Any, E>(ref: Ref_, mapUnknownError: (error: unknown) => E) =>\n (error: unknown): Error<Ref_> | E => {\n if (isConvexError(error)) {\n const decoded = decodeErrorOption(ref, error.data);\n if (Option.isSome(decoded)) {\n return decoded.value;\n }\n }\n return mapUnknownError(error);\n };\n\nconst errorSchemaOf = (ref: Any): Option.Option<Schema.Codec<any, any>> =>\n Match.value(ref).pipe(\n Match.tag(\"Confect\", (confectRef) => {\n const schemas = [\n ...(\"error\" in confectRef && confectRef.error !== undefined\n ? [confectRef.error]\n : []),\n ...MiddlewareSpec.errorSchemas(confectRef.middlewareSpecs),\n ];\n return schemas.length === 0\n ? Option.none<Schema.Codec<any, any>>()\n : Option.some(\n schemas.length === 1 ? schemas[0]! : Schema.Union(schemas),\n );\n }),\n Match.tag(\"Convex\", () => Option.none<Schema.Codec<any, any>>()),\n Match.exhaustive,\n );\n\n/**\n * Decode `encodedError` against the ref's error schema—the function's declared\n * `error` schema unioned with its covering middlewares' error schemas. Returns\n * `None` if the ref declares no typed error at all (Confect ref without an\n * `error` schema and without failing middleware, or a Convex-provenance ref)—by\n * definition there's nothing to decode the value into, and the caller is\n * responsible for deciding what to do (typically: surface the original value as\n * a defect).\n */\nexport const decodeError = <Ref_ extends Any>(\n ref: Ref_,\n encodedError: unknown,\n): Effect.Effect<Option.Option<Error<Ref_>>, Schema.SchemaError> =>\n Option.match(errorSchemaOf(ref), {\n onNone: () => Effect.succeed(Option.none<Error<Ref_>>()),\n onSome: (schema) =>\n Effect.asSome(\n Schema.decodeUnknownEffect(schema)(encodedError),\n ) as Effect.Effect<Option.Option<Error<Ref_>>, Schema.SchemaError>,\n });\n\n/**\n * Synchronous counterpart to `decodeError`. Returns `None` when the value is\n * not this ref's typed error—either because the ref declares no `error` schema,\n * or because `encodedError` doesn't match the one it declares.\n *\n * The second case is reachable in normal operation: Convex raises its own\n * `ConvexError`s (an `InvalidCursor` pagination error, for instance), and those\n * never match a user-declared error schema. Callers pair this with a fallback\n * that surfaces the original error, so failing to decode must not throw—a\n * `ParseError` here would replace the real error with an opaque one and lose\n * the only useful diagnostic. Hence the `Option` suffix rather than `Sync`,\n * matching `Schema.decodeUnknownOption`: the sibling `*Sync` helpers in this\n * module all throw on a parse failure, and this one deliberately doesn't.\n */\nexport const decodeErrorOption = <Ref_ extends Any>(\n ref: Ref_,\n encodedError: unknown,\n): Option.Option<Error<Ref_>> =>\n Option.flatMap(\n errorSchemaOf(ref),\n (schema) =>\n Schema.decodeUnknownOption(schema)(encodedError) as Option.Option<\n Error<Ref_>\n >,\n );\n\nconst missingPaginatedProvenanceError = (ref: Any) =>\n new globalThis.Error(\n `Paginated query ref \"${getConvexFunctionName(ref)}\" was not built with ` +\n \"`FunctionSpec.publicPaginatedQuery` (or `FunctionSpec.internalPaginatedQuery`). \" +\n \"Paginated encoding and decoding require the user-args and item schemas \" +\n \"those constructors store. Define the function as, e.g.:\\n\\n\" +\n \" FunctionSpec.publicPaginatedQuery({\\n\" +\n ' name: \"...\",\\n' +\n \" args: () => ({ ... }), // optional; without paginationOpts\\n\" +\n \" item: () => ItemSchema,\\n\" +\n \" })\",\n );\n\nconst paginatedKind = (ref: AnyConfect): FunctionProvenance.Paginated =>\n Match.value(ref.kind).pipe(\n Match.tag(\"Paginated\", (kind) => kind),\n Match.tag(\"Standard\", () => {\n throw missingPaginatedProvenanceError(ref);\n }),\n Match.exhaustive,\n );\n\n/**\n * Encode the args of a paginated query ref via its user-args\n * schema—`paginationOpts` is excluded, since the pagination protocol fields are\n * managed by the client (e.g. `usePaginatedQuery` from `convex/react`), not by\n * the caller. Requires a ref built with `FunctionSpec.publicPaginatedQuery` (or\n * `internalPaginatedQuery`).\n */\nexport const encodePaginatedQueryArgsSync = <\n Ref_ extends AnyPublicPaginatedQuery,\n>(\n ref: Ref_,\n args: Omit<Args<Ref_>, \"paginationOpts\">,\n): unknown =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.encodeUnknownSync(paginatedKind(confectRef).userArgs)(args),\n ),\n Match.tag(\"Convex\", () => args),\n Match.exhaustive,\n );\n\n/**\n * Decode a page of a paginated query's results via the ref's item schema.\n * Requires a ref built with `FunctionSpec.publicPaginatedQuery` (or\n * `internalPaginatedQuery`).\n */\nexport const decodePaginationPageSync = <Ref_ extends AnyPublicPaginatedQuery>(\n ref: Ref_,\n encodedPage: unknown,\n): Returns<Ref_>[\"page\"] =>\n Match.value<Any>(ref).pipe(\n Match.tag(\"Confect\", (confectRef) =>\n Schema.decodeUnknownSync(paginatedKind(confectRef).page)(encodedPage),\n ),\n Match.tag(\"Convex\", () => encodedPage),\n Match.exhaustive,\n ) as Returns<Ref_>[\"page\"];\n\n/**\n * Encode args via the ref's args schema, invoke `call`, decode returns via the\n * ref's returns schema, and translate any thrown `ConvexError` into the ref's\n * typed error. Anything else the Promise rejects with—network failures,\n * server-side runtime errors, validation failures, etc.—is passed to\n * `mapUnknownError` to be turned into a typed `E`, or surfaced as a defect when\n * no handler is provided.\n */\nexport const runWithCodec = Effect.fnUntraced(function* <\n Ref_ extends Any,\n E = never,\n>(\n ref: Ref_,\n args: Args<Ref_>,\n call: (\n functionReference: FunctionReference<Ref_>,\n encodedArgs: unknown,\n ) => PromiseLike<unknown>,\n mapUnknownError?: (error: unknown) => E,\n): Effect.fn.Return<Returns<Ref_>, E | Error<Ref_> | Schema.SchemaError> {\n const functionReference = getFunctionReference(ref);\n const invoke = (\n encodedArgs: unknown,\n ): Effect.Effect<unknown, Error<Ref_> | E> =>\n Effect.tryPromise({\n try: () => Promise.resolve(call(functionReference, encodedArgs)),\n catch: (error): Error<Ref_> | E => {\n if (isConvexError(error)) {\n const decoded = decodeErrorOption(ref, error.data);\n if (Option.isSome(decoded)) {\n return decoded.value;\n }\n }\n if (mapUnknownError !== undefined) {\n return mapUnknownError(error);\n }\n throw error;\n },\n });\n\n const encodedArgs = yield* encodeArgs(ref, args);\n const encodedReturns = yield* invoke(encodedArgs);\n return yield* decodeReturns(ref, encodedReturns);\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAa,SAAS;;;;AAqJtB,MAAa,SAAS,UACpB,UAAU,YAAY,OAAO,MAAM;AAyPrC,MAAa,QASX,yBACA,cACA,6BAEI,CAAC,MAKF;CACH,MAAM,qBAAqB,GAAG,wBAAwB,GAAG,aAAa;CAEtE,OAAO,MAAM,MAAM,aAAa,kBAAkB,CAAC,CAAC,KAClD,MAAM,IACJ,iBAEG;GACE,SAAS;EACV,MAAM;EACN;CACF,EACJ,GACA,MAAM,IAAI,YAAY,eACpB,eAAe,oBAAoB,YAAY,CAC7C,GAAG,4BACH,GAAG,aAAa,qBAClB,CAAC,CACH,GACA,MAAM,UACR;AAKF;;;;;;;;AASA,MAAa,kBACX,oBACA,YACA,uBACA,sBACe;CACf,MAAM,MAAM;GACT,SAAS;EACV,MAAM;EACN;EACA,GAAI,sBAAsB,KAAA,IAAY,CAAC,IAAI,EAAE,kBAAkB;EAC/D,MAAM,WAAW;EACjB;EACA,IAAI,kBAAkB;GACpB,OAAO,sBAAsB,KAAK,EAAE,WAAW,IAAI;EACrD;CACF;CAEA,eAAoB,KAAK,cAAc,WAAW,IAAI;CACtD,eAAoB,KAAK,iBAAiB,WAAW,OAAO;CAC5D,IAAI,WAAW,YACb,eAAoB,KAAK,eAAe,WAAW,KAAK;CAG1D,OAAO;AACT;AAEA,MAAa,yBAAyB,QACpC,IAAI;AAEN,MAAM,yCAAyB,IAAI,IAAoC;AAEvE,MAAa,wBACX,QAC4B;CAC5B,IAAI,IAAI,sBAAsB,KAAA,GAC5B,OAAO,IAAI;CAEb,MAAM,qBAAqB,sBAAsB,GAAG;CAEpD,MAAM,SAAS,uBAAuB,IAAI,kBAAkB;CAC5D,IAAI,WAAW,KAAA,GACb,OAAO;CAGT,MAAM,oBAAoB,sBAAsB,kBAAkB;CAClE,uBAAuB,IAAI,oBAAoB,iBAAiB;CAEhE,OAAO;AACT;;;;AAKA,MAAa,yBAMX,sBASG;CACH,MAAM,UAAU,mBAAmB,iBAAiB;CACpD,OAAO;GACJ,SAAS;EACV,MAAM;EACN,oBACE,QAAQ,QACR,QAAQ,aACR,QAAQ,kBACR;EACF;CACF;AASF;AAEA,MAAa,kBAAkB,QAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,KACf,MAAM,IACJ,YACC,eACC,WAAW,cACX,WAAW,gBAAgB,MACxB,mBAAmB,WAAW,cACjC,CACJ,GACA,MAAM,IAAI,gBAAgB,KAAK,GAC/B,MAAM,UACR;AAEF,MAAa,cACX,KACA,SAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,aAAa,WAAW,IAAI,CAAC,CAAC,IAAI,CAC3C,GACA,MAAM,IAAI,gBAAgB,OAAO,QAAQ,IAAI,CAAC,GAC9C,MAAM,UACR;AAEF,MAAa,iBACX,KACA,YAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,oBAAoB,WAAW,OAAO,CAAC,CAAC,OAAO,CACxD,GACA,MAAM,IAAI,gBAAgB,OAAO,QAAQ,OAAwB,CAAC,GAClE,MAAM,UACR;AAEF,MAAa,kBACX,KACA,SAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,WAAW,WAAW,IAAI,CAAC,CAAC,IAAI,CACzC,GACA,MAAM,IAAI,gBAAgB,IAAI,GAC9B,MAAM,UACR;AAEF,MAAa,kBACX,KACA,gBAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,kBAAkB,WAAW,IAAI,CAAC,CAAC,WAAW,CACvD,GACA,MAAM,IAAI,gBAAgB,WAAW,GACrC,MAAM,UACR;AAEF,MAAa,qBACX,KACA,YAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,WAAW,WAAW,OAAO,CAAC,CAAC,OAAO,CAC/C,GACA,MAAM,IAAI,gBAAgB,OAAO,GACjC,MAAM,UACR;AAEF,MAAa,qBACX,KACA,mBAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,kBAAkB,WAAW,OAAO,CAAC,CAAC,cAAc,CAC7D,GACA,MAAM,IAAI,gBAAgB,cAAc,GACxC,MAAM,UACR;AAEF,MAAM,wBAAwB,OAAO,IAAI,aAAa;AAEtD,MAAa,iBAAiB,UAC5B,iBAAiB,eAChB,OAAO,UAAU,YAChB,UAAU,QACV,yBAAyB;;;;;;;;;;AAW7B,MAAa,qBACW,KAAW,qBAChC,UAAoC;CACnC,IAAI,cAAc,KAAK,GAAG;EACxB,MAAM,UAAU,kBAAkB,KAAK,MAAM,IAAI;EACjD,IAAI,OAAO,OAAO,OAAO,GACvB,OAAO,QAAQ;CAEnB;CACA,OAAO,gBAAgB,KAAK;AAC9B;AAEF,MAAM,iBAAiB,QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,KACf,MAAM,IAAI,YAAY,eAAe;CACnC,MAAM,UAAU,CACd,GAAI,WAAW,cAAc,WAAW,UAAU,KAAA,IAC9C,CAAC,WAAW,KAAK,IACjB,CAAC,GACL,GAAGA,aAA4B,WAAW,eAAe,CAC3D;CACA,OAAO,QAAQ,WAAW,IACtB,OAAO,KAA6B,IACpC,OAAO,KACL,QAAQ,WAAW,IAAI,QAAQ,KAAM,OAAO,MAAM,OAAO,CAC3D;AACN,CAAC,GACD,MAAM,IAAI,gBAAgB,OAAO,KAA6B,CAAC,GAC/D,MAAM,UACR;;;;;;;;;;AAWF,MAAa,eACX,KACA,iBAEA,OAAO,MAAM,cAAc,GAAG,GAAG;CAC/B,cAAc,OAAO,QAAQ,OAAO,KAAkB,CAAC;CACvD,SAAS,WACP,OAAO,OACL,OAAO,oBAAoB,MAAM,CAAC,CAAC,YAAY,CACjD;AACJ,CAAC;;;;;;;;;;;;;;;AAgBH,MAAa,qBACX,KACA,iBAEA,OAAO,QACL,cAAc,GAAG,IAChB,WACC,OAAO,oBAAoB,MAAM,CAAC,CAAC,YAAY,CAGnD;AAEF,MAAM,mCAAmC,QACvC,IAAI,WAAW,MACb,wBAAwB,sBAAsB,GAAG,EAAE;;;;;;KASrD;AAEF,MAAM,iBAAiB,QACrB,MAAM,MAAM,IAAI,IAAI,CAAC,CAAC,KACpB,MAAM,IAAI,cAAc,SAAS,IAAI,GACrC,MAAM,IAAI,kBAAkB;CAC1B,MAAM,gCAAgC,GAAG;AAC3C,CAAC,GACD,MAAM,UACR;;;;;;;;AASF,MAAa,gCAGX,KACA,SAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,kBAAkB,cAAc,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnE,GACA,MAAM,IAAI,gBAAgB,IAAI,GAC9B,MAAM,UACR;;;;;;AAOF,MAAa,4BACX,KACA,gBAEA,MAAM,MAAW,GAAG,CAAC,CAAC,KACpB,MAAM,IAAI,YAAY,eACpB,OAAO,kBAAkB,cAAc,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CACtE,GACA,MAAM,IAAI,gBAAgB,WAAW,GACrC,MAAM,UACR;;;;;;;;;AAUF,MAAa,eAAe,OAAO,WAAW,WAI5C,KACA,MACA,MAIA,iBACuE;CACvE,MAAM,oBAAoB,qBAAqB,GAAG;CAClD,MAAM,UACJ,gBAEA,OAAO,WAAW;EAChB,WAAW,QAAQ,QAAQ,KAAK,mBAAmB,WAAW,CAAC;EAC/D,QAAQ,UAA2B;GACjC,IAAI,cAAc,KAAK,GAAG;IACxB,MAAM,UAAU,kBAAkB,KAAK,MAAM,IAAI;IACjD,IAAI,OAAO,OAAO,OAAO,GACvB,OAAO,QAAQ;GAEnB;GACA,IAAI,oBAAoB,KAAA,GACtB,OAAO,gBAAgB,KAAK;GAE9B,MAAM;EACR;CACF,CAAC;CAGH,MAAM,iBAAiB,OAAO,OAAO,OADV,WAAW,KAAK,IAAI,CACC;CAChD,OAAO,OAAO,cAAc,KAAK,cAAc;AACjD,CAAC"}
package/dist/Refs.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { Types } from "effect";
2
- import type * as FunctionSpec from "./FunctionSpec";
3
- import type * as GroupSpec from "./GroupSpec";
4
- import type * as MiddlewareSpec from "./MiddlewareSpec";
5
- import * as Ref from "./Ref";
6
- import * as Spec from "./Spec";
2
+ import type * as FunctionSpec from "./FunctionSpec.js";
3
+ import type * as GroupSpec from "./GroupSpec.js";
4
+ import type * as MiddlewareSpec from "./MiddlewareSpec.js";
5
+ import * as Ref from "./Ref.js";
6
+ import * as Spec from "./Spec.js";
7
7
  export type Refs<Spec_ extends Spec.AnyWithProps, Predicate extends Ref.Any = Ref.Any> = Types.Simplify<OmitEmpty<Helper<Spec.Groups<Spec_>, Predicate>>>;
8
8
  export interface FromSpec<Spec_ extends Spec.AnyWithProps> {
9
9
  public: Refs<Spec_, Ref.AnyPublic>;
@@ -1 +1 @@
1
- {"version":3,"file":"Refs.d.ts","sourceRoot":"","sources":["../src/Refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Refs.d.ts","sourceRoot":"","sources":["../src/Refs.ts"],"names":[],"mappings":"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"}
package/dist/Refs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Refs.js","names":["Spec.groups","Ref.make","Ref.getConvexFunctionName"],"sources":["../src/Refs.ts"],"sourcesContent":["import type { Types } from \"effect\";\nimport { pipe } from \"effect/Function\";\nimport * as Option from \"effect/Option\";\nimport * as Record from \"effect/Record\";\nimport type * as FunctionSpec from \"./FunctionSpec\";\nimport type * as GroupSpec from \"./GroupSpec\";\nimport type * as MiddlewareSpec from \"./MiddlewareSpec\";\nimport * as Ref from \"./Ref\";\nimport * as Spec from \"./Spec\";\n\nexport type Refs<\n Spec_ extends Spec.AnyWithProps,\n Predicate extends Ref.Any = Ref.Any,\n> = Types.Simplify<OmitEmpty<Helper<Spec.Groups<Spec_>, Predicate>>>;\n\nexport interface FromSpec<Spec_ extends Spec.AnyWithProps> {\n public: Refs<Spec_, Ref.AnyPublic>;\n internal: Refs<Spec_, Ref.AnyInternal>;\n}\n\ntype GroupRefs<\n Group extends GroupSpec.AnyWithProps,\n Predicate extends Ref.Any,\n> = Types.Simplify<\n OmitEmpty<Helper<GroupSpec.Groups<Group>, Predicate>> &\n FilteredFunctions<\n GroupSpec.Functions<Group>,\n Predicate,\n MiddlewareSpec.Error<GroupSpec.MiddlewareSpecs<Group>>,\n MiddlewareSpec.EncodedError<GroupSpec.MiddlewareSpecs<Group>>\n >\n>;\n\ntype OmitEmpty<T> = {\n [K in keyof T as keyof T[K] extends never ? never : K]: T[K];\n};\n\ntype FunctionSpecMatchesPredicate<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n Predicate extends Ref.Any,\n> =\n Ref.Ref<\n FunctionSpec.GetRuntimeAndFunctionType<FunctionSpec_>,\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n any,\n any,\n any\n > extends Predicate\n ? true\n : false;\n\ntype FilteredFunctions<\n FunctionSpecs extends FunctionSpec.AnyWithProps,\n Predicate extends Ref.Any,\n MiddlewareError,\n MiddlewareEncodedError,\n> = {\n [\n Name in FunctionSpec.Name<FunctionSpecs> as FunctionSpec.WithName<\n FunctionSpecs,\n Name\n > extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? FunctionSpecMatchesPredicate<FunctionSpec_, Predicate> extends true\n ? Name\n : never\n : never\n ]: FunctionSpec.WithName<FunctionSpecs, Name> extends infer F extends\n FunctionSpec.AnyWithProps\n ? F extends { readonly functionProvenance: { readonly _tag: \"Confect\" } }\n ? Ref.FromFunctionSpec<F, MiddlewareError, MiddlewareEncodedError>\n : Ref.FromFunctionSpec<F>\n : never;\n};\n\ntype Helper<\n Groups extends GroupSpec.AnyWithProps,\n Predicate extends Ref.Any,\n> = {\n [GroupName in GroupSpec.Name<Groups>]: GroupSpec.WithName<\n Groups,\n GroupName\n > extends infer Group extends GroupSpec.AnyWithProps\n ? GroupRefs<Group, Predicate>\n : never;\n};\n\ntype Any =\n | {\n readonly [key: string]: Any;\n }\n | Ref.Any;\n\nexport const make = <Spec_ extends Spec.AnyWithProps>(\n spec: Spec_,\n): FromSpec<Spec_> => {\n const refs = makeHelper(Spec.groups(spec));\n return {\n public: refs as Refs<Spec_, Ref.AnyPublic>,\n internal: refs as Refs<Spec_, Ref.AnyInternal>,\n };\n};\n\nconst makeHelper = (\n groups: Record.ReadonlyRecord<string, GroupSpec.Any>,\n convexFunctionNamespace: Option.Option<string> = Option.none(),\n): Any =>\n pipe(\n groups as Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>,\n Record.map((group, name) => {\n const currentConvexFunctionNamespace = Option.match(\n convexFunctionNamespace,\n {\n onNone: () => name,\n onSome: (parentNamespace) => `${parentNamespace}/${name}`,\n },\n );\n\n return Record.union(\n makeHelper(group.groups, Option.some(currentConvexFunctionNamespace)),\n Record.map(group.functions, (function_) =>\n Ref.make(\n currentConvexFunctionNamespace,\n function_,\n group.middlewareAttachments,\n ),\n ),\n (_subGroup, _function) => {\n throw new Error(\n `Group and function at same level have same name ('${Ref.getConvexFunctionName(_function)}')`,\n );\n },\n );\n }),\n );\n"],"mappings":";;;;;;;;AA4FA,MAAa,QACX,SACoB;CACpB,MAAM,OAAO,WAAWA,OAAY,IAAI,CAAC;CACzC,OAAO;EACL,QAAQ;EACR,UAAU;CACZ;AACF;AAEA,MAAM,cACJ,QACA,0BAAiD,OAAO,KAAK,MAE7D,KACE,QACA,OAAO,KAAK,OAAO,SAAS;CAC1B,MAAM,iCAAiC,OAAO,MAC5C,yBACA;EACE,cAAc;EACd,SAAS,oBAAoB,GAAG,gBAAgB,GAAG;CACrD,CACF;CAEA,OAAO,OAAO,MACZ,WAAW,MAAM,QAAQ,OAAO,KAAK,8BAA8B,CAAC,GACpE,OAAO,IAAI,MAAM,YAAY,cAC3BC,OACE,gCACA,WACA,MAAM,qBACR,CACF,IACC,WAAW,cAAc;EACxB,MAAM,IAAI,MACR,qDAAqDC,sBAA0B,SAAS,EAAE,GAC5F;CACF,CACF;AACF,CAAC,CACH"}
1
+ {"version":3,"file":"Refs.js","names":["Spec.groups","Ref.make","Ref.getConvexFunctionName"],"sources":["../src/Refs.ts"],"sourcesContent":["import type { Types } from \"effect\";\nimport { pipe } from \"effect/Function\";\nimport * as Option from \"effect/Option\";\nimport * as Record from \"effect/Record\";\nimport type * as FunctionSpec from \"./FunctionSpec.js\";\nimport type * as GroupSpec from \"./GroupSpec.js\";\nimport type * as MiddlewareSpec from \"./MiddlewareSpec.js\";\nimport * as Ref from \"./Ref.js\";\nimport * as Spec from \"./Spec.js\";\n\nexport type Refs<\n Spec_ extends Spec.AnyWithProps,\n Predicate extends Ref.Any = Ref.Any,\n> = Types.Simplify<OmitEmpty<Helper<Spec.Groups<Spec_>, Predicate>>>;\n\nexport interface FromSpec<Spec_ extends Spec.AnyWithProps> {\n public: Refs<Spec_, Ref.AnyPublic>;\n internal: Refs<Spec_, Ref.AnyInternal>;\n}\n\ntype GroupRefs<\n Group extends GroupSpec.AnyWithProps,\n Predicate extends Ref.Any,\n> = Types.Simplify<\n OmitEmpty<Helper<GroupSpec.Groups<Group>, Predicate>> &\n FilteredFunctions<\n GroupSpec.Functions<Group>,\n Predicate,\n MiddlewareSpec.Error<GroupSpec.MiddlewareSpecs<Group>>,\n MiddlewareSpec.EncodedError<GroupSpec.MiddlewareSpecs<Group>>\n >\n>;\n\ntype OmitEmpty<T> = {\n [K in keyof T as keyof T[K] extends never ? never : K]: T[K];\n};\n\ntype FunctionSpecMatchesPredicate<\n FunctionSpec_ extends FunctionSpec.AnyWithProps,\n Predicate extends Ref.Any,\n> =\n Ref.Ref<\n FunctionSpec.GetRuntimeAndFunctionType<FunctionSpec_>,\n FunctionSpec.GetFunctionVisibility<FunctionSpec_>,\n any,\n any,\n any\n > extends Predicate\n ? true\n : false;\n\ntype FilteredFunctions<\n FunctionSpecs extends FunctionSpec.AnyWithProps,\n Predicate extends Ref.Any,\n MiddlewareError,\n MiddlewareEncodedError,\n> = {\n [\n Name in FunctionSpec.Name<FunctionSpecs> as FunctionSpec.WithName<\n FunctionSpecs,\n Name\n > extends infer FunctionSpec_ extends FunctionSpec.AnyWithProps\n ? FunctionSpecMatchesPredicate<FunctionSpec_, Predicate> extends true\n ? Name\n : never\n : never\n ]: FunctionSpec.WithName<FunctionSpecs, Name> extends infer F extends\n FunctionSpec.AnyWithProps\n ? F extends { readonly functionProvenance: { readonly _tag: \"Confect\" } }\n ? Ref.FromFunctionSpec<F, MiddlewareError, MiddlewareEncodedError>\n : Ref.FromFunctionSpec<F>\n : never;\n};\n\ntype Helper<\n Groups extends GroupSpec.AnyWithProps,\n Predicate extends Ref.Any,\n> = {\n [GroupName in GroupSpec.Name<Groups>]: GroupSpec.WithName<\n Groups,\n GroupName\n > extends infer Group extends GroupSpec.AnyWithProps\n ? GroupRefs<Group, Predicate>\n : never;\n};\n\ntype Any =\n | {\n readonly [key: string]: Any;\n }\n | Ref.Any;\n\nexport const make = <Spec_ extends Spec.AnyWithProps>(\n spec: Spec_,\n): FromSpec<Spec_> => {\n const refs = makeHelper(Spec.groups(spec));\n return {\n public: refs as Refs<Spec_, Ref.AnyPublic>,\n internal: refs as Refs<Spec_, Ref.AnyInternal>,\n };\n};\n\nconst makeHelper = (\n groups: Record.ReadonlyRecord<string, GroupSpec.Any>,\n convexFunctionNamespace: Option.Option<string> = Option.none(),\n): Any =>\n pipe(\n groups as Record.ReadonlyRecord<string, GroupSpec.AnyWithProps>,\n Record.map((group, name) => {\n const currentConvexFunctionNamespace = Option.match(\n convexFunctionNamespace,\n {\n onNone: () => name,\n onSome: (parentNamespace) => `${parentNamespace}/${name}`,\n },\n );\n\n return Record.union(\n makeHelper(group.groups, Option.some(currentConvexFunctionNamespace)),\n Record.map(group.functions, (function_) =>\n Ref.make(\n currentConvexFunctionNamespace,\n function_,\n group.middlewareAttachments,\n ),\n ),\n (_subGroup, _function) => {\n throw new Error(\n `Group and function at same level have same name ('${Ref.getConvexFunctionName(_function)}')`,\n );\n },\n );\n }),\n );\n"],"mappings":";;;;;;;;AA4FA,MAAa,QACX,SACoB;CACpB,MAAM,OAAO,WAAWA,OAAY,IAAI,CAAC;CACzC,OAAO;EACL,QAAQ;EACR,UAAU;CACZ;AACF;AAEA,MAAM,cACJ,QACA,0BAAiD,OAAO,KAAK,MAE7D,KACE,QACA,OAAO,KAAK,OAAO,SAAS;CAC1B,MAAM,iCAAiC,OAAO,MAC5C,yBACA;EACE,cAAc;EACd,SAAS,oBAAoB,GAAG,gBAAgB,GAAG;CACrD,CACF;CAEA,OAAO,OAAO,MACZ,WAAW,MAAM,QAAQ,OAAO,KAAK,8BAA8B,CAAC,GACpE,OAAO,IAAI,MAAM,YAAY,cAC3BC,OACE,gCACA,WACA,MAAM,qBACR,CACF,IACC,WAAW,cAAc;EACxB,MAAM,IAAI,MACR,qDAAqDC,sBAA0B,SAAS,EAAE,GAC5F;CACF,CACF;AACF,CAAC,CACH"}
@@ -1,9 +1,9 @@
1
- import * as IdScope from "./IdScope";
1
+ import * as IdScope from "./IdScope.js";
2
2
  import type { GenericId as ConvexGenericId, PropertyValidators, Validator, VAny, VArray, VBoolean, VBytes, VFloat64, VId, VInt64, VLiteral, VNull, VObject, VRecord, VString, VUnion } from "convex/values";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Schema from "effect/Schema";
5
5
  import * as SchemaAST from "effect/SchemaAST";
6
- import type { IsAny, IsOptional, IsRecord, IsRecursive, IsUnion, TypeError, UnionToTuple } from "./Types";
6
+ import type { IsAny, IsOptional, IsRecord, IsRecursive, IsUnion, TypeError, UnionToTuple } from "./Types.js";
7
7
  export declare const compileArgsSchema: <ConfectValue, ConvexValue>(argsSchema: Schema.Codec<ConfectValue, ConvexValue>, scope?: IdScope.IdScope) => PropertyValidators;
8
8
  export declare const compileReturnsSchema: <ConfectValue, ConvexValue>(schema: Schema.Codec<ConfectValue, ConvexValue>, scope?: IdScope.IdScope) => Validator<any, any, any>;
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaToValidator.d.ts","sourceRoot":"","sources":["../src/SchemaToValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaToValidator.d.ts","sourceRoot":"","sources":["../src/SchemaToValidator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaToValidator.js","names":["IdScope.app","GenericId.tableName","GenericId.scope","scope"],"sources":["../src/SchemaToValidator.ts"],"sourcesContent":["import * as IdScope from \"./IdScope\";\nimport type {\n GenericId as ConvexGenericId,\n PropertyValidators,\n Validator,\n VAny,\n VArray,\n VBoolean,\n VBytes,\n VFloat64,\n VId,\n VInt64,\n VLiteral,\n VNull,\n VObject,\n VRecord,\n VString,\n VUnion,\n} from \"convex/values\";\nimport { v } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Data from \"effect/Data\";\nimport * as Effect from \"effect/Effect\";\nimport * as Match from \"effect/Match\";\nimport * as Number from \"effect/Number\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaAST from \"effect/SchemaAST\";\nimport * as String from \"effect/String\";\n\nimport * as GenericId from \"./GenericId\";\nimport type {\n IsAny,\n IsOptional,\n IsRecord,\n IsRecursive,\n IsUnion,\n TypeError,\n UnionToTuple,\n} from \"./Types\";\n\n// Args\n\nexport const compileArgsSchema = <ConfectValue, ConvexValue>(\n argsSchema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): PropertyValidators => {\n const ast = Schema.toEncoded(argsSchema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", (objectsAst) =>\n Array.isReadonlyArrayEmpty(objectsAst.indexSignatures)\n ? handlePropertySignatures(objectsAst, scope)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())),\n Effect.runSync,\n );\n};\n\n// Returns\n\nexport const compileReturnsSchema = <ConfectValue, ConvexValue>(\n schema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): Validator<any, any, any> =>\n Effect.runSync(compileAst(Schema.toEncoded(schema).ast, false, scope));\n\n// Table\n\n/**\n * Convert a table `Schema` to a table `Validator`.\n */\nexport type TableSchemaToTableValidator<\n TableSchema extends Schema.Codec<any, any>,\n> =\n ValueToValidator<TableSchema[\"Encoded\"]> extends infer Vd extends\n | VObject<any, any, any, any>\n | VUnion<any, any, any, any>\n ? Vd\n : never;\n\nexport const compileTableSchema = <TableSchema extends Schema.Codec<any, any>>(\n schema: TableSchema,\n scope: IdScope.IdScope = IdScope.app,\n): TableSchemaToTableValidator<TableSchema> => {\n const ast = Schema.toEncoded(schema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", ({ indexSignatures }) =>\n Array.isReadonlyArrayEmpty(indexSignatures)\n ? // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- The return type is derived from the input schema and cannot be recovered from the runtime AST.\n (compileAst(ast, false, scope) as Effect.Effect<any>)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.tag(\"Union\", (unionAst) => compileAst(unionAst, false, scope)),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())),\n Effect.runSync,\n );\n};\n\n// Compiler\n\nexport type ReadonlyValue =\n | string\n | number\n | bigint\n | boolean\n | ArrayBuffer\n | ReadonlyArrayValue\n | ReadonlyRecordValue\n | null;\n\ntype ReadonlyArrayValue = readonly ReadonlyValue[];\n\nexport type ReadonlyRecordValue = {\n readonly [key: string]: ReadonlyValue | undefined;\n};\n\ntype MutableValue<T> =\n T extends ReadonlyArray<infer El>\n ? MutableValue<El>[]\n : T extends ReadonlyRecordValue\n ? { -readonly [K in keyof T]: MutableValue<Exclude<T[K], undefined>> }\n : T;\n\nexport type ValueToValidator<Vl> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny\n : [Vl] extends [string | number | bigint | boolean | null | ArrayBuffer]\n ? ConvertValueToValidator<Vl>\n : IsRecursive<Vl> extends true\n ? VAny\n : [Vl] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl>\n : TypeError<\"Provided value is not a valid Convex value\", Vl>;\n\ntype OptionalValue<Vl, Optionality> = Optionality extends \"optional\"\n ? Vl | undefined\n : Vl;\n\ntype ConvertValueToValidator<\n Vl,\n Optionality extends \"required\" | \"optional\" = \"required\",\n> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny<any, Optionality>\n : [Vl] extends [null]\n ? VNull<OptionalValue<null, Optionality>, Optionality>\n : [Vl] extends [boolean]\n ? [boolean] extends [Vl]\n ? VBoolean<OptionalValue<boolean, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : IsUnion<Vl> extends true\n ? UnionValueToValidator<Vl, Optionality>\n : [Vl] extends [number]\n ? [number] extends [Vl]\n ? VFloat64<OptionalValue<number, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [bigint]\n ? [bigint] extends [Vl]\n ? VInt64<OptionalValue<bigint, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [string]\n ? StringValueToValidator<Vl, Optionality>\n : [Vl] extends [ArrayBuffer]\n ? VBytes<OptionalValue<ArrayBuffer, Optionality>, Optionality>\n : IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : Vl extends ReadonlyArray<infer El>\n ? VArray<\n OptionalValue<MutableValue<El[]>, Optionality>,\n ConvertValueToValidator<El>,\n Optionality\n >\n : Vl extends object\n ? ObjectValueToValidator<Vl, Optionality>\n : never;\n\ntype StringValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n Vl extends ConvexGenericId<string>\n ? VId<OptionalValue<Vl, Optionality>, Optionality>\n : [string] extends [Vl]\n ? VString<OptionalValue<string, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>;\n\ntype ObjectValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecord<MutableValue<Vl>> extends true\n ? ValueToValidator<Vl[keyof Vl]> extends infer VdValue extends Validator<\n any,\n \"required\",\n any\n >\n ? VRecord<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VString,\n VdValue,\n Optionality\n >\n : never\n : ObjectFieldsToValidators<Vl> extends infer VdFields extends Record<\n string,\n any\n >\n ? VObject<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VdFields,\n Optionality\n >\n : never;\n\ntype ObjectFieldsToValidators<Vl> = {\n -readonly [K in keyof Vl]-?: IsAny<Vl[K]> extends true\n ? IsOptional<Vl, K> extends true\n ? VAny<any, \"optional\">\n : VAny\n : undefined extends Vl[K]\n ? OptionalValueToValidator<Vl[K]>\n : [Vl[K]] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl[K]>\n : never;\n};\n\nexport type UndefinedOrValueToValidator<Vl extends ReadonlyValue | undefined> =\n undefined extends Vl\n ? OptionalValueToValidator<Vl>\n : [Vl] extends [ReadonlyValue]\n ? ValueToValidator<Vl>\n : never;\n\ntype UnionValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : VUnion<\n OptionalValue<MutableValue<Vl>, Optionality>,\n ValueTupleToValidatorTuple<UnionToTuple<Vl>>,\n Optionality\n >;\n\ntype ValueTupleToValidatorTuple<\n VlTuple extends readonly unknown[],\n Acc extends Validator<any, \"required\", any>[] = [],\n> = VlTuple extends\n | [true, false, ...infer VlRest]\n | [false, true, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, VBoolean]>\n : VlTuple extends [infer Vl, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, ConvertValueToValidator<Vl>]>\n : Acc;\n\ntype OptionalValueToValidator<Vl> = [Vl] extends [\n (infer Val extends ReadonlyValue) | undefined,\n]\n ? ConvertValueToValidator<Val, \"optional\">\n : never;\n\nexport const compileSchema = <T, E>(\n schema: Schema.Codec<T, E>,\n): ValueToValidator<(typeof schema)[\"Encoded\"]> =>\n Effect.runSync(compileAst(schema.ast)) as any;\n\nexport const isRecursive = (ast: SchemaAST.AST): boolean =>\n pipe(\n ast,\n Match.value,\n Match.tag(\n \"Literal\",\n \"Null\",\n \"Boolean\",\n \"String\",\n \"Number\",\n \"BigInt\",\n \"Unknown\",\n \"Any\",\n \"Declaration\",\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () => false,\n ),\n Match.tag(\"Union\", ({ types }) =>\n Array.some(types, (type) => isRecursive(type)),\n ),\n Match.tag(\"Objects\", ({ propertySignatures }) =>\n Array.some(propertySignatures, ({ type }) => isRecursive(type)),\n ),\n Match.tag(\n \"Arrays\",\n ({ elements, rest }) =>\n Array.some(elements, (element) => isRecursive(element)) ||\n Array.some(rest, (element) => isRecursive(element)),\n ),\n Match.tag(\"Suspend\", () => true),\n Match.exhaustive,\n );\n\nexport const compileAst = (\n ast: SchemaAST.AST,\n isOptionalPropertyOfTypeLiteral = false,\n scope: IdScope.IdScope = IdScope.app,\n): Effect.Effect<\n Validator<any, any, any>,\n | UnsupportedSchemaTypeError\n | UnsupportedPropertySignatureKeyTypeError\n | IndexSignaturesAreNotSupportedError\n | MixedIndexAndPropertySignaturesAreNotSupportedError\n | OptionalTupleElementsAreNotSupportedError\n | EmptyTupleIsNotSupportedError\n | EmptyUnionIsNotSupportedError\n> =>\n isRecursive(ast)\n ? Effect.succeed(v.any())\n : pipe(\n ast,\n Match.value,\n Match.tag(\"Literal\", ({ literal }) =>\n pipe(\n literal,\n Match.value,\n Match.whenOr(\n Match.string,\n Match.number,\n Match.bigint,\n Match.boolean,\n (l) => v.literal(l),\n ),\n Match.exhaustive,\n Effect.succeed,\n ),\n ),\n Match.tag(\"Null\", () => Effect.succeed(v.null())),\n Match.tag(\"Boolean\", () => Effect.succeed(v.boolean())),\n Match.tag(\"String\", (stringAst) =>\n GenericId.tableName(stringAst).pipe(\n Option.match({\n onNone: () => Effect.succeed(v.string()),\n onSome: (tableName) =>\n Effect.succeed(\n GenericId.scope(stringAst) === scope\n ? v.id(tableName)\n : v.string(),\n ),\n }),\n ),\n ),\n Match.tag(\"Number\", () => Effect.succeed(v.float64())),\n Match.tag(\"BigInt\", () => Effect.succeed(v.int64())),\n Match.tag(\"Union\", (unionAst) =>\n handleUnion(unionAst, isOptionalPropertyOfTypeLiteral, scope),\n ),\n Match.tag(\"Objects\", (objectsAst) => handleObjects(objectsAst, scope)),\n Match.tag(\"Arrays\", (arraysAst) => handleArrays(arraysAst, scope)),\n Match.tag(\"Unknown\", \"Any\", () => Effect.succeed(v.any())),\n Match.tag(\"Declaration\", (declaration) =>\n Effect.mapBoth(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Codec inputs are context-free, but Effect's SchemaAST.DeclarationRun erases their requirements to `any`.\n declaration.run(declaration.typeParameters)(\n new ArrayBuffer(0),\n declaration,\n {},\n ) as Effect.Effect<ArrayBuffer, unknown, never>,\n {\n onSuccess: () => v.bytes(),\n onFailure: () =>\n new UnsupportedSchemaTypeError({\n schemaType: declaration._tag,\n }),\n },\n ),\n ),\n Match.tag(\"Suspend\", () => Effect.succeed(v.any())),\n Match.tag(\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () =>\n Effect.fail(\n new UnsupportedSchemaTypeError({\n schemaType: ast._tag,\n }),\n ),\n ),\n Match.exhaustive,\n );\n\nconst handleUnion = (\n { types }: SchemaAST.Union,\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) => handleUnionTypes(types, isOptionalPropertyOfTypeLiteral, scope);\n\nconst handleUnionTypes = Effect.fnUntraced(function* (\n types: SchemaAST.Union[\"types\"],\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) {\n const members = isOptionalPropertyOfTypeLiteral\n ? Array.filter(types, Predicate.not(SchemaAST.isUndefined))\n : types;\n\n const [firstValidator, secondValidator, ...restValidators] =\n yield* Effect.all(\n Array.map(members, (type) => compileAst(type, false, scope)),\n );\n\n if (firstValidator === undefined) {\n return yield* new EmptyUnionIsNotSupportedError();\n } else if (secondValidator === undefined) {\n return firstValidator;\n } else {\n return v.union(firstValidator, secondValidator, ...restValidators);\n }\n});\n\nconst handleObjects = (objectsAst: SchemaAST.Objects, scope: IdScope.IdScope) =>\n pipe(\n objectsAst.indexSignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(handlePropertySignatures(objectsAst, scope), v.object),\n onSome: ({ parameter, type }) =>\n pipe(\n objectsAst.propertySignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(\n Effect.all({\n parameter_: compileAst(parameter, false, scope),\n type_: compileAst(type, false, scope),\n }),\n ({ parameter_, type_ }) => v.record(parameter_, type_),\n ),\n onSome: () =>\n Effect.fail(\n new MixedIndexAndPropertySignaturesAreNotSupportedError(),\n ),\n }),\n ),\n }),\n );\n\nconst handleArrays = (\n { elements, rest }: SchemaAST.Arrays,\n scope: IdScope.IdScope,\n) => handleArrayElements(elements, rest, scope);\n\nconst handleArrayElements = Effect.fnUntraced(function* (\n elements: SchemaAST.Arrays[\"elements\"],\n rest: SchemaAST.Arrays[\"rest\"],\n scope: IdScope.IdScope,\n) {\n const [f, s, ...r] = elements;\n\n const elementToValidator = (element: SchemaAST.AST) =>\n SchemaAST.isOptional(element)\n ? Effect.fail(new OptionalTupleElementsAreNotSupportedError())\n : compileAst(element, false, scope);\n\n const arrayItemsValidator = yield* f === undefined\n ? pipe(\n rest,\n Array.head,\n Option.match({\n onNone: () => Effect.fail(new EmptyTupleIsNotSupportedError()),\n onSome: (type) => compileAst(type, false, scope),\n }),\n )\n : s === undefined\n ? elementToValidator(f)\n : Effect.gen(function* () {\n const firstValidator = yield* elementToValidator(f);\n const secondValidator = yield* elementToValidator(s);\n const restValidators = yield* Effect.forEach(r, elementToValidator);\n\n return v.union(firstValidator, secondValidator, ...restValidators);\n });\n\n return v.array(arrayItemsValidator);\n});\n\nconst handlePropertySignatures = (\n objectsAst: SchemaAST.Objects,\n scope: IdScope.IdScope,\n) =>\n pipe(\n objectsAst.propertySignatures,\n Effect.forEach(({ type, name }) => {\n const isOptional = SchemaAST.isOptional(type);\n if (String.isString(name)) {\n // Somehow, somewhere, keys of type number are being coerced to strings…\n return Option.match(Number.parse(name), {\n onNone: () =>\n Effect.gen(function* () {\n const validator = yield* compileAst(type, isOptional, scope);\n\n return {\n propertyName: name,\n validator: isOptional ? v.optional(validator) : validator,\n };\n }),\n onSome: (number) =>\n Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({\n propertyKey: number,\n }),\n ),\n });\n } else {\n return Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({ propertyKey: name }),\n );\n }\n }),\n Effect.andThen((propertyNamesWithValidators) =>\n pipe(\n propertyNamesWithValidators,\n Array.reduce(\n {} as Record<string, Validator<any, any, any>>,\n (acc, { propertyName, validator }) => ({\n [propertyName]: validator,\n ...acc,\n }),\n ),\n Effect.succeed,\n ),\n ),\n );\n\n// Errors\n\nexport class TopLevelMustBeObjectError extends Data.TaggedError(\n \"TopLevelMustBeObjectError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object\";\n }\n /* v8 ignore stop */\n}\n\nexport class TopLevelMustBeObjectOrUnionError extends Data.TaggedError(\n \"TopLevelMustBeObjectOrUnionError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object or a union\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedPropertySignatureKeyTypeError extends Data.TaggedError(\n \"UnsupportedPropertySignatureKeyTypeError\",\n)<{\n readonly propertyKey: number | symbol;\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported property signature '${this.propertyKey.toString()}'. Property is of type '${typeof this.propertyKey}' but only 'string' properties are supported.`;\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyTupleIsNotSupportedError extends Data.TaggedError(\n \"EmptyTupleIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Tuple must have at least one element\";\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyUnionIsNotSupportedError extends Data.TaggedError(\n \"EmptyUnionIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Union must have at least one member that compiles to a validator\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedSchemaTypeError extends Data.TaggedError(\n \"UnsupportedSchemaTypeError\",\n)<{\n readonly schemaType: SchemaAST.AST[\"_tag\"];\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported schema type '${this.schemaType}'`;\n }\n /* v8 ignore stop */\n}\n\nexport class IndexSignaturesAreNotSupportedError extends Data.TaggedError(\n \"IndexSignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Index signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class MixedIndexAndPropertySignaturesAreNotSupportedError extends Data.TaggedError(\n \"MixedIndexAndPropertySignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Mixed index and property signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class OptionalTupleElementsAreNotSupportedError extends Data.TaggedError(\n \"OptionalTupleElementsAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Optional tuple elements are not supported\";\n }\n /* v8 ignore stop */\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SchemaToValidator.js","names":["IdScope.app","GenericId.tableName","GenericId.scope","scope"],"sources":["../src/SchemaToValidator.ts"],"sourcesContent":["import * as IdScope from \"./IdScope.js\";\nimport type {\n GenericId as ConvexGenericId,\n PropertyValidators,\n Validator,\n VAny,\n VArray,\n VBoolean,\n VBytes,\n VFloat64,\n VId,\n VInt64,\n VLiteral,\n VNull,\n VObject,\n VRecord,\n VString,\n VUnion,\n} from \"convex/values\";\nimport { v } from \"convex/values\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Data from \"effect/Data\";\nimport * as Effect from \"effect/Effect\";\nimport * as Match from \"effect/Match\";\nimport * as Number from \"effect/Number\";\nimport * as Option from \"effect/Option\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaAST from \"effect/SchemaAST\";\nimport * as String from \"effect/String\";\n\nimport * as GenericId from \"./GenericId.js\";\nimport type {\n IsAny,\n IsOptional,\n IsRecord,\n IsRecursive,\n IsUnion,\n TypeError,\n UnionToTuple,\n} from \"./Types.js\";\n\n// Args\n\nexport const compileArgsSchema = <ConfectValue, ConvexValue>(\n argsSchema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): PropertyValidators => {\n const ast = Schema.toEncoded(argsSchema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", (objectsAst) =>\n Array.isReadonlyArrayEmpty(objectsAst.indexSignatures)\n ? handlePropertySignatures(objectsAst, scope)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectError())),\n Effect.runSync,\n );\n};\n\n// Returns\n\nexport const compileReturnsSchema = <ConfectValue, ConvexValue>(\n schema: Schema.Codec<ConfectValue, ConvexValue>,\n scope: IdScope.IdScope = IdScope.app,\n): Validator<any, any, any> =>\n Effect.runSync(compileAst(Schema.toEncoded(schema).ast, false, scope));\n\n// Table\n\n/**\n * Convert a table `Schema` to a table `Validator`.\n */\nexport type TableSchemaToTableValidator<\n TableSchema extends Schema.Codec<any, any>,\n> =\n ValueToValidator<TableSchema[\"Encoded\"]> extends infer Vd extends\n | VObject<any, any, any, any>\n | VUnion<any, any, any, any>\n ? Vd\n : never;\n\nexport const compileTableSchema = <TableSchema extends Schema.Codec<any, any>>(\n schema: TableSchema,\n scope: IdScope.IdScope = IdScope.app,\n): TableSchemaToTableValidator<TableSchema> => {\n const ast = Schema.toEncoded(schema).ast;\n\n return pipe(\n ast,\n Match.value,\n Match.tag(\"Objects\", ({ indexSignatures }) =>\n Array.isReadonlyArrayEmpty(indexSignatures)\n ? // oxlint-disable-next-line effecttsgo/unsafe-effect-type-assertion -- The return type is derived from the input schema and cannot be recovered from the runtime AST.\n (compileAst(ast, false, scope) as Effect.Effect<any>)\n : Effect.fail(new IndexSignaturesAreNotSupportedError()),\n ),\n Match.tag(\"Union\", (unionAst) => compileAst(unionAst, false, scope)),\n Match.orElse(() => Effect.fail(new TopLevelMustBeObjectOrUnionError())),\n Effect.runSync,\n );\n};\n\n// Compiler\n\nexport type ReadonlyValue =\n | string\n | number\n | bigint\n | boolean\n | ArrayBuffer\n | ReadonlyArrayValue\n | ReadonlyRecordValue\n | null;\n\ntype ReadonlyArrayValue = readonly ReadonlyValue[];\n\nexport type ReadonlyRecordValue = {\n readonly [key: string]: ReadonlyValue | undefined;\n};\n\ntype MutableValue<T> =\n T extends ReadonlyArray<infer El>\n ? MutableValue<El>[]\n : T extends ReadonlyRecordValue\n ? { -readonly [K in keyof T]: MutableValue<Exclude<T[K], undefined>> }\n : T;\n\nexport type ValueToValidator<Vl> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny\n : [Vl] extends [string | number | bigint | boolean | null | ArrayBuffer]\n ? ConvertValueToValidator<Vl>\n : IsRecursive<Vl> extends true\n ? VAny\n : [Vl] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl>\n : TypeError<\"Provided value is not a valid Convex value\", Vl>;\n\ntype OptionalValue<Vl, Optionality> = Optionality extends \"optional\"\n ? Vl | undefined\n : Vl;\n\ntype ConvertValueToValidator<\n Vl,\n Optionality extends \"required\" | \"optional\" = \"required\",\n> = [Vl] extends [never]\n ? never\n : IsAny<Vl> extends true\n ? VAny<any, Optionality>\n : [Vl] extends [null]\n ? VNull<OptionalValue<null, Optionality>, Optionality>\n : [Vl] extends [boolean]\n ? [boolean] extends [Vl]\n ? VBoolean<OptionalValue<boolean, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : IsUnion<Vl> extends true\n ? UnionValueToValidator<Vl, Optionality>\n : [Vl] extends [number]\n ? [number] extends [Vl]\n ? VFloat64<OptionalValue<number, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [bigint]\n ? [bigint] extends [Vl]\n ? VInt64<OptionalValue<bigint, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>\n : [Vl] extends [string]\n ? StringValueToValidator<Vl, Optionality>\n : [Vl] extends [ArrayBuffer]\n ? VBytes<OptionalValue<ArrayBuffer, Optionality>, Optionality>\n : IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : Vl extends ReadonlyArray<infer El>\n ? VArray<\n OptionalValue<MutableValue<El[]>, Optionality>,\n ConvertValueToValidator<El>,\n Optionality\n >\n : Vl extends object\n ? ObjectValueToValidator<Vl, Optionality>\n : never;\n\ntype StringValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n Vl extends ConvexGenericId<string>\n ? VId<OptionalValue<Vl, Optionality>, Optionality>\n : [string] extends [Vl]\n ? VString<OptionalValue<string, Optionality>, Optionality>\n : VLiteral<OptionalValue<Vl, Optionality>, Optionality>;\n\ntype ObjectValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecord<MutableValue<Vl>> extends true\n ? ValueToValidator<Vl[keyof Vl]> extends infer VdValue extends Validator<\n any,\n \"required\",\n any\n >\n ? VRecord<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VString,\n VdValue,\n Optionality\n >\n : never\n : ObjectFieldsToValidators<Vl> extends infer VdFields extends Record<\n string,\n any\n >\n ? VObject<\n OptionalValue<MutableValue<Vl>, Optionality>,\n VdFields,\n Optionality\n >\n : never;\n\ntype ObjectFieldsToValidators<Vl> = {\n -readonly [K in keyof Vl]-?: IsAny<Vl[K]> extends true\n ? IsOptional<Vl, K> extends true\n ? VAny<any, \"optional\">\n : VAny\n : undefined extends Vl[K]\n ? OptionalValueToValidator<Vl[K]>\n : [Vl[K]] extends [ReadonlyValue]\n ? ConvertValueToValidator<Vl[K]>\n : never;\n};\n\nexport type UndefinedOrValueToValidator<Vl extends ReadonlyValue | undefined> =\n undefined extends Vl\n ? OptionalValueToValidator<Vl>\n : [Vl] extends [ReadonlyValue]\n ? ValueToValidator<Vl>\n : never;\n\ntype UnionValueToValidator<Vl, Optionality extends \"required\" | \"optional\"> =\n IsRecursive<Vl> extends true\n ? VAny<any, Optionality>\n : VUnion<\n OptionalValue<MutableValue<Vl>, Optionality>,\n ValueTupleToValidatorTuple<UnionToTuple<Vl>>,\n Optionality\n >;\n\ntype ValueTupleToValidatorTuple<\n VlTuple extends readonly unknown[],\n Acc extends Validator<any, \"required\", any>[] = [],\n> = VlTuple extends\n | [true, false, ...infer VlRest]\n | [false, true, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, VBoolean]>\n : VlTuple extends [infer Vl, ...infer VlRest]\n ? ValueTupleToValidatorTuple<VlRest, [...Acc, ConvertValueToValidator<Vl>]>\n : Acc;\n\ntype OptionalValueToValidator<Vl> = [Vl] extends [\n (infer Val extends ReadonlyValue) | undefined,\n]\n ? ConvertValueToValidator<Val, \"optional\">\n : never;\n\nexport const compileSchema = <T, E>(\n schema: Schema.Codec<T, E>,\n): ValueToValidator<(typeof schema)[\"Encoded\"]> =>\n Effect.runSync(compileAst(schema.ast)) as any;\n\nexport const isRecursive = (ast: SchemaAST.AST): boolean =>\n pipe(\n ast,\n Match.value,\n Match.tag(\n \"Literal\",\n \"Null\",\n \"Boolean\",\n \"String\",\n \"Number\",\n \"BigInt\",\n \"Unknown\",\n \"Any\",\n \"Declaration\",\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () => false,\n ),\n Match.tag(\"Union\", ({ types }) =>\n Array.some(types, (type) => isRecursive(type)),\n ),\n Match.tag(\"Objects\", ({ propertySignatures }) =>\n Array.some(propertySignatures, ({ type }) => isRecursive(type)),\n ),\n Match.tag(\n \"Arrays\",\n ({ elements, rest }) =>\n Array.some(elements, (element) => isRecursive(element)) ||\n Array.some(rest, (element) => isRecursive(element)),\n ),\n Match.tag(\"Suspend\", () => true),\n Match.exhaustive,\n );\n\nexport const compileAst = (\n ast: SchemaAST.AST,\n isOptionalPropertyOfTypeLiteral = false,\n scope: IdScope.IdScope = IdScope.app,\n): Effect.Effect<\n Validator<any, any, any>,\n | UnsupportedSchemaTypeError\n | UnsupportedPropertySignatureKeyTypeError\n | IndexSignaturesAreNotSupportedError\n | MixedIndexAndPropertySignaturesAreNotSupportedError\n | OptionalTupleElementsAreNotSupportedError\n | EmptyTupleIsNotSupportedError\n | EmptyUnionIsNotSupportedError\n> =>\n isRecursive(ast)\n ? Effect.succeed(v.any())\n : pipe(\n ast,\n Match.value,\n Match.tag(\"Literal\", ({ literal }) =>\n pipe(\n literal,\n Match.value,\n Match.whenOr(\n Match.string,\n Match.number,\n Match.bigint,\n Match.boolean,\n (l) => v.literal(l),\n ),\n Match.exhaustive,\n Effect.succeed,\n ),\n ),\n Match.tag(\"Null\", () => Effect.succeed(v.null())),\n Match.tag(\"Boolean\", () => Effect.succeed(v.boolean())),\n Match.tag(\"String\", (stringAst) =>\n GenericId.tableName(stringAst).pipe(\n Option.match({\n onNone: () => Effect.succeed(v.string()),\n onSome: (tableName) =>\n Effect.succeed(\n GenericId.scope(stringAst) === scope\n ? v.id(tableName)\n : v.string(),\n ),\n }),\n ),\n ),\n Match.tag(\"Number\", () => Effect.succeed(v.float64())),\n Match.tag(\"BigInt\", () => Effect.succeed(v.int64())),\n Match.tag(\"Union\", (unionAst) =>\n handleUnion(unionAst, isOptionalPropertyOfTypeLiteral, scope),\n ),\n Match.tag(\"Objects\", (objectsAst) => handleObjects(objectsAst, scope)),\n Match.tag(\"Arrays\", (arraysAst) => handleArrays(arraysAst, scope)),\n Match.tag(\"Unknown\", \"Any\", () => Effect.succeed(v.any())),\n Match.tag(\"Declaration\", (declaration) =>\n Effect.mapBoth(\n // oxlint-disable-next-line effecttsgo/any-unknown-in-error-context -- Codec inputs are context-free, but Effect's SchemaAST.DeclarationRun erases their requirements to `any`.\n declaration.run(declaration.typeParameters)(\n new ArrayBuffer(0),\n declaration,\n {},\n ) as Effect.Effect<ArrayBuffer, unknown, never>,\n {\n onSuccess: () => v.bytes(),\n onFailure: () =>\n new UnsupportedSchemaTypeError({\n schemaType: declaration._tag,\n }),\n },\n ),\n ),\n Match.tag(\"Suspend\", () => Effect.succeed(v.any())),\n Match.tag(\n \"UniqueSymbol\",\n \"Symbol\",\n \"Undefined\",\n \"Void\",\n \"Never\",\n \"Enum\",\n \"TemplateLiteral\",\n \"ObjectKeyword\",\n () =>\n Effect.fail(\n new UnsupportedSchemaTypeError({\n schemaType: ast._tag,\n }),\n ),\n ),\n Match.exhaustive,\n );\n\nconst handleUnion = (\n { types }: SchemaAST.Union,\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) => handleUnionTypes(types, isOptionalPropertyOfTypeLiteral, scope);\n\nconst handleUnionTypes = Effect.fnUntraced(function* (\n types: SchemaAST.Union[\"types\"],\n isOptionalPropertyOfTypeLiteral: boolean,\n scope: IdScope.IdScope,\n) {\n const members = isOptionalPropertyOfTypeLiteral\n ? Array.filter(types, Predicate.not(SchemaAST.isUndefined))\n : types;\n\n const [firstValidator, secondValidator, ...restValidators] =\n yield* Effect.all(\n Array.map(members, (type) => compileAst(type, false, scope)),\n );\n\n if (firstValidator === undefined) {\n return yield* new EmptyUnionIsNotSupportedError();\n } else if (secondValidator === undefined) {\n return firstValidator;\n } else {\n return v.union(firstValidator, secondValidator, ...restValidators);\n }\n});\n\nconst handleObjects = (objectsAst: SchemaAST.Objects, scope: IdScope.IdScope) =>\n pipe(\n objectsAst.indexSignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(handlePropertySignatures(objectsAst, scope), v.object),\n onSome: ({ parameter, type }) =>\n pipe(\n objectsAst.propertySignatures,\n Array.head,\n Option.match({\n onNone: () =>\n Effect.map(\n Effect.all({\n parameter_: compileAst(parameter, false, scope),\n type_: compileAst(type, false, scope),\n }),\n ({ parameter_, type_ }) => v.record(parameter_, type_),\n ),\n onSome: () =>\n Effect.fail(\n new MixedIndexAndPropertySignaturesAreNotSupportedError(),\n ),\n }),\n ),\n }),\n );\n\nconst handleArrays = (\n { elements, rest }: SchemaAST.Arrays,\n scope: IdScope.IdScope,\n) => handleArrayElements(elements, rest, scope);\n\nconst handleArrayElements = Effect.fnUntraced(function* (\n elements: SchemaAST.Arrays[\"elements\"],\n rest: SchemaAST.Arrays[\"rest\"],\n scope: IdScope.IdScope,\n) {\n const [f, s, ...r] = elements;\n\n const elementToValidator = (element: SchemaAST.AST) =>\n SchemaAST.isOptional(element)\n ? Effect.fail(new OptionalTupleElementsAreNotSupportedError())\n : compileAst(element, false, scope);\n\n const arrayItemsValidator = yield* f === undefined\n ? pipe(\n rest,\n Array.head,\n Option.match({\n onNone: () => Effect.fail(new EmptyTupleIsNotSupportedError()),\n onSome: (type) => compileAst(type, false, scope),\n }),\n )\n : s === undefined\n ? elementToValidator(f)\n : Effect.gen(function* () {\n const firstValidator = yield* elementToValidator(f);\n const secondValidator = yield* elementToValidator(s);\n const restValidators = yield* Effect.forEach(r, elementToValidator);\n\n return v.union(firstValidator, secondValidator, ...restValidators);\n });\n\n return v.array(arrayItemsValidator);\n});\n\nconst handlePropertySignatures = (\n objectsAst: SchemaAST.Objects,\n scope: IdScope.IdScope,\n) =>\n pipe(\n objectsAst.propertySignatures,\n Effect.forEach(({ type, name }) => {\n const isOptional = SchemaAST.isOptional(type);\n if (String.isString(name)) {\n // Somehow, somewhere, keys of type number are being coerced to strings…\n return Option.match(Number.parse(name), {\n onNone: () =>\n Effect.gen(function* () {\n const validator = yield* compileAst(type, isOptional, scope);\n\n return {\n propertyName: name,\n validator: isOptional ? v.optional(validator) : validator,\n };\n }),\n onSome: (number) =>\n Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({\n propertyKey: number,\n }),\n ),\n });\n } else {\n return Effect.fail(\n new UnsupportedPropertySignatureKeyTypeError({ propertyKey: name }),\n );\n }\n }),\n Effect.andThen((propertyNamesWithValidators) =>\n pipe(\n propertyNamesWithValidators,\n Array.reduce(\n {} as Record<string, Validator<any, any, any>>,\n (acc, { propertyName, validator }) => ({\n [propertyName]: validator,\n ...acc,\n }),\n ),\n Effect.succeed,\n ),\n ),\n );\n\n// Errors\n\nexport class TopLevelMustBeObjectError extends Data.TaggedError(\n \"TopLevelMustBeObjectError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object\";\n }\n /* v8 ignore stop */\n}\n\nexport class TopLevelMustBeObjectOrUnionError extends Data.TaggedError(\n \"TopLevelMustBeObjectOrUnionError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Top level schema must be an object or a union\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedPropertySignatureKeyTypeError extends Data.TaggedError(\n \"UnsupportedPropertySignatureKeyTypeError\",\n)<{\n readonly propertyKey: number | symbol;\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported property signature '${this.propertyKey.toString()}'. Property is of type '${typeof this.propertyKey}' but only 'string' properties are supported.`;\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyTupleIsNotSupportedError extends Data.TaggedError(\n \"EmptyTupleIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Tuple must have at least one element\";\n }\n /* v8 ignore stop */\n}\n\nexport class EmptyUnionIsNotSupportedError extends Data.TaggedError(\n \"EmptyUnionIsNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Union must have at least one member that compiles to a validator\";\n }\n /* v8 ignore stop */\n}\n\nexport class UnsupportedSchemaTypeError extends Data.TaggedError(\n \"UnsupportedSchemaTypeError\",\n)<{\n readonly schemaType: SchemaAST.AST[\"_tag\"];\n}> {\n /* v8 ignore start */\n override get message() {\n return `Unsupported schema type '${this.schemaType}'`;\n }\n /* v8 ignore stop */\n}\n\nexport class IndexSignaturesAreNotSupportedError extends Data.TaggedError(\n \"IndexSignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Index signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class MixedIndexAndPropertySignaturesAreNotSupportedError extends Data.TaggedError(\n \"MixedIndexAndPropertySignaturesAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Mixed index and property signatures are not supported\";\n }\n /* v8 ignore stop */\n}\n\nexport class OptionalTupleElementsAreNotSupportedError extends Data.TaggedError(\n \"OptionalTupleElementsAreNotSupportedError\",\n) {\n /* v8 ignore start */\n override get message() {\n return \"Optional tuple elements are not supported\";\n }\n /* v8 ignore stop */\n}\n"],"mappings":"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"}
package/dist/Spec.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as Record from "effect/Record";
2
- import * as GroupSpec from "./GroupSpec";
2
+ import * as GroupSpec from "./GroupSpec.js";
3
3
  export declare const TypeId = "~@confect/core/Spec";
4
4
  export type TypeId = typeof TypeId;
5
5
  export declare const isSpec: (u: unknown) => u is AnyWithProps;
@@ -1 +1 @@
1
- {"version":3,"file":"Spec.d.ts","sourceRoot":"","sources":["../src/Spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,MAAM,MAAO,OAAO,KAAG,CAAC,IAAI,YACP,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CACnB,OAAO,SAAS,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;IAE1E,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,GAAG;IACvC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CAC1E;AAED,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS,YAAY,IAC3C,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,QACzC,KAAK,KACV,KAAK,CAAC,MAAM,CAAiB,CAAC;AAEjC,eAAO,MAAM,UAAU,WACb,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,KAC5D,YAID,CAAC"}
1
+ {"version":3,"file":"Spec.d.ts","sourceRoot":"","sources":["../src/Spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,eAAO,MAAM,MAAM,wBAAwB,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,MAAM,MAAO,OAAO,KAAG,CAAC,IAAI,YACP,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,WAAW,IAAI,CACnB,OAAO,SAAS,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;IAE1E,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,GAAG;IACvC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CAC1E;AAED,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS,YAAY,IAC3C,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,QACzC,KAAK,KACV,KAAK,CAAC,MAAM,CAAiB,CAAC;AAEjC,eAAO,MAAM,UAAU,WACb,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,KAC5D,YAID,CAAC"}