@gaganref/confect-core 10.3.1-fork.20 → 10.3.1-fork.22

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.
@@ -2,7 +2,7 @@ import type * as MiddlewareAttachment from "./MiddlewareAttachment.js";
2
2
  import type { DefaultFunctionArgs, FunctionType, FunctionVisibility, RegisteredAction, RegisteredMutation, RegisteredQuery } from "convex/server";
3
3
  import type * as Schema from "effect/Schema";
4
4
  import * as FunctionProvenance from "./FunctionProvenance.js";
5
- import type * as MiddlewareSpec from "./MiddlewareSpec.js";
5
+ import * as MiddlewareSpec from "./MiddlewareSpec.js";
6
6
  import type * as Profile from "./Profile.js";
7
7
  import * as RuntimeAndFunctionType from "./RuntimeAndFunctionType.js";
8
8
  export declare const TypeId = "~@confect/core/FunctionSpec";
@@ -579,37 +579,48 @@ type OptionFree<Type> = [keyof Type & BuilderOption] extends [never] ? unknown :
579
579
  * branch on the function's name.
580
580
  */
581
581
  type CheckedFields<Type> = Type & OptionFree<Type>;
582
- type NotRepeated<Middleware_ extends MiddlewareSpec.AnyMiddlewareSpec, Inherited extends MiddlewareSpec.AnyMiddlewareSpec> = Middleware_ extends {
582
+ type NotRepeated<Middleware_, Inherited extends MiddlewareSpec.AnyMiddlewareSpec> = Middleware_ extends {
583
583
  readonly key: infer Key extends MiddlewareSpec.Key<Inherited>;
584
584
  } ? MiddlewareSpec.AttachmentError<`Middleware "${Key}" is already attached by this profile`> : Middleware_;
585
585
  /**
586
- * Refuses middleware an earlier layer attached, which would throw once a
587
- * function is built. Each member of an element's union is checked, so an array
588
- * typed `(A | B)[]` is refused when either was attached.
586
+ * Refuses a middleware without options that an earlier layer attached, as it is
587
+ * attached at most once; one with options may repeat. Each member of an
588
+ * element's union is checked, so an array typed `(A | B)[]` is refused when
589
+ * either was attached.
589
590
  */
590
- type NotInherited<Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>, Inherited extends MiddlewareSpec.AnyMiddlewareSpec> = {
591
+ type NotInherited<Middleware_ extends ReadonlyArray<unknown>, Inherited extends MiddlewareSpec.AnyMiddlewareSpec> = {
591
592
  readonly [Index in keyof Middleware_]: NotRepeated<Middleware_[Index], Inherited>;
592
593
  };
594
+ /**
595
+ * A profile's middleware: a spec without options, or an attachment.
596
+ */
597
+ type ProfileMiddleware<FieldsType> = OptionlessMiddlewareSpec | Profile.Attachment<MiddlewareSpec.AnyMiddlewareSpec, FieldsType>;
598
+ type SpecOf<Middleware_> = Middleware_ extends Profile.Attachment<infer MiddlewareSpec_, any> ? MiddlewareSpec_ : Extract<Middleware_, MiddlewareSpec.AnyMiddlewareSpec>;
593
599
  /**
594
600
  * `never` when a profile middleware does not declare the function type.
595
601
  */
596
602
  type Declared<MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec, FunctionType_ extends FunctionType, Make> = [
597
603
  MiddlewareSpecs_ extends unknown ? FunctionType_ extends MiddlewareSpec.FunctionTypes<MiddlewareSpecs_> ? never : MiddlewareSpecs_ : never
598
604
  ] extends [never] ? Make : never;
599
- type ExtendedMake<RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType, Fields_ extends Profile.Fields, MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec> = Declared<MiddlewareSpecs_, RuntimeAndFunctionType_["functionType"], <const Name_ extends string, const ArgsFields_ extends FunctionProvenance.ArgsFields = {}, Returns_ extends Schema.Codec<any, any> = never, Error_ extends Schema.Codec<any, any> = never>(options: {
605
+ type Wrapped<Layers extends ReadonlyArray<Profile.Transforms>, Key extends keyof Profile.Transforms, Input> = Layers extends readonly [
606
+ infer First extends Profile.Transforms,
607
+ ...infer Rest extends ReadonlyArray<Profile.Transforms>
608
+ ] ? Wrapped<Rest, Key, Key extends keyof First ? [Input] extends [never] ? never : Profile.Transform<First[Key], Input> : Input> : Input;
609
+ type UserArgs<A> = [A] extends [never] ? {} : A;
610
+ type ExtendedMake<RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType, Fields_ extends Profile.Fields, MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec, Layers extends ReadonlyArray<Profile.Transforms>> = Declared<MiddlewareSpecs_, RuntimeAndFunctionType_["functionType"], <const Name_ extends string, const ArgsFields_ extends FunctionProvenance.ArgsFields = never, Returns_ extends Schema.Codec<any, any> = never, Error_ extends Schema.Codec<any, any> = never>(options: {
600
611
  readonly name: Name_;
601
612
  readonly description?: string;
602
613
  readonly args?: () => ArgsFields_;
603
614
  readonly returns: () => Returns_;
604
615
  readonly error?: () => Error_;
605
- } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, ArgsFields_>>>) => ExtendedBuilder<RuntimeAndFunctionType_, "public", Name_, FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>, MiddlewareSpecs_, Profile.Apply<Fields_, Name_, ArgsFields_>>>;
606
- type ExtendedMakePaginated<Fields_ extends Profile.Fields, MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec> = Declared<MiddlewareSpecs_, "query", <const Name_ extends string, const UserArgsFields_ extends FunctionProvenance.ArgsFields = {}, Item_ extends Schema.Codec<any, any> = never, Error_ extends Schema.Codec<any, any> = never>(options: {
616
+ } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, UserArgs<ArgsFields_>>>>) => ExtendedBuilder<RuntimeAndFunctionType_, "public", Name_, FunctionProvenance.Confect<UserArgs<Wrapped<Layers, "args", ArgsFields_>>, Wrapped<Layers, "returns", Returns_>, Wrapped<Layers, "error", Error_>>, MiddlewareSpecs_, Profile.Apply<Fields_, Name_, UserArgs<ArgsFields_>>>>;
617
+ type ExtendedMakePaginated<Fields_ extends Profile.Fields, MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec, Layers extends ReadonlyArray<Profile.Transforms>> = Declared<MiddlewareSpecs_, "query", <const Name_ extends string, const UserArgsFields_ extends FunctionProvenance.ArgsFields = never, Item_ extends Schema.Codec<any, any> = never, Error_ extends Schema.Codec<any, any> = never>(options: {
607
618
  readonly name: Name_;
608
619
  readonly description?: string;
609
620
  readonly args?: () => UserArgsFields_ & ForbidPaginationOpts<UserArgsFields_>;
610
621
  readonly item: () => Item_;
611
622
  readonly error?: () => Error_;
612
- } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, UserArgsFields_>>>) => ExtendedBuilder<RuntimeAndFunctionType.ConvexQuery, "public", Name_, FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>, MiddlewareSpecs_, Profile.Apply<Fields_, Name_, UserArgsFields_>>>;
623
+ } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, UserArgs<UserArgsFields_>>>>) => ExtendedBuilder<RuntimeAndFunctionType.ConvexQuery, "public", Name_, FunctionProvenance.ConfectPaginated<UserArgs<Wrapped<Layers, "args", UserArgsFields_>>, Wrapped<Layers, "item", Item_>, Wrapped<Layers, "error", Error_>>, MiddlewareSpecs_, Profile.Apply<Fields_, Name_, UserArgs<UserArgsFields_>>>>;
613
624
  interface ExtendedRuntimes {
614
625
  readonly publicQuery: RuntimeAndFunctionType.ConvexQuery;
615
626
  readonly publicMutation: RuntimeAndFunctionType.ConvexMutation;
@@ -619,23 +630,26 @@ interface ExtendedRuntimes {
619
630
  /**
620
631
  * A profile's five public builders and its own `extend`.
621
632
  */
622
- export type Extended<Fields_ extends Profile.Fields, MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec> = {
623
- readonly [Builder_ in keyof ExtendedRuntimes]: ExtendedMake<ExtendedRuntimes[Builder_], Fields_, MiddlewareSpecs_>;
633
+ export type Extended<Fields_ extends Profile.Fields, MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec, Layers extends ReadonlyArray<Profile.Transforms> = []> = {
634
+ readonly [Builder_ in keyof ExtendedRuntimes]: ExtendedMake<ExtendedRuntimes[Builder_], Fields_, MiddlewareSpecs_, Layers>;
624
635
  } & {
625
- readonly publicPaginatedQuery: ExtendedMakePaginated<Fields_, MiddlewareSpecs_>;
636
+ readonly publicPaginatedQuery: ExtendedMakePaginated<Fields_, MiddlewareSpecs_, Layers>;
626
637
  /**
627
638
  * Require more fields and attach more middleware after this profile's.
628
639
  */
629
- extend<Extension extends Profile.Fields = Profile.NoFields>(): <const Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>>(config: {
640
+ extend<Extension extends Profile.Fields = Profile.NoFields, Transforms extends Profile.Transforms = {}>(): <const Middleware_ extends ReadonlyArray<ProfileMiddleware<Profile.Apply<Profile.Both<Fields_, Extension>, string, any>>>>(config: {
630
641
  readonly middleware: Middleware_ & NotInherited<Middleware_, MiddlewareSpecs_>;
631
- } & OptionFree<Extension["Type"]>) => Extended<Profile.Both<Fields_, Extension>, MiddlewareSpecs_ | Middleware_[number]>;
642
+ } & OptionFree<Extension["Type"]> & Profile.SchemaConfig<Transforms, Profile.Apply<Profile.Both<Fields_, Extension>, string, any>>) => Extended<Profile.Both<Fields_, Extension>, MiddlewareSpecs_ | SpecOf<Middleware_[number]>, [
643
+ ...Layers,
644
+ Transforms
645
+ ]>;
632
646
  };
633
647
  /**
634
648
  * Public builders whose specs require and keep `Fields_`, with `middleware`.
635
649
  */
636
- export declare const extend: <Fields_ extends Profile.Fields = Profile.NoFields>() => <const Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>>(config: {
650
+ export declare const extend: <Fields_ extends Profile.Fields = Profile.NoFields, Transforms extends Profile.Transforms = {}>() => <const Middleware_ extends ReadonlyArray<ProfileMiddleware<Profile.Apply<Fields_, string, any>>>>(config: {
637
651
  readonly middleware: Middleware_;
638
- } & OptionFree<Fields_["Type"]>) => Extended<Fields_, Middleware_[number]>;
652
+ } & OptionFree<Fields_["Type"]> & Profile.SchemaConfig<Transforms, Profile.Apply<Fields_, string, any>>) => Extended<Fields_, SpecOf<Middleware_[number]>, [Transforms]>;
639
653
  type MatchingRegisteredFunction<RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType, FunctionVisibility_ extends FunctionVisibility> = RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends "query" ? RegisteredQuery<FunctionVisibility_, any, any> : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends "mutation" ? RegisteredMutation<FunctionVisibility_, any, any> : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends "action" ? RegisteredAction<FunctionVisibility_, any, any> : never;
640
654
  type ExtractArgs<F> = F extends RegisteredQuery<any, infer A extends DefaultFunctionArgs, any> ? A : F extends RegisteredMutation<any, infer A extends DefaultFunctionArgs, any> ? A : F extends RegisteredAction<any, infer A extends DefaultFunctionArgs, any> ? A : never;
641
655
  type ExtractReturns<F> = F extends RegisteredQuery<any, any, infer R> ? R : F extends RegisteredMutation<any, any, infer R> ? R : F extends RegisteredAction<any, any, infer R> ? R : never;
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionSpec.d.ts","sourceRoot":"","sources":["../src/FunctionSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,oBAAoB,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,sBAAsB,MAAM,6BAA6B,CAAC;AAEtE,eAAO,MAAM,MAAM,gCAAgC,CAAC;AACpD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,cAAc,MAAO,OAAO,KAAG,CAAC,IAAI,YACf,CAAC;AAEnC,MAAM,WAAW,YAAY,CAC3B,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,EAC7E,mBAAmB,SAAS,kBAAkB,EAC9C,KAAK,SAAS,MAAM,EACpB,mBAAmB,SAAS,kBAAkB,CAAC,kBAAkB,EACjE,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,GAAG,KAAK;IAEjE,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IACzD,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC1D,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAC3C,oBAAoB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAC5D,CAAC;CACH;AAED,MAAM,WAAW,OAAO,CACtB,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,EAC7E,mBAAmB,SAAS,kBAAkB,EAC9C,KAAK,SAAS,MAAM,EACpB,mBAAmB,SAAS,kBAAkB,CAAC,kBAAkB,EACjE,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,GAAG,KAAK,CACjE,SAAQ,YAAY,CACpB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,gBAAgB,CACjB;IACC,UAAU,CAAC,eAAe,SAAS,cAAc,CAAC,iBAAiB,EACjE,cAAc,EAAE,eAAe,GAC7B,cAAc,CAAC,sBAAsB,CACnC,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,CACjB,EACH,GAAG,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAC9D,OAAO,CACR,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,gBAAgB,GAAG,eAAe,CACnC,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB,CAC/B,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,EAC7E,mBAAmB,SAAS,kBAAkB,EAC9C,KAAK,SAAS,MAAM,EACpB,mBAAmB,SAAS,kBAAkB,CAAC,kBAAkB,EACjE,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,GAAG,KAAK,CACjE,SAAQ,OAAO,CACf,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,gBAAgB,CACjB;IACC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,UAAU,CAAC,eAAe,SAAS,cAAc,CAAC,iBAAiB,EACjE,cAAc,EAAE,eAAe,GAC7B,cAAc,CAAC,sBAAsB,CACnC,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,CACjB,EACH,GAAG,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAC9D,gBAAgB,CACjB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,gBAAgB,GAAG,eAAe,CACnC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAC9B,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,EAC7E,mBAAmB,SAAS,kBAAkB,EAC9C,KAAK,SAAS,MAAM,EACpB,mBAAmB,SAAS,kBAAkB,CAAC,kBAAkB,EACjE,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,EACzD,OAAO,CACP,SAAQ,OAAO,CACf,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,gBAAgB,CACjB;IACC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,UAAU,CAAC,eAAe,SAAS,cAAc,CAAC,iBAAiB,EACjE,cAAc,EAAE,eAAe,GAC7B,cAAc,CAAC,sBAAsB,CACnC,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,CACjB,EACH,GAAG,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAC9D,eAAe,CAChB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EACL,mBAAmB,EACnB,gBAAgB,GAAG,eAAe,EAClC,OAAO,CACR,CAAC;CACH;AAED,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY,CAChD,sBAAsB,CAAC,sBAAsB,EAC7C,kBAAkB,EAClB,MAAM,EACN,kBAAkB,CAAC,kBAAkB,EACrC,cAAc,CAAC,iBAAiB,CACjC;IACC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY,CAC9C,sBAAsB,CAAC,sBAAsB,EAC7C,kBAAkB,EAClB,MAAM,EACN,kBAAkB,CAAC,UAAU,EAC7B,cAAc,CAAC,iBAAiB,CACjC;CAAG;AAEJ,MAAM,WAAW,SAAU,SAAQ,YAAY,CAC7C,sBAAsB,CAAC,sBAAsB,EAC7C,kBAAkB,EAClB,MAAM,EACN,kBAAkB,CAAC,SAAS,EAC5B,cAAc,CAAC,iBAAiB,CACjC;CAAG;AAEJ,MAAM,WAAW,uBAAuB,CACtC,OAAO,SAAS,sBAAsB,CAAC,OAAO,CAC9C,SAAQ,YAAY,CACpB,sBAAsB,CAAC,WAAW,CAAC,OAAO,CAAC,EAC3C,kBAAkB,EAClB,MAAM,EACN,kBAAkB,CAAC,kBAAkB,EACrC,cAAc,CAAC,iBAAiB,CACjC;CAAG;AAEJ,MAAM,WAAW,4BAA4B,CAC3C,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,CAC7E,SAAQ,YAAY,CACpB,uBAAuB,EACvB,kBAAkB,EAClB,MAAM,EACN,kBAAkB,CAAC,kBAAkB,EACrC,cAAc,CAAC,iBAAiB,CACjC;CAAG;AAEJ,MAAM,WAAW,kCAAkC,CACjD,mBAAmB,SAAS,kBAAkB,CAAC,kBAAkB,CACjE,SAAQ,YAAY,CACpB,sBAAsB,CAAC,sBAAsB,EAC7C,kBAAkB,EAClB,MAAM,EACN,mBAAmB,EACnB,cAAc,CAAC,iBAAiB,CACjC;CAAG;AAEJ,MAAM,MAAM,yBAAyB,CAAC,aAAa,SAAS,YAAY,IACtE,aAAa,CAAC,wBAAwB,CAAC,CAAC;AAE1C,MAAM,MAAM,qBAAqB,CAAC,aAAa,SAAS,YAAY,IAClE,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAEtC,MAAM,MAAM,qBAAqB,CAAC,aAAa,SAAS,YAAY,IAClE,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAEtC,MAAM,MAAM,IAAI,CAAC,aAAa,SAAS,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,MAAM,eAAe,CAAC,aAAa,SAAS,YAAY,IAC5D,aAAa,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,aAAa,SAAS,YAAY,IACvD,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,WAAW,SACvC,kBAAkB,CAAC,UAAU,CAAC;KACjC,CAAC;CACH,GACG,WAAW,GACX,aAAa,SAAS;IAClB,QAAQ,CAAC,kBAAkB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC3D,GACD,kBAAkB,CAAC,UAAU,GAC7B,KAAK,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,aAAa,SAAS,YAAY,IACvD,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,WAAW,SACvC,kBAAkB,CAAC,UAAU,CAAC;KACjC,CAAC;CACH,GACG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAC1B,aAAa,SAAS;IAClB,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,WAAW,SAC9B,kBAAkB,CAAC,aAAa,CAAC;KACpC,CAAC;CACH,GACD,WAAW,GACX,KAAK,CAAC;AAEd,MAAM,MAAM,aAAa,CAAC,aAAa,SAAS,YAAY,IAC1D,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,cAAc,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KACvE,CAAC;CACH,GACG,cAAc,GACd,KAAK,CAAC;AAEZ,MAAM,MAAM,WAAW,CAAC,aAAa,SAAS,YAAY,IACxD,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,YAAY,CAAC;KACrC,CAAC;CACH,GACG,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAC7C,KAAK,CAAC;AAEZ,MAAM,MAAM,IAAI,CAAC,aAAa,SAAS,YAAY,IAAI,aAAa,SAAS;IAC3E,QAAQ,CAAC,kBAAkB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC3D,GACG,UAAU,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GACjC,qBAAqB,CAAC,aAAa,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAClE,MAAM,KAAK,EACX,GAAG,CACJ,GACD,KAAK,GACL,KAAK,CAAC;AAEZ,MAAM,MAAM,OAAO,CAAC,aAAa,SAAS,YAAY,IACpD,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC3D,GACG,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,GACpC,qBAAqB,CAAC,aAAa,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAClE,GAAG,EACH,MAAM,QAAQ,CACf,GACD,OAAO,CAAC,QAAQ,CAAC,GACjB,KAAK,CAAC;AAEd,MAAM,MAAM,WAAW,CAAC,aAAa,SAAS,YAAY,IACxD,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC3D,GACG,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,GACpC,qBAAqB,CAAC,aAAa,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAClE,MAAM,KAAK,EACX,GAAG,CACJ,GACD,KAAK,GACL,KAAK,CAAC;AAEd,MAAM,MAAM,cAAc,CAAC,aAAa,SAAS,YAAY,IAC3D,aAAa,SAAS;IACpB,QAAQ,CAAC,kBAAkB,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CAC3D,GACG,aAAa,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,GACvC,qBAAqB,CAAC,aAAa,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAClE,GAAG,EACH,MAAM,QAAQ,CACf,GACD,QAAQ,GACR,KAAK,CAAC;AAEd,MAAM,MAAM,KAAK,CAAC,aAAa,SAAS,YAAY,IAClD,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAErC,MAAM,MAAM,YAAY,CAAC,aAAa,SAAS,YAAY,IACzD,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;AAExC,MAAM,MAAM,QAAQ,CAClB,aAAa,SAAS,YAAY,EAClC,KAAK,SAAS,MAAM,IAClB,OAAO,CAAC,aAAa,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAErD,MAAM,MAAM,0BAA0B,CACpC,aAAa,SAAS,YAAY,EAClC,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,IAC3E,OAAO,CACT,aAAa,EACb;IAAE,QAAQ,CAAC,sBAAsB,EAAE,uBAAuB,CAAA;CAAE,CAC7D,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAC1B,aAAa,SAAS,YAAY,EAClC,aAAa,SAAS,YAAY,IAChC,OAAO,CACT,aAAa,EACb;IAAE,QAAQ,CAAC,sBAAsB,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;KAAE,CAAA;CAAE,CAC9E,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAChC,aAAa,SAAS,YAAY,EAClC,mBAAmB,SAAS,kBAAkB,CAAC,kBAAkB,IAC/D,OAAO,CACT,aAAa,EACb;IAAE,QAAQ,CAAC,kBAAkB,EAAE,mBAAmB,CAAA;CAAE,CACrD,CAAC;AAEF,MAAM,MAAM,WAAW,CACrB,aAAa,SAAS,YAAY,EAClC,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,IAC/B,OAAO,CAAC,aAAa,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAuJrD;;;;;GAKG;AACH,KAAK,oBAAoB,CACvB,cAAc,SAAS,kBAAkB,CAAC,UAAU,IAClD,gBAAgB,SAAS,MAAM,cAAc,GAC7C;IAAE,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAA;CAAE,GAClC,OAAO,CAAC;AA4GZ,eAAO,MAAM,WAAW;WA1Md,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAkJ6D,CAAC;AAC9E,eAAO,MAAM,aAAa;WA3MhB,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAsJf,CAAC;AACF,eAAO,MAAM,oBAAoB;WA/FvB,KAAK,SAAS,MAAM,QACpB,eAAe,SAAS,kBAAkB,CAAC,UAAU,EAC3D,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,eAAe,SAAS,kBAAkB,CAAC,UAAU,EAC3D,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CA0Cf,CAAC;AACF,eAAO,MAAM,sBAAsB;WAnGzB,KAAK,SAAS,MAAM,QACpB,eAAe,SAAS,kBAAkB,CAAC,UAAU,EAC3D,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,eAAe,SAAS,kBAAkB,CAAC,UAAU,EAC3D,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACpC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CA8Cf,CAAC;AACF,eAAO,MAAM,cAAc;WAvNjB,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAkKf,CAAC;AACF,eAAO,MAAM,gBAAgB;WA3NnB,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAsKf,CAAC;AACF,eAAO,MAAM,YAAY;WA/Nf,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAuK+D,CAAC;AAChF,eAAO,MAAM,cAAc;WAhOjB,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CA2Kf,CAAC;AAEF,eAAO,MAAM,gBAAgB;WArOnB,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAgLf,CAAC;AACF,eAAO,MAAM,kBAAkB;WAzOrB,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;;;;;;;;WAWb,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;sBAGvB,KAAK;eACZ,KAAK;;;;;;;WAUN,KAAK,SAAS,MAAM,QACpB,WAAW,SAAS,kBAAkB,CAAC,UAAU,EACvD,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;;;;;;WAc/B,KAAK,SAAS,MAAM,EAC1B,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;;;eAI9B,KAAK;;;;;;;CAoLf,CAAC;AAEF,KAAK,wBAAwB,GAAG,cAAc,CAAC,iBAAiB,GAAG;IACjE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;CAC5B,CAAC;AAEF,KAAK,aAAa,GACd,MAAM,GACN,aAAa,GACb,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,CAAC;AAEZ;;;;;GAKG;AACH,KAAK,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAChE,OAAO,GACP;IAAE,QAAQ,EAAE,MAAM,IAAI,MAAM,IAAI,GAAG,aAAa,GAAG,KAAK;CAAE,CAAC;AAE/D;;;GAGG;AACH,KAAK,aAAa,CAAC,IAAI,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAEnD,KAAK,WAAW,CACd,WAAW,SAAS,cAAc,CAAC,iBAAiB,EACpD,SAAS,SAAS,cAAc,CAAC,iBAAiB,IAChD,WAAW,SAAS;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;CAC/D,GACG,cAAc,CAAC,eAAe,CAAC,eAAe,GAAG,uCAAuC,CAAC,GACzF,WAAW,CAAC;AAEhB;;;;GAIG;AACH,KAAK,YAAY,CACf,WAAW,SAAS,aAAa,CAAC,wBAAwB,CAAC,EAC3D,SAAS,SAAS,cAAc,CAAC,iBAAiB,IAChD;IACF,QAAQ,EAAE,KAAK,IAAI,MAAM,WAAW,GAAG,WAAW,CAChD,WAAW,CAAC,KAAK,CAAC,EAClB,SAAS,CACV;CACF,CAAC;AAEF;;GAEG;AACH,KAAK,QAAQ,CACX,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,EACzD,aAAa,SAAS,YAAY,EAClC,IAAI,IACF;IACF,gBAAgB,SAAS,OAAO,GAC5B,aAAa,SAAS,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAClE,KAAK,GACL,gBAAgB,GAClB,KAAK;CACV,SAAS,CAAC,KAAK,CAAC,GACb,IAAI,GACJ,KAAK,CAAC;AAEV,KAAK,YAAY,CACf,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,EAC7E,OAAO,SAAS,OAAO,CAAC,MAAM,EAC9B,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,IACvD,QAAQ,CACV,gBAAgB,EAChB,uBAAuB,CAAC,cAAc,CAAC,EACvC,CACE,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,WAAW,SAAS,kBAAkB,CAAC,UAAU,GAAG,EAAE,EAC5D,QAAQ,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,EAC/C,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,EAE7C,OAAO,EAAE;IACP,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,QAAQ,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KACnE,eAAe,CAClB,uBAAuB,EACvB,QAAQ,EACR,KAAK,EACL,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,EACzD,gBAAgB,EAChB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAC3C,CACF,CAAC;AAEF,KAAK,qBAAqB,CACxB,OAAO,SAAS,OAAO,CAAC,MAAM,EAC9B,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,IACvD,QAAQ,CACV,gBAAgB,EAChB,OAAO,EACP,CACE,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,eAAe,SAAS,kBAAkB,CAAC,UAAU,GAAG,EAAE,EAChE,KAAK,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,EAC5C,MAAM,SAAS,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,EAE7C,OAAO,EAAE;IACP,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,eAAe,GACnC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KACvE,eAAe,CAClB,sBAAsB,CAAC,WAAW,EAClC,QAAQ,EACR,KAAK,EACL,kBAAkB,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,EACnE,gBAAgB,EAChB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAC/C,CACF,CAAC;AAEF,UAAU,gBAAgB;IACxB,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC,WAAW,CAAC;IACzD,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC,cAAc,CAAC;IAC/D,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,YAAY,CAAC;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,UAAU,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAClB,OAAO,SAAS,OAAO,CAAC,MAAM,EAC9B,gBAAgB,SAAS,cAAc,CAAC,iBAAiB,IACvD;IACF,QAAQ,EAAE,QAAQ,IAAI,MAAM,gBAAgB,GAAG,YAAY,CACzD,gBAAgB,CAAC,QAAQ,CAAC,EAC1B,OAAO,EACP,gBAAgB,CACjB;CACF,GAAG;IACF,QAAQ,CAAC,oBAAoB,EAAE,qBAAqB,CAClD,OAAO,EACP,gBAAgB,CACjB,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,SAAS,SAAS,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,CAC7D,KAAK,CAAC,WAAW,SAAS,aAAa,CAAC,wBAAwB,CAAC,EAEjE,MAAM,EAAE;QACN,QAAQ,CAAC,UAAU,EAAE,WAAW,GAC9B,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;KAC/C,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAC9B,QAAQ,CACX,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAChC,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,CACvC,CAAC;CACH,CAAC;AAqCF;;GAEG;AACH,eAAO,MAAM,MAAM,GAChB,OAAO,SAAS,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,QACjD,KAAK,CAAC,WAAW,SAAS,aAAa,CAAC,wBAAwB,CAAC,UACxD;IAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAEvC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9E,KAAK,0BAA0B,CAC7B,uBAAuB,SAAS,sBAAsB,CAAC,sBAAsB,EAC7E,mBAAmB,SAAS,kBAAkB,IAE9C,sBAAsB,CAAC,eAAe,CAAC,uBAAuB,CAAC,SAAS,OAAO,GAC3E,eAAe,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,CAAC,GAC9C,sBAAsB,CAAC,eAAe,CAAC,uBAAuB,CAAC,SAAS,UAAU,GAChF,kBAAkB,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,CAAC,GACjD,sBAAsB,CAAC,eAAe,CAAC,uBAAuB,CAAC,SAAS,QAAQ,GAC9E,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,CAAC,GAC/C,KAAK,CAAC;AAEhB,KAAK,WAAW,CAAC,CAAC,IAChB,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,mBAAmB,EAAE,GAAG,CAAC,GACpE,CAAC,GACD,CAAC,SAAS,kBAAkB,CACxB,GAAG,EACH,MAAM,CAAC,SAAS,mBAAmB,EACnC,GAAG,CACJ,GACD,CAAC,GACD,CAAC,SAAS,gBAAgB,CACtB,GAAG,EACH,MAAM,CAAC,SAAS,mBAAmB,EACnC,GAAG,CACJ,GACD,CAAC,GACD,KAAK,CAAC;AAEhB,KAAK,cAAc,CAAC,CAAC,IACnB,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GACxC,CAAC,GACD,CAAC,SAAS,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAC7C,CAAC,GACD,CAAC,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAC3C,CAAC,GACD,KAAK,CAAC;AAuChB,eAAO,MAAM,iBAAiB,GA3B1B,CAAC,SAAS,0BAA0B;;;YAGnC,cAEI,KAAK,SAAS,MAAM;;;wFAyB5B,CAAC;AACF,eAAO,MAAM,mBAAmB,GA/B5B,CAAC,SAAS,0BAA0B;;;cAGnC,cAEI,KAAK,SAAS,MAAM;;;0FA6B5B,CAAC;AACF,eAAO,MAAM,oBAAoB,GAnC7B,CAAC,SAAS,0BAA0B;;;YAGnC,cAEI,KAAK,SAAS,MAAM;;;wFAiC5B,CAAC;AACF,eAAO,MAAM,sBAAsB,GAvC/B,CAAC,SAAS,0BAA0B;;;cAGnC,cAEI,KAAK,SAAS,MAAM;;;0FAqC5B,CAAC;AACF,eAAO,MAAM,kBAAkB,GA3C3B,CAAC,SAAS,0BAA0B;;;YAGnC,cAEI,KAAK,SAAS,MAAM;;;wFAyC5B,CAAC;AACF,eAAO,MAAM,oBAAoB,GA/C7B,CAAC,SAAS,0BAA0B;;;cAGnC,cAEI,KAAK,SAAS,MAAM;;;0FA6C5B,CAAC;AACF,eAAO,MAAM,sBAAsB,GAnD/B,CAAC,SAAS,0BAA0B;;;YAGnC,cAEI,KAAK,SAAS,MAAM;;;wFAiD5B,CAAC;AACF,eAAO,MAAM,wBAAwB,GAvDjC,CAAC,SAAS,0BAA0B;;;cAGnC,cAEI,KAAK,SAAS,MAAM;;;0FAqD5B,CAAC"}
1
+ {"version":3,"file":"FunctionSpec.d.ts","sourceRoot":"","sources":["../src/FunctionSpec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  import { Confect, ConfectPaginated, Convex } from "./FunctionProvenance.js";
3
+ import { isMiddlewareSpec } from "./MiddlewareSpec.js";
3
4
  import { validateConfectFunctionIdentifier } from "./Identifier.js";
4
5
  import { ConvexAction, ConvexMutation, ConvexQuery, NodeAction } from "./RuntimeAndFunctionType.js";
5
6
  import * as Predicate from "effect/Predicate";
@@ -91,28 +92,48 @@ const publicAction = make(ConvexAction, "public");
91
92
  const internalAction = make(ConvexAction, "internal");
92
93
  const publicNodeAction = make(NodeAction, "public");
93
94
  const internalNodeAction = make(NodeAction, "internal");
94
- const makeExtended = (middleware) => {
95
- const extended = (makeSpec) => ({ name, description, args, returns, item, error, ...fields }) => middleware.reduce((spec, middlewareSpec) => spec.middleware(middlewareSpec), Object.assign(makeSpec({
96
- name,
97
- description,
98
- args,
99
- returns,
100
- item,
101
- error
102
- }), { fields }));
95
+ const makeExtended = (middleware, schemas = []) => {
96
+ const extended = (makeSpec, paginated = false) => ({ name, description, args, returns, item, error, ...fields }) => {
97
+ const info = {
98
+ name,
99
+ args: args ?? (() => ({})),
100
+ fields
101
+ };
102
+ const thunks = {
103
+ args,
104
+ returns: paginated ? void 0 : returns,
105
+ item: paginated ? item : void 0,
106
+ error
107
+ };
108
+ for (const wrappers of schemas) for (const key of [
109
+ "args",
110
+ "returns",
111
+ "item",
112
+ "error"
113
+ ]) {
114
+ const wrap = wrappers[key];
115
+ const thunk = thunks[key];
116
+ if (wrap !== void 0 && thunk !== void 0) thunks[key] = () => wrap(thunk, info)();
117
+ }
118
+ return middleware.reduce((spec, entry) => isMiddlewareSpec(entry) ? spec.middleware(entry) : spec.middleware(entry.spec, entry.options(info)), Object.assign(makeSpec({
119
+ name,
120
+ description,
121
+ ...thunks
122
+ }), { fields }));
123
+ };
103
124
  return {
104
125
  publicQuery: extended(publicQuery),
105
126
  publicMutation: extended(publicMutation),
106
127
  publicAction: extended(publicAction),
107
128
  publicNodeAction: extended(publicNodeAction),
108
- publicPaginatedQuery: extended(publicPaginatedQuery),
109
- extend: () => (config) => makeExtended([...middleware, ...config.middleware])
129
+ publicPaginatedQuery: extended(publicPaginatedQuery, true),
130
+ extend: () => (config) => makeExtended([...middleware, ...config.middleware], [...schemas, config.schemas ?? {}])
110
131
  };
111
132
  };
112
133
  /**
113
134
  * Public builders whose specs require and keep `Fields_`, with `middleware`.
114
135
  */
115
- const extend = () => (config) => makeExtended(config.middleware);
136
+ const extend = () => (config) => makeExtended(config.middleware, [config.schemas ?? {}]);
116
137
  const makeConvex = (runtimeAndFunctionType, functionVisibility) => () => (name) => {
117
138
  validateConfectFunctionIdentifier(name);
118
139
  return Object.assign(Object.create(Proto), {
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionSpec.js","names":["FunctionProvenance.Confect","FunctionProvenance.ConfectPaginated","RuntimeAndFunctionType.ConvexQuery","RuntimeAndFunctionType.ConvexMutation","RuntimeAndFunctionType.ConvexAction","RuntimeAndFunctionType.NodeAction","FunctionProvenance.Convex"],"sources":["../src/FunctionSpec.ts"],"sourcesContent":["import type * as MiddlewareAttachment from \"./MiddlewareAttachment.js\";\nimport type {\n DefaultFunctionArgs,\n FunctionType,\n FunctionVisibility,\n RegisteredAction,\n RegisteredMutation,\n RegisteredQuery,\n} from \"convex/server\";\nimport type * as Schema from \"effect/Schema\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport { validateConfectFunctionIdentifier } from \"./Identifier.js\";\nimport type * as MiddlewareSpec from \"./MiddlewareSpec.js\";\nimport type * as Profile from \"./Profile.js\";\nimport * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType.js\";\n\nexport const TypeId = \"~@confect/core/FunctionSpec\";\nexport type TypeId = typeof TypeId;\n\nexport const isFunctionSpec = (u: unknown): u is AnyWithProps =>\n Predicate.hasProperty(u, TypeId);\n\nexport interface FunctionSpec<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n> {\n readonly [TypeId]: TypeId;\n readonly runtimeAndFunctionType: RuntimeAndFunctionType_;\n readonly functionVisibility: FunctionVisibility_;\n readonly name: Name_;\n readonly functionProvenance: FunctionProvenance_;\n readonly middlewareSpecs: ReadonlyArray<MiddlewareSpecs_>;\n readonly middlewareAttachments: ReadonlyArray<\n MiddlewareAttachment.MiddlewareAttachment<MiddlewareSpecs_>\n >;\n}\n\nexport interface Builder<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n> extends FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_\n> {\n middleware<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec>(\n middlewareSpec: MiddlewareSpec_ &\n MiddlewareSpec.ValidateFunctionAttach<\n MiddlewareSpec_,\n RuntimeAndFunctionType_,\n FunctionProvenance_,\n MiddlewareSpecs_\n >,\n ...options: MiddlewareAttachment.Args<NoInfer<MiddlewareSpec_>>\n ): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_ | MiddlewareSpec_\n >;\n}\n\nexport interface DescribedBuilder<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n> extends Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_\n> {\n readonly description?: string;\n\n middleware<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec>(\n middlewareSpec: MiddlewareSpec_ &\n MiddlewareSpec.ValidateFunctionAttach<\n MiddlewareSpec_,\n RuntimeAndFunctionType_,\n FunctionProvenance_,\n MiddlewareSpecs_\n >,\n ...options: MiddlewareAttachment.Args<NoInfer<MiddlewareSpec_>>\n ): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_ | MiddlewareSpec_\n >;\n}\n\n/**\n * A spec built through {@link extend}, keeping its fields through middleware.\n */\nexport interface ExtendedBuilder<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n Fields_,\n> extends Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_\n> {\n readonly description?: string;\n readonly fields: Fields_;\n\n middleware<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec>(\n middlewareSpec: MiddlewareSpec_ &\n MiddlewareSpec.ValidateFunctionAttach<\n MiddlewareSpec_,\n RuntimeAndFunctionType_,\n FunctionProvenance_,\n MiddlewareSpecs_\n >,\n ...options: MiddlewareAttachment.Args<NoInfer<MiddlewareSpec_>>\n ): ExtendedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_ | MiddlewareSpec_,\n Fields_\n >;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n}\n\nexport interface AnyWithProps extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance,\n MiddlewareSpec.AnyMiddlewareSpec\n> {\n readonly description?: string;\n readonly fields?: object;\n}\n\nexport interface AnyConfect extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConfect,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyConvex extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConvex,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyWithPropsWithRuntime<\n Runtime extends RuntimeAndFunctionType.Runtime,\n> extends FunctionSpec<\n RuntimeAndFunctionType.WithRuntime<Runtime>,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyWithPropsWithFunctionType<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> extends FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyWithPropsWithFunctionProvenance<\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance_,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport type GetRuntimeAndFunctionType<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"runtimeAndFunctionType\"];\n\nexport type GetFunctionVisibility<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"functionVisibility\"];\n\nexport type GetFunctionProvenance<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"functionProvenance\"];\n\nexport type Name<FunctionSpec_ extends AnyWithProps> = FunctionSpec_[\"name\"];\n\nexport type MiddlewareSpecs<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"middlewareSpecs\"][number];\n\n/**\n * The field map declared by a Confect-provenance spec.\n */\nexport type ArgsFields<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly \"~ArgsFields\": infer ArgsFields_ extends\n FunctionProvenance.ArgsFields;\n };\n }\n ? ArgsFields_\n : FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? FunctionProvenance.ArgsFields\n : never;\n\n/**\n * The args schema assembled from a Confect-provenance spec's field map.\n */\nexport type ArgsSchema<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly \"~ArgsFields\": infer ArgsFields_ extends\n FunctionProvenance.ArgsFields;\n };\n }\n ? Schema.Struct<ArgsFields_>\n : FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly args: infer ArgsSchema_ extends\n FunctionProvenance.AnyArgsSchema;\n };\n }\n ? ArgsSchema_\n : never;\n\nexport type ReturnsSchema<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly returns: infer ReturnsSchema_ extends Schema.Codec<any, any>;\n };\n }\n ? ReturnsSchema_\n : never;\n\nexport type ErrorSchema<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly error?: infer ErrorSchema_;\n };\n }\n ? Extract<ErrorSchema_, Schema.Codec<any, any>>\n : never;\n\nexport type Args<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n}\n ? ArgsSchema<FunctionSpec_>[\"Type\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_,\n any\n >\n ? Args_\n : never;\n\nexport type Returns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? ReturnsSchema<FunctionSpec_>[\"Type\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n any,\n infer Returns_\n >\n ? Awaited<Returns_>\n : never;\n\nexport type EncodedArgs<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? ArgsSchema<FunctionSpec_>[\"Encoded\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_,\n any\n >\n ? Args_\n : never;\n\nexport type EncodedReturns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? ReturnsSchema<FunctionSpec_>[\"Encoded\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n any,\n infer Returns_\n >\n ? Returns_\n : never;\n\nexport type Error<FunctionSpec_ extends AnyWithProps> =\n ErrorSchema<FunctionSpec_>[\"Type\"];\n\nexport type EncodedError<FunctionSpec_ extends AnyWithProps> =\n ErrorSchema<FunctionSpec_>[\"Encoded\"];\n\nexport type WithName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends string,\n> = Extract<FunctionSpec_, { readonly name: Name_ }>;\n\nexport type WithRuntimeAndFunctionType<\n FunctionSpec_ extends AnyWithProps,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: RuntimeAndFunctionType_ }\n>;\n\nexport type WithFunctionType<\n FunctionSpec_ extends AnyWithProps,\n FunctionType_ extends FunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: { readonly functionType: FunctionType_ } }\n>;\n\nexport type WithFunctionProvenance<\n FunctionSpec_ extends AnyWithProps,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> = Extract<\n FunctionSpec_,\n { readonly functionProvenance: FunctionProvenance_ }\n>;\n\nexport type WithoutName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends Name<FunctionSpec_>,\n> = Exclude<FunctionSpec_, { readonly name: Name_ }>;\n\nconst Proto = {\n [TypeId]: TypeId,\n\n get middlewareSpecs() {\n return this.middlewareAttachments.map(({ spec }) => spec);\n },\n\n middleware(\n this: AnyWithProps,\n middlewareSpec: MiddlewareSpec.AnyMiddlewareSpec,\n ...options: ReadonlyArray<unknown>\n ) {\n if (this.functionProvenance._tag === \"Convex\") {\n throw new Error(\n `Plain Convex function \"${this.name}\" cannot have middleware`,\n );\n }\n const functionType = this.runtimeAndFunctionType.functionType;\n if (!middlewareSpec.functionTypes[functionType]) {\n throw new Error(\n `Middleware \"${middlewareSpec.key}\" does not declare function type \"${functionType}\" of function \"${this.name}\"`,\n );\n }\n if (\n !(\"options\" in middlewareSpec) &&\n this.middlewareAttachments.some(\n ({ spec }) => spec.key === middlewareSpec.key,\n )\n ) {\n throw new Error(\n `Middleware \"${middlewareSpec.key}\" is already attached to function \"${this.name}\"`,\n );\n }\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType: this.runtimeAndFunctionType,\n functionVisibility: this.functionVisibility,\n name: this.name,\n ...(\"description\" in this ? { description: this.description } : {}),\n ...(\"fields\" in this ? { fields: this.fields } : {}),\n functionProvenance: this.functionProvenance,\n middlewareAttachments: [\n ...this.middlewareAttachments,\n { spec: middlewareSpec, options: options[0] },\n ],\n });\n },\n} satisfies ThisType<AnyWithProps>;\n\ninterface Options {\n readonly description?: string;\n readonly name: string;\n readonly args?: () => FunctionProvenance.ArgsFields;\n readonly returns: () => Schema.Codec<any, any>;\n readonly error?: () => Schema.Codec<any, any>;\n}\n\nconst make = <\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n>(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n) => {\n function makeSpec<\n const Name_ extends string,\n const ArgsFields_ extends FunctionProvenance.ArgsFields,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args: () => ArgsFields_;\n returns: () => Returns_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args?: never;\n returns: () => Returns_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<{}, Returns_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n const ArgsFields_ extends FunctionProvenance.ArgsFields,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args: () => ArgsFields_;\n returns: () => Returns_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args?: never;\n returns: () => Returns_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<{}, Returns_, Error_>\n >;\n function makeSpec({ name, description, args, returns, error }: Options) {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n ...(description === undefined ? {} : { description }),\n functionProvenance:\n args === undefined\n ? FunctionProvenance.Confect(() => ({}), returns, error)\n : FunctionProvenance.Confect(args, returns, error),\n middlewareAttachments: [],\n });\n }\n\n return makeSpec;\n};\n\n/**\n * `Schema.Struct` fields that must not declare `paginationOpts`. Used to reject\n * a user args schema that redeclares the field the paginated constructors add\n * themselves; the check reports at the `args` thunk with an unsatisfiable type\n * when violated.\n */\ntype ForbidPaginationOpts<\n UserArgsFields extends FunctionProvenance.ArgsFields,\n> = \"paginationOpts\" extends keyof UserArgsFields\n ? { readonly paginationOpts: never }\n : unknown;\n\ninterface PaginatedOptions {\n readonly description?: string;\n readonly name: string;\n readonly args?: () => FunctionProvenance.ArgsFields;\n readonly item: () => Schema.Codec<any, any>;\n readonly error?: () => Schema.Codec<any, any>;\n}\n\nconst makePaginated = <\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n>(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n) => {\n function makeSpec<\n const Name_ extends string,\n const UserArgsFields_ extends FunctionProvenance.ArgsFields,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args: () => UserArgsFields_ & ForbidPaginationOpts<UserArgsFields_>;\n item: () => Item_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args?: never;\n item: () => Item_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<{}, Item_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n const UserArgsFields_ extends FunctionProvenance.ArgsFields,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args: () => UserArgsFields_ & ForbidPaginationOpts<UserArgsFields_>;\n item: () => Item_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args?: never;\n item: () => Item_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<{}, Item_, Error_>\n >;\n function makeSpec({\n name,\n description,\n args,\n item,\n error,\n }: PaginatedOptions) {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n ...(description === undefined ? {} : { description }),\n functionProvenance:\n args === undefined\n ? FunctionProvenance.ConfectPaginated(() => ({}), item, error)\n : FunctionProvenance.ConfectPaginated(args, item, error),\n middlewareAttachments: [],\n });\n }\n\n return makeSpec;\n};\n\nexport const publicQuery = make(RuntimeAndFunctionType.ConvexQuery, \"public\");\nexport const internalQuery = make(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const publicPaginatedQuery = makePaginated(\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n);\nexport const internalPaginatedQuery = makePaginated(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const publicMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const internalMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const publicAction = make(RuntimeAndFunctionType.ConvexAction, \"public\");\nexport const internalAction = make(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\n\nexport const publicNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const internalNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n\ntype OptionlessMiddlewareSpec = MiddlewareSpec.AnyMiddlewareSpec & {\n readonly \"~Options\": never;\n};\n\ntype BuilderOption =\n | \"name\"\n | \"description\"\n | \"args\"\n | \"returns\"\n | \"item\"\n | \"error\";\n\n/**\n * Refuses fields named after a builder option, which the builder would read as\n * that option. The conditional keeps the mapped type out of a builder call's\n * inference, which would otherwise widen the function's name to `string` when\n * reporting the error.\n */\ntype OptionFree<Type> = [keyof Type & BuilderOption] extends [never]\n ? unknown\n : { readonly [Option in keyof Type & BuilderOption]: never };\n\n/**\n * A function's fields, checked once applied, since a profile's field type can\n * branch on the function's name.\n */\ntype CheckedFields<Type> = Type & OptionFree<Type>;\n\ntype NotRepeated<\n Middleware_ extends MiddlewareSpec.AnyMiddlewareSpec,\n Inherited extends MiddlewareSpec.AnyMiddlewareSpec,\n> = Middleware_ extends {\n readonly key: infer Key extends MiddlewareSpec.Key<Inherited>;\n}\n ? MiddlewareSpec.AttachmentError<`Middleware \"${Key}\" is already attached by this profile`>\n : Middleware_;\n\n/**\n * Refuses middleware an earlier layer attached, which would throw once a\n * function is built. Each member of an element's union is checked, so an array\n * typed `(A | B)[]` is refused when either was attached.\n */\ntype NotInherited<\n Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>,\n Inherited extends MiddlewareSpec.AnyMiddlewareSpec,\n> = {\n readonly [Index in keyof Middleware_]: NotRepeated<\n Middleware_[Index],\n Inherited\n >;\n};\n\n/**\n * `never` when a profile middleware does not declare the function type.\n */\ntype Declared<\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n FunctionType_ extends FunctionType,\n Make,\n> = [\n MiddlewareSpecs_ extends unknown\n ? FunctionType_ extends MiddlewareSpec.FunctionTypes<MiddlewareSpecs_>\n ? never\n : MiddlewareSpecs_\n : never,\n] extends [never]\n ? Make\n : never;\n\ntype ExtendedMake<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n Fields_ extends Profile.Fields,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n> = Declared<\n MiddlewareSpecs_,\n RuntimeAndFunctionType_[\"functionType\"],\n <\n const Name_ extends string,\n const ArgsFields_ extends FunctionProvenance.ArgsFields = {},\n Returns_ extends Schema.Codec<any, any> = never,\n Error_ extends Schema.Codec<any, any> = never,\n >(\n options: {\n readonly name: Name_;\n readonly description?: string;\n readonly args?: () => ArgsFields_;\n readonly returns: () => Returns_;\n readonly error?: () => Error_;\n } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, ArgsFields_>>>,\n ) => ExtendedBuilder<\n RuntimeAndFunctionType_,\n \"public\",\n Name_,\n FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>,\n MiddlewareSpecs_,\n Profile.Apply<Fields_, Name_, ArgsFields_>\n >\n>;\n\ntype ExtendedMakePaginated<\n Fields_ extends Profile.Fields,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n> = Declared<\n MiddlewareSpecs_,\n \"query\",\n <\n const Name_ extends string,\n const UserArgsFields_ extends FunctionProvenance.ArgsFields = {},\n Item_ extends Schema.Codec<any, any> = never,\n Error_ extends Schema.Codec<any, any> = never,\n >(\n options: {\n readonly name: Name_;\n readonly description?: string;\n readonly args?: () => UserArgsFields_ &\n ForbidPaginationOpts<UserArgsFields_>;\n readonly item: () => Item_;\n readonly error?: () => Error_;\n } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, UserArgsFields_>>>,\n ) => ExtendedBuilder<\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n Name_,\n FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>,\n MiddlewareSpecs_,\n Profile.Apply<Fields_, Name_, UserArgsFields_>\n >\n>;\n\ninterface ExtendedRuntimes {\n readonly publicQuery: RuntimeAndFunctionType.ConvexQuery;\n readonly publicMutation: RuntimeAndFunctionType.ConvexMutation;\n readonly publicAction: RuntimeAndFunctionType.ConvexAction;\n readonly publicNodeAction: RuntimeAndFunctionType.NodeAction;\n}\n\n/**\n * A profile's five public builders and its own `extend`.\n */\nexport type Extended<\n Fields_ extends Profile.Fields,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n> = {\n readonly [Builder_ in keyof ExtendedRuntimes]: ExtendedMake<\n ExtendedRuntimes[Builder_],\n Fields_,\n MiddlewareSpecs_\n >;\n} & {\n readonly publicPaginatedQuery: ExtendedMakePaginated<\n Fields_,\n MiddlewareSpecs_\n >;\n /**\n * Require more fields and attach more middleware after this profile's.\n */\n extend<Extension extends Profile.Fields = Profile.NoFields>(): <\n const Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>,\n >(\n config: {\n readonly middleware: Middleware_ &\n NotInherited<Middleware_, MiddlewareSpecs_>;\n } & OptionFree<Extension[\"Type\"]>,\n ) => Extended<\n Profile.Both<Fields_, Extension>,\n MiddlewareSpecs_ | Middleware_[number]\n >;\n};\n\nconst makeExtended = (\n middleware: ReadonlyArray<MiddlewareSpec.AnyMiddlewareSpec>,\n): Extended<any, any> => {\n // `OptionFree` keeps option names out of the fields; this split is the\n // runtime's fallback.\n const extended =\n (makeSpec: (options: never) => object): any =>\n ({\n name,\n description,\n args,\n returns,\n item,\n error,\n ...fields\n }: Record<string, unknown>) =>\n middleware.reduce(\n (spec: any, middlewareSpec) => spec.middleware(middlewareSpec),\n Object.assign(\n makeSpec({ name, description, args, returns, item, error } as never),\n { fields },\n ),\n );\n\n return {\n publicQuery: extended(publicQuery),\n publicMutation: extended(publicMutation),\n publicAction: extended(publicAction),\n publicNodeAction: extended(publicNodeAction),\n publicPaginatedQuery: extended(publicPaginatedQuery),\n extend: () => (config) =>\n makeExtended([...middleware, ...config.middleware]),\n };\n};\n\n/**\n * Public builders whose specs require and keep `Fields_`, with `middleware`.\n */\nexport const extend =\n <Fields_ extends Profile.Fields = Profile.NoFields>() =>\n <const Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>>(\n config: { readonly middleware: Middleware_ } & OptionFree<Fields_[\"Type\"]>,\n ) =>\n makeExtended(config.middleware) as Extended<Fields_, Middleware_[number]>;\n\ntype MatchingRegisteredFunction<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n> =\n RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"query\"\n ? RegisteredQuery<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"mutation\"\n ? RegisteredMutation<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"action\"\n ? RegisteredAction<FunctionVisibility_, any, any>\n : never;\n\ntype ExtractArgs<F> =\n F extends RegisteredQuery<any, infer A extends DefaultFunctionArgs, any>\n ? A\n : F extends RegisteredMutation<\n any,\n infer A extends DefaultFunctionArgs,\n any\n >\n ? A\n : F extends RegisteredAction<\n any,\n infer A extends DefaultFunctionArgs,\n any\n >\n ? A\n : never;\n\ntype ExtractReturns<F> =\n F extends RegisteredQuery<any, any, infer R>\n ? R\n : F extends RegisteredMutation<any, any, infer R>\n ? R\n : F extends RegisteredAction<any, any, infer R>\n ? R\n : never;\n\nconst makeConvex =\n <\n RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n >(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n ) =>\n <\n F extends MatchingRegisteredFunction<\n RuntimeAndFunctionType_,\n FunctionVisibility_\n >,\n >() =>\n <const Name_ extends string>(\n name: Name_,\n ): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Convex<ExtractArgs<F>, ExtractReturns<F>>\n > => {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n functionProvenance: FunctionProvenance.Convex<\n ExtractArgs<F>,\n ExtractReturns<F>\n >(),\n middlewareAttachments: [],\n }) as any;\n };\n\nexport const convexPublicQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n);\nexport const convexInternalQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const convexPublicMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const convexInternalMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const convexPublicAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"public\",\n);\nexport const convexInternalAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\nexport const convexPublicNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const convexInternalNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"FunctionSpec.js","names":["FunctionProvenance.Confect","FunctionProvenance.ConfectPaginated","RuntimeAndFunctionType.ConvexQuery","RuntimeAndFunctionType.ConvexMutation","RuntimeAndFunctionType.ConvexAction","RuntimeAndFunctionType.NodeAction","MiddlewareSpec.isMiddlewareSpec","FunctionProvenance.Convex"],"sources":["../src/FunctionSpec.ts"],"sourcesContent":["import type * as MiddlewareAttachment from \"./MiddlewareAttachment.js\";\nimport type {\n DefaultFunctionArgs,\n FunctionType,\n FunctionVisibility,\n RegisteredAction,\n RegisteredMutation,\n RegisteredQuery,\n} from \"convex/server\";\nimport type * as Schema from \"effect/Schema\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport { validateConfectFunctionIdentifier } from \"./Identifier.js\";\nimport * as MiddlewareSpec from \"./MiddlewareSpec.js\";\nimport type * as Profile from \"./Profile.js\";\nimport * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType.js\";\n\nexport const TypeId = \"~@confect/core/FunctionSpec\";\nexport type TypeId = typeof TypeId;\n\nexport const isFunctionSpec = (u: unknown): u is AnyWithProps =>\n Predicate.hasProperty(u, TypeId);\n\nexport interface FunctionSpec<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n> {\n readonly [TypeId]: TypeId;\n readonly runtimeAndFunctionType: RuntimeAndFunctionType_;\n readonly functionVisibility: FunctionVisibility_;\n readonly name: Name_;\n readonly functionProvenance: FunctionProvenance_;\n readonly middlewareSpecs: ReadonlyArray<MiddlewareSpecs_>;\n readonly middlewareAttachments: ReadonlyArray<\n MiddlewareAttachment.MiddlewareAttachment<MiddlewareSpecs_>\n >;\n}\n\nexport interface Builder<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n> extends FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_\n> {\n middleware<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec>(\n middlewareSpec: MiddlewareSpec_ &\n MiddlewareSpec.ValidateFunctionAttach<\n MiddlewareSpec_,\n RuntimeAndFunctionType_,\n FunctionProvenance_,\n MiddlewareSpecs_\n >,\n ...options: MiddlewareAttachment.Args<NoInfer<MiddlewareSpec_>>\n ): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_ | MiddlewareSpec_\n >;\n}\n\nexport interface DescribedBuilder<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec = never,\n> extends Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_\n> {\n readonly description?: string;\n\n middleware<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec>(\n middlewareSpec: MiddlewareSpec_ &\n MiddlewareSpec.ValidateFunctionAttach<\n MiddlewareSpec_,\n RuntimeAndFunctionType_,\n FunctionProvenance_,\n MiddlewareSpecs_\n >,\n ...options: MiddlewareAttachment.Args<NoInfer<MiddlewareSpec_>>\n ): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_ | MiddlewareSpec_\n >;\n}\n\n/**\n * A spec built through {@link extend}, keeping its fields through middleware.\n */\nexport interface ExtendedBuilder<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n Name_ extends string,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n Fields_,\n> extends Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_\n> {\n readonly description?: string;\n readonly fields: Fields_;\n\n middleware<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec>(\n middlewareSpec: MiddlewareSpec_ &\n MiddlewareSpec.ValidateFunctionAttach<\n MiddlewareSpec_,\n RuntimeAndFunctionType_,\n FunctionProvenance_,\n MiddlewareSpecs_\n >,\n ...options: MiddlewareAttachment.Args<NoInfer<MiddlewareSpec_>>\n ): ExtendedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance_,\n MiddlewareSpecs_ | MiddlewareSpec_,\n Fields_\n >;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n}\n\nexport interface AnyWithProps extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance,\n MiddlewareSpec.AnyMiddlewareSpec\n> {\n readonly description?: string;\n readonly fields?: object;\n}\n\nexport interface AnyConfect extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConfect,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyConvex extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance.AnyConvex,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyWithPropsWithRuntime<\n Runtime extends RuntimeAndFunctionType.Runtime,\n> extends FunctionSpec<\n RuntimeAndFunctionType.WithRuntime<Runtime>,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyWithPropsWithFunctionType<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> extends FunctionSpec<\n RuntimeAndFunctionType_,\n FunctionVisibility,\n string,\n FunctionProvenance.FunctionProvenance,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport interface AnyWithPropsWithFunctionProvenance<\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> extends FunctionSpec<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility,\n string,\n FunctionProvenance_,\n MiddlewareSpec.AnyMiddlewareSpec\n> {}\n\nexport type GetRuntimeAndFunctionType<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"runtimeAndFunctionType\"];\n\nexport type GetFunctionVisibility<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"functionVisibility\"];\n\nexport type GetFunctionProvenance<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"functionProvenance\"];\n\nexport type Name<FunctionSpec_ extends AnyWithProps> = FunctionSpec_[\"name\"];\n\nexport type MiddlewareSpecs<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_[\"middlewareSpecs\"][number];\n\n/**\n * The field map declared by a Confect-provenance spec.\n */\nexport type ArgsFields<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly \"~ArgsFields\": infer ArgsFields_ extends\n FunctionProvenance.ArgsFields;\n };\n }\n ? ArgsFields_\n : FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? FunctionProvenance.ArgsFields\n : never;\n\n/**\n * The args schema assembled from a Confect-provenance spec's field map.\n */\nexport type ArgsSchema<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly \"~ArgsFields\": infer ArgsFields_ extends\n FunctionProvenance.ArgsFields;\n };\n }\n ? Schema.Struct<ArgsFields_>\n : FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly args: infer ArgsSchema_ extends\n FunctionProvenance.AnyArgsSchema;\n };\n }\n ? ArgsSchema_\n : never;\n\nexport type ReturnsSchema<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly returns: infer ReturnsSchema_ extends Schema.Codec<any, any>;\n };\n }\n ? ReturnsSchema_\n : never;\n\nexport type ErrorSchema<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: {\n readonly _tag: \"Confect\";\n readonly error?: infer ErrorSchema_;\n };\n }\n ? Extract<ErrorSchema_, Schema.Codec<any, any>>\n : never;\n\nexport type Args<FunctionSpec_ extends AnyWithProps> = FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n}\n ? ArgsSchema<FunctionSpec_>[\"Type\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_,\n any\n >\n ? Args_\n : never;\n\nexport type Returns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? ReturnsSchema<FunctionSpec_>[\"Type\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n any,\n infer Returns_\n >\n ? Awaited<Returns_>\n : never;\n\nexport type EncodedArgs<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? ArgsSchema<FunctionSpec_>[\"Encoded\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n infer Args_,\n any\n >\n ? Args_\n : never;\n\nexport type EncodedReturns<FunctionSpec_ extends AnyWithProps> =\n FunctionSpec_ extends {\n readonly functionProvenance: { readonly _tag: \"Confect\" };\n }\n ? ReturnsSchema<FunctionSpec_>[\"Encoded\"]\n : GetFunctionProvenance<FunctionSpec_> extends FunctionProvenance.Convex<\n any,\n infer Returns_\n >\n ? Returns_\n : never;\n\nexport type Error<FunctionSpec_ extends AnyWithProps> =\n ErrorSchema<FunctionSpec_>[\"Type\"];\n\nexport type EncodedError<FunctionSpec_ extends AnyWithProps> =\n ErrorSchema<FunctionSpec_>[\"Encoded\"];\n\nexport type WithName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends string,\n> = Extract<FunctionSpec_, { readonly name: Name_ }>;\n\nexport type WithRuntimeAndFunctionType<\n FunctionSpec_ extends AnyWithProps,\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: RuntimeAndFunctionType_ }\n>;\n\nexport type WithFunctionType<\n FunctionSpec_ extends AnyWithProps,\n FunctionType_ extends FunctionType,\n> = Extract<\n FunctionSpec_,\n { readonly runtimeAndFunctionType: { readonly functionType: FunctionType_ } }\n>;\n\nexport type WithFunctionProvenance<\n FunctionSpec_ extends AnyWithProps,\n FunctionProvenance_ extends FunctionProvenance.FunctionProvenance,\n> = Extract<\n FunctionSpec_,\n { readonly functionProvenance: FunctionProvenance_ }\n>;\n\nexport type WithoutName<\n FunctionSpec_ extends AnyWithProps,\n Name_ extends Name<FunctionSpec_>,\n> = Exclude<FunctionSpec_, { readonly name: Name_ }>;\n\nconst Proto = {\n [TypeId]: TypeId,\n\n get middlewareSpecs() {\n return this.middlewareAttachments.map(({ spec }) => spec);\n },\n\n middleware(\n this: AnyWithProps,\n middlewareSpec: MiddlewareSpec.AnyMiddlewareSpec,\n ...options: ReadonlyArray<unknown>\n ) {\n if (this.functionProvenance._tag === \"Convex\") {\n throw new Error(\n `Plain Convex function \"${this.name}\" cannot have middleware`,\n );\n }\n const functionType = this.runtimeAndFunctionType.functionType;\n if (!middlewareSpec.functionTypes[functionType]) {\n throw new Error(\n `Middleware \"${middlewareSpec.key}\" does not declare function type \"${functionType}\" of function \"${this.name}\"`,\n );\n }\n if (\n !(\"options\" in middlewareSpec) &&\n this.middlewareAttachments.some(\n ({ spec }) => spec.key === middlewareSpec.key,\n )\n ) {\n throw new Error(\n `Middleware \"${middlewareSpec.key}\" is already attached to function \"${this.name}\"`,\n );\n }\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType: this.runtimeAndFunctionType,\n functionVisibility: this.functionVisibility,\n name: this.name,\n ...(\"description\" in this ? { description: this.description } : {}),\n ...(\"fields\" in this ? { fields: this.fields } : {}),\n functionProvenance: this.functionProvenance,\n middlewareAttachments: [\n ...this.middlewareAttachments,\n { spec: middlewareSpec, options: options[0] },\n ],\n });\n },\n} satisfies ThisType<AnyWithProps>;\n\ninterface Options {\n readonly description?: string;\n readonly name: string;\n readonly args?: () => FunctionProvenance.ArgsFields;\n readonly returns: () => Schema.Codec<any, any>;\n readonly error?: () => Schema.Codec<any, any>;\n}\n\nconst make = <\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n>(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n) => {\n function makeSpec<\n const Name_ extends string,\n const ArgsFields_ extends FunctionProvenance.ArgsFields,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args: () => ArgsFields_;\n returns: () => Returns_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args?: never;\n returns: () => Returns_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<{}, Returns_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n const ArgsFields_ extends FunctionProvenance.ArgsFields,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args: () => ArgsFields_;\n returns: () => Returns_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args?: never;\n returns: () => Returns_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Confect<{}, Returns_, Error_>\n >;\n function makeSpec({ name, description, args, returns, error }: Options) {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n ...(description === undefined ? {} : { description }),\n functionProvenance:\n args === undefined\n ? FunctionProvenance.Confect(() => ({}), returns, error)\n : FunctionProvenance.Confect(args, returns, error),\n middlewareAttachments: [],\n });\n }\n\n return makeSpec;\n};\n\n/**\n * `Schema.Struct` fields that must not declare `paginationOpts`. Used to reject\n * a user args schema that redeclares the field the paginated constructors add\n * themselves; the check reports at the `args` thunk with an unsatisfiable type\n * when violated.\n */\ntype ForbidPaginationOpts<\n UserArgsFields extends FunctionProvenance.ArgsFields,\n> = \"paginationOpts\" extends keyof UserArgsFields\n ? { readonly paginationOpts: never }\n : unknown;\n\ninterface PaginatedOptions {\n readonly description?: string;\n readonly name: string;\n readonly args?: () => FunctionProvenance.ArgsFields;\n readonly item: () => Schema.Codec<any, any>;\n readonly error?: () => Schema.Codec<any, any>;\n}\n\nconst makePaginated = <\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n>(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n) => {\n function makeSpec<\n const Name_ extends string,\n const UserArgsFields_ extends FunctionProvenance.ArgsFields,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args: () => UserArgsFields_ & ForbidPaginationOpts<UserArgsFields_>;\n item: () => Item_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: never;\n args?: never;\n item: () => Item_;\n error?: () => Error_;\n }): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<{}, Item_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n const UserArgsFields_ extends FunctionProvenance.ArgsFields,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args: () => UserArgsFields_ & ForbidPaginationOpts<UserArgsFields_>;\n item: () => Item_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>\n >;\n function makeSpec<\n const Name_ extends string,\n Item_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n >(options: {\n name: Name_;\n description?: FunctionVisibility_ extends \"public\" ? string : never;\n args?: never;\n item: () => Item_;\n error?: () => Error_;\n }): DescribedBuilder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.ConfectPaginated<{}, Item_, Error_>\n >;\n function makeSpec({\n name,\n description,\n args,\n item,\n error,\n }: PaginatedOptions) {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n ...(description === undefined ? {} : { description }),\n functionProvenance:\n args === undefined\n ? FunctionProvenance.ConfectPaginated(() => ({}), item, error)\n : FunctionProvenance.ConfectPaginated(args, item, error),\n middlewareAttachments: [],\n });\n }\n\n return makeSpec;\n};\n\nexport const publicQuery = make(RuntimeAndFunctionType.ConvexQuery, \"public\");\nexport const internalQuery = make(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const publicPaginatedQuery = makePaginated(\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n);\nexport const internalPaginatedQuery = makePaginated(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const publicMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const internalMutation = make(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const publicAction = make(RuntimeAndFunctionType.ConvexAction, \"public\");\nexport const internalAction = make(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\n\nexport const publicNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const internalNodeAction = make(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n\ntype OptionlessMiddlewareSpec = MiddlewareSpec.AnyMiddlewareSpec & {\n readonly \"~Options\": never;\n};\n\ntype BuilderOption =\n | \"name\"\n | \"description\"\n | \"args\"\n | \"returns\"\n | \"item\"\n | \"error\";\n\n/**\n * Refuses fields named after a builder option, which the builder would read as\n * that option. The conditional keeps the mapped type out of a builder call's\n * inference, which would otherwise widen the function's name to `string` when\n * reporting the error.\n */\ntype OptionFree<Type> = [keyof Type & BuilderOption] extends [never]\n ? unknown\n : { readonly [Option in keyof Type & BuilderOption]: never };\n\n/**\n * A function's fields, checked once applied, since a profile's field type can\n * branch on the function's name.\n */\ntype CheckedFields<Type> = Type & OptionFree<Type>;\n\ntype NotRepeated<\n Middleware_,\n Inherited extends MiddlewareSpec.AnyMiddlewareSpec,\n> = Middleware_ extends {\n readonly key: infer Key extends MiddlewareSpec.Key<Inherited>;\n}\n ? MiddlewareSpec.AttachmentError<`Middleware \"${Key}\" is already attached by this profile`>\n : Middleware_;\n\n/**\n * Refuses a middleware without options that an earlier layer attached, as it is\n * attached at most once; one with options may repeat. Each member of an\n * element's union is checked, so an array typed `(A | B)[]` is refused when\n * either was attached.\n */\ntype NotInherited<\n Middleware_ extends ReadonlyArray<unknown>,\n Inherited extends MiddlewareSpec.AnyMiddlewareSpec,\n> = {\n readonly [Index in keyof Middleware_]: NotRepeated<\n Middleware_[Index],\n Inherited\n >;\n};\n\n/**\n * A profile's middleware: a spec without options, or an attachment.\n */\ntype ProfileMiddleware<FieldsType> =\n | OptionlessMiddlewareSpec\n | Profile.Attachment<MiddlewareSpec.AnyMiddlewareSpec, FieldsType>;\n\ntype SpecOf<Middleware_> =\n Middleware_ extends Profile.Attachment<infer MiddlewareSpec_, any>\n ? MiddlewareSpec_\n : Extract<Middleware_, MiddlewareSpec.AnyMiddlewareSpec>;\n\n/**\n * `never` when a profile middleware does not declare the function type.\n */\ntype Declared<\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n FunctionType_ extends FunctionType,\n Make,\n> = [\n MiddlewareSpecs_ extends unknown\n ? FunctionType_ extends MiddlewareSpec.FunctionTypes<MiddlewareSpecs_>\n ? never\n : MiddlewareSpecs_\n : never,\n] extends [never]\n ? Make\n : never;\n\ntype Wrapped<\n Layers extends ReadonlyArray<Profile.Transforms>,\n Key extends keyof Profile.Transforms,\n Input,\n> = Layers extends readonly [\n infer First extends Profile.Transforms,\n ...infer Rest extends ReadonlyArray<Profile.Transforms>,\n]\n ? Wrapped<\n Rest,\n Key,\n Key extends keyof First\n ? [Input] extends [never]\n ? never\n : Profile.Transform<First[Key], Input>\n : Input\n >\n : Input;\n\ntype UserArgs<A> = [A] extends [never] ? {} : A;\n\ntype ExtendedMake<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n Fields_ extends Profile.Fields,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n Layers extends ReadonlyArray<Profile.Transforms>,\n> = Declared<\n MiddlewareSpecs_,\n RuntimeAndFunctionType_[\"functionType\"],\n <\n const Name_ extends string,\n const ArgsFields_ extends FunctionProvenance.ArgsFields = never,\n Returns_ extends Schema.Codec<any, any> = never,\n Error_ extends Schema.Codec<any, any> = never,\n >(\n options: {\n readonly name: Name_;\n readonly description?: string;\n readonly args?: () => ArgsFields_;\n readonly returns: () => Returns_;\n readonly error?: () => Error_;\n } & NoInfer<\n CheckedFields<Profile.Apply<Fields_, Name_, UserArgs<ArgsFields_>>>\n >,\n ) => ExtendedBuilder<\n RuntimeAndFunctionType_,\n \"public\",\n Name_,\n FunctionProvenance.Confect<\n UserArgs<Wrapped<Layers, \"args\", ArgsFields_>>,\n Wrapped<Layers, \"returns\", Returns_>,\n Wrapped<Layers, \"error\", Error_>\n >,\n MiddlewareSpecs_,\n Profile.Apply<Fields_, Name_, UserArgs<ArgsFields_>>\n >\n>;\n\ntype ExtendedMakePaginated<\n Fields_ extends Profile.Fields,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n Layers extends ReadonlyArray<Profile.Transforms>,\n> = Declared<\n MiddlewareSpecs_,\n \"query\",\n <\n const Name_ extends string,\n const UserArgsFields_ extends FunctionProvenance.ArgsFields = never,\n Item_ extends Schema.Codec<any, any> = never,\n Error_ extends Schema.Codec<any, any> = never,\n >(\n options: {\n readonly name: Name_;\n readonly description?: string;\n readonly args?: () => UserArgsFields_ &\n ForbidPaginationOpts<UserArgsFields_>;\n readonly item: () => Item_;\n readonly error?: () => Error_;\n } & NoInfer<\n CheckedFields<Profile.Apply<Fields_, Name_, UserArgs<UserArgsFields_>>>\n >,\n ) => ExtendedBuilder<\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n Name_,\n FunctionProvenance.ConfectPaginated<\n UserArgs<Wrapped<Layers, \"args\", UserArgsFields_>>,\n Wrapped<Layers, \"item\", Item_>,\n Wrapped<Layers, \"error\", Error_>\n >,\n MiddlewareSpecs_,\n Profile.Apply<Fields_, Name_, UserArgs<UserArgsFields_>>\n >\n>;\n\ninterface ExtendedRuntimes {\n readonly publicQuery: RuntimeAndFunctionType.ConvexQuery;\n readonly publicMutation: RuntimeAndFunctionType.ConvexMutation;\n readonly publicAction: RuntimeAndFunctionType.ConvexAction;\n readonly publicNodeAction: RuntimeAndFunctionType.NodeAction;\n}\n\n/**\n * A profile's five public builders and its own `extend`.\n */\nexport type Extended<\n Fields_ extends Profile.Fields,\n MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,\n Layers extends ReadonlyArray<Profile.Transforms> = [],\n> = {\n readonly [Builder_ in keyof ExtendedRuntimes]: ExtendedMake<\n ExtendedRuntimes[Builder_],\n Fields_,\n MiddlewareSpecs_,\n Layers\n >;\n} & {\n readonly publicPaginatedQuery: ExtendedMakePaginated<\n Fields_,\n MiddlewareSpecs_,\n Layers\n >;\n /**\n * Require more fields and attach more middleware after this profile's.\n */\n extend<\n Extension extends Profile.Fields = Profile.NoFields,\n Transforms extends Profile.Transforms = {},\n >(): <\n const Middleware_ extends ReadonlyArray<\n ProfileMiddleware<\n Profile.Apply<Profile.Both<Fields_, Extension>, string, any>\n >\n >,\n >(\n config: {\n readonly middleware: Middleware_ &\n NotInherited<Middleware_, MiddlewareSpecs_>;\n } & OptionFree<Extension[\"Type\"]> &\n Profile.SchemaConfig<\n Transforms,\n Profile.Apply<Profile.Both<Fields_, Extension>, string, any>\n >,\n ) => Extended<\n Profile.Both<Fields_, Extension>,\n MiddlewareSpecs_ | SpecOf<Middleware_[number]>,\n [...Layers, Transforms]\n >;\n};\n\ntype RuntimeWrappers = Partial<\n Record<\n keyof Profile.Transforms,\n (thunk: () => any, info: Profile.Info<any>) => () => any\n >\n>;\n\nconst makeExtended = (\n middleware: ReadonlyArray<ProfileMiddleware<any>>,\n schemas: ReadonlyArray<RuntimeWrappers> = [],\n): Extended<any, any> => {\n // `OptionFree` keeps option names out of the fields; this split is the\n // runtime's fallback.\n const extended =\n (makeSpec: (options: never) => object, paginated = false): any =>\n ({\n name,\n description,\n args,\n returns,\n item,\n error,\n ...fields\n }: Record<string, unknown>) => {\n const info = {\n name,\n args: args ?? (() => ({})),\n fields,\n } as Profile.Info<unknown>;\n const thunks = {\n args,\n returns: paginated ? undefined : returns,\n item: paginated ? item : undefined,\n error,\n } as Partial<Record<keyof Profile.Transforms, () => any>>;\n for (const wrappers of schemas) {\n for (const key of [\"args\", \"returns\", \"item\", \"error\"] as const) {\n const wrap = wrappers[key];\n const thunk = thunks[key];\n if (wrap !== undefined && thunk !== undefined) {\n thunks[key] = () => wrap(thunk, info)();\n }\n }\n }\n return middleware.reduce(\n (spec: any, entry) =>\n MiddlewareSpec.isMiddlewareSpec(entry)\n ? spec.middleware(entry)\n : spec.middleware(entry.spec, entry.options(info)),\n Object.assign(makeSpec({ name, description, ...thunks } as never), {\n fields,\n }),\n );\n };\n\n return {\n publicQuery: extended(publicQuery),\n publicMutation: extended(publicMutation),\n publicAction: extended(publicAction),\n publicNodeAction: extended(publicNodeAction),\n publicPaginatedQuery: extended(publicPaginatedQuery, true),\n extend:\n () =>\n (config: {\n middleware: ReadonlyArray<ProfileMiddleware<any>>;\n schemas?: RuntimeWrappers;\n }) =>\n makeExtended(\n [...middleware, ...config.middleware],\n [...schemas, config.schemas ?? {}],\n ),\n };\n};\n\n/**\n * Public builders whose specs require and keep `Fields_`, with `middleware`.\n */\nexport const extend =\n <\n Fields_ extends Profile.Fields = Profile.NoFields,\n Transforms extends Profile.Transforms = {},\n >() =>\n <\n const Middleware_ extends ReadonlyArray<\n ProfileMiddleware<Profile.Apply<Fields_, string, any>>\n >,\n >(\n config: {\n readonly middleware: Middleware_;\n } & OptionFree<Fields_[\"Type\"]> &\n Profile.SchemaConfig<Transforms, Profile.Apply<Fields_, string, any>>,\n ) =>\n makeExtended(config.middleware, [config.schemas ?? {}]) as Extended<\n Fields_,\n SpecOf<Middleware_[number]>,\n [Transforms]\n >;\n\ntype MatchingRegisteredFunction<\n RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n> =\n RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"query\"\n ? RegisteredQuery<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"mutation\"\n ? RegisteredMutation<FunctionVisibility_, any, any>\n : RuntimeAndFunctionType.GetFunctionType<RuntimeAndFunctionType_> extends \"action\"\n ? RegisteredAction<FunctionVisibility_, any, any>\n : never;\n\ntype ExtractArgs<F> =\n F extends RegisteredQuery<any, infer A extends DefaultFunctionArgs, any>\n ? A\n : F extends RegisteredMutation<\n any,\n infer A extends DefaultFunctionArgs,\n any\n >\n ? A\n : F extends RegisteredAction<\n any,\n infer A extends DefaultFunctionArgs,\n any\n >\n ? A\n : never;\n\ntype ExtractReturns<F> =\n F extends RegisteredQuery<any, any, infer R>\n ? R\n : F extends RegisteredMutation<any, any, infer R>\n ? R\n : F extends RegisteredAction<any, any, infer R>\n ? R\n : never;\n\nconst makeConvex =\n <\n RuntimeAndFunctionType_ extends\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n FunctionVisibility_ extends FunctionVisibility,\n >(\n runtimeAndFunctionType: RuntimeAndFunctionType_,\n functionVisibility: FunctionVisibility_,\n ) =>\n <\n F extends MatchingRegisteredFunction<\n RuntimeAndFunctionType_,\n FunctionVisibility_\n >,\n >() =>\n <const Name_ extends string>(\n name: Name_,\n ): Builder<\n RuntimeAndFunctionType_,\n FunctionVisibility_,\n Name_,\n FunctionProvenance.Convex<ExtractArgs<F>, ExtractReturns<F>>\n > => {\n validateConfectFunctionIdentifier(name);\n\n return Object.assign(Object.create(Proto), {\n runtimeAndFunctionType,\n functionVisibility,\n name,\n functionProvenance: FunctionProvenance.Convex<\n ExtractArgs<F>,\n ExtractReturns<F>\n >(),\n middlewareAttachments: [],\n }) as any;\n };\n\nexport const convexPublicQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"public\",\n);\nexport const convexInternalQuery = makeConvex(\n RuntimeAndFunctionType.ConvexQuery,\n \"internal\",\n);\nexport const convexPublicMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"public\",\n);\nexport const convexInternalMutation = makeConvex(\n RuntimeAndFunctionType.ConvexMutation,\n \"internal\",\n);\nexport const convexPublicAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"public\",\n);\nexport const convexInternalAction = makeConvex(\n RuntimeAndFunctionType.ConvexAction,\n \"internal\",\n);\nexport const convexPublicNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"public\",\n);\nexport const convexInternalNodeAction = makeConvex(\n RuntimeAndFunctionType.NodeAction,\n \"internal\",\n);\n"],"mappings":"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"}
package/dist/Profile.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import type * as Schema from "effect/Schema";
2
+ import type * as FunctionProvenance from "./FunctionProvenance.js";
3
+ import type * as MiddlewareSpec from "./MiddlewareSpec.js";
1
4
  /**
2
5
  * A type-level function from a function's name and args fields to the fields a
3
6
  * profile's builders require. Read `this["Name"]` and `this["Args"]` directly
@@ -22,4 +25,64 @@ export type Apply<Fields_ extends Fields, Name_ extends string, Args_> = (Fields
22
25
  export interface Both<Base extends Fields, Extension extends Fields> extends Fields {
23
26
  readonly Type: Apply<Base, this["Name"], this["Args"]> & Apply<Extension, this["Name"], this["Args"]>;
24
27
  }
28
+ /**
29
+ * What an attachment's options factory sees. `args` stays a thunk.
30
+ */
31
+ export interface Info<FieldsType> {
32
+ readonly name: string;
33
+ readonly args: () => FunctionProvenance.ArgsFields;
34
+ readonly fields: FieldsType;
35
+ }
36
+ export interface Attachment<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec, FieldsType> {
37
+ readonly spec: MiddlewareSpec_;
38
+ readonly options: (info: Info<FieldsType>) => MiddlewareSpec.Options<MiddlewareSpec_>;
39
+ }
40
+ /**
41
+ * A middleware without options has none to compute and is attached at most
42
+ * once, so it joins a profile's list directly.
43
+ */
44
+ type TakesOptions<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec> = [
45
+ MiddlewareSpec.WithoutOptions<MiddlewareSpec_>
46
+ ] extends [never] ? unknown : MiddlewareSpec.AttachmentError<`Middleware "${MiddlewareSpec.Key<MiddlewareSpec_>}" takes no options, so list it without Profile.attach`>;
47
+ /**
48
+ * Attach a middleware that takes options to every function a profile builds,
49
+ * with options computed from each function's fields.
50
+ */
51
+ export declare const attach: <MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec, FieldsType>(spec: MiddlewareSpec_ & TakesOptions<MiddlewareSpec_>, options: (info: Info<FieldsType>) => MiddlewareSpec.Options<NoInfer<MiddlewareSpec_>>) => Attachment<MiddlewareSpec_, FieldsType>;
52
+ /**
53
+ * A type function for a schema wrapper, applied to each declared codec.
54
+ */
55
+ export interface SchemaTransform {
56
+ readonly Input: Schema.Codec<unknown, unknown>;
57
+ readonly Type: Schema.Codec<any, any>;
58
+ }
59
+ /**
60
+ * Args wrappers transform the declared field map, before Struct composition.
61
+ */
62
+ export interface ArgsTransform {
63
+ readonly Input: unknown;
64
+ readonly Type: FunctionProvenance.ArgsFields;
65
+ }
66
+ export interface Transforms {
67
+ readonly args?: ArgsTransform;
68
+ readonly returns?: SchemaTransform;
69
+ readonly item?: SchemaTransform;
70
+ readonly error?: SchemaTransform;
71
+ }
72
+ export type Transform<T, Input> = (T & {
73
+ readonly Input: Input;
74
+ })["Type" & keyof T];
75
+ export type Wrappers<T extends Transforms, FieldsType> = {
76
+ readonly [K in keyof T]-?: K extends keyof Transforms ? <Input extends (K extends "args" ? FunctionProvenance.ArgsFields : Schema.Codec<any, any>)>(thunk: () => Input, info: Info<FieldsType>) => () => Transform<T[K], Input> : never;
77
+ } & {
78
+ readonly [K in Exclude<keyof Transforms, keyof T>]?: never;
79
+ };
80
+ export type SchemaConfig<T extends Transforms, FieldsType> = [keyof T] extends [
81
+ never
82
+ ] ? {
83
+ readonly schemas?: never;
84
+ } : {
85
+ readonly schemas: Wrappers<T, FieldsType>;
86
+ };
87
+ export {};
25
88
  //# sourceMappingURL=Profile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../src/Profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAS,SAAQ,MAAM;IACtC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,KAAK,CACf,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,EACpB,KAAK,IACH,CAAC,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,IAAI,CACnB,IAAI,SAAS,MAAM,EACnB,SAAS,SAAS,MAAM,CACxB,SAAQ,MAAM;IACd,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GACpD,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CAChD"}
1
+ {"version":3,"file":"Profile.d.ts","sourceRoot":"","sources":["../src/Profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAS,SAAQ,MAAM;IACtC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;CACnB;AAED,MAAM,MAAM,KAAK,CACf,OAAO,SAAS,MAAM,EACtB,KAAK,SAAS,MAAM,EACpB,KAAK,IACH,CAAC,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,IAAI,CACnB,IAAI,SAAS,MAAM,EACnB,SAAS,SAAS,MAAM,CACxB,SAAQ,MAAM;IACd,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GACpD,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,IAAI,CAAC,UAAU;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,kBAAkB,CAAC,UAAU,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU,CACzB,eAAe,SAAS,cAAc,CAAC,iBAAiB,EACxD,UAAU;IAEV,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAChB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KACnB,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,KAAK,YAAY,CAAC,eAAe,SAAS,cAAc,CAAC,iBAAiB,IAAI;IAC5E,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC;CAC/C,SAAS,CAAC,KAAK,CAAC,GACb,OAAO,GACP,cAAc,CAAC,eAAe,CAAC,eAAe,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,uDAAuD,CAAC,CAAC;AAE9I;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,eAAe,SAAS,cAAc,CAAC,iBAAiB,EACxD,UAAU,QAEJ,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC,WAC5C,CACP,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KACnB,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KACpD,UAAU,CAAC,eAAe,EAAE,UAAU,CAAwB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC;CAC9C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,MAAM,GACtE,MAAM,CAAC,CAAC,CAAC;AAEX,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,IAAI;IACvD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,UAAU,GACjD,CACE,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,GAC3B,kBAAkB,CAAC,UAAU,GAC7B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAE3B,KAAK,EAAE,MAAM,KAAK,EAClB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KACnB,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GACjC,KAAK;CACV,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK;CAAE,CAAC;AAEnE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS;IAC7E,KAAK;CACN,GACG;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;CAAE,CAAC"}
package/dist/Profile.js CHANGED
@@ -1,7 +1,15 @@
1
1
  import { __exportAll } from "./_virtual/_rolldown/runtime.js";
2
2
  //#region src/Profile.ts
3
- var Profile_exports = /* @__PURE__ */ __exportAll({});
3
+ var Profile_exports = /* @__PURE__ */ __exportAll({ attach: () => attach });
4
+ /**
5
+ * Attach a middleware that takes options to every function a profile builds,
6
+ * with options computed from each function's fields.
7
+ */
8
+ const attach = (spec, options) => ({
9
+ spec,
10
+ options
11
+ });
4
12
  //#endregion
5
- export { Profile_exports };
13
+ export { Profile_exports, attach };
6
14
 
7
15
  //# sourceMappingURL=Profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.js","names":[],"sources":["../src/Profile.ts"],"sourcesContent":["/**\n * A type-level function from a function's name and args fields to the fields a\n * profile's builders require. Read `this[\"Name\"]` and `this[\"Args\"]` directly\n * in `Type`, passing them to a type alias; a nested object type cannot name\n * `this`.\n */\nexport interface Fields {\n readonly Name: string;\n // `unknown`, not `ArgsFields`: an index signature here would leak into\n // `keyof this[\"Args\"]`.\n readonly Args: unknown;\n readonly Type: object;\n}\n\nexport interface NoFields extends Fields {\n readonly Type: {};\n}\n\nexport type Apply<\n Fields_ extends Fields,\n Name_ extends string,\n Args_,\n> = (Fields_ & { readonly Name: Name_; readonly Args: Args_ })[\"Type\"];\n\n/**\n * A base profile's fields and its extension's, for one function.\n */\nexport interface Both<\n Base extends Fields,\n Extension extends Fields,\n> extends Fields {\n readonly Type: Apply<Base, this[\"Name\"], this[\"Args\"]> &\n Apply<Extension, this[\"Name\"], this[\"Args\"]>;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Profile.js","names":[],"sources":["../src/Profile.ts"],"sourcesContent":["import type * as Schema from \"effect/Schema\";\nimport type * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport type * as MiddlewareSpec from \"./MiddlewareSpec.js\";\n\n/**\n * A type-level function from a function's name and args fields to the fields a\n * profile's builders require. Read `this[\"Name\"]` and `this[\"Args\"]` directly\n * in `Type`, passing them to a type alias; a nested object type cannot name\n * `this`.\n */\nexport interface Fields {\n readonly Name: string;\n // `unknown`, not `ArgsFields`: an index signature here would leak into\n // `keyof this[\"Args\"]`.\n readonly Args: unknown;\n readonly Type: object;\n}\n\nexport interface NoFields extends Fields {\n readonly Type: {};\n}\n\nexport type Apply<\n Fields_ extends Fields,\n Name_ extends string,\n Args_,\n> = (Fields_ & { readonly Name: Name_; readonly Args: Args_ })[\"Type\"];\n\n/**\n * A base profile's fields and its extension's, for one function.\n */\nexport interface Both<\n Base extends Fields,\n Extension extends Fields,\n> extends Fields {\n readonly Type: Apply<Base, this[\"Name\"], this[\"Args\"]> &\n Apply<Extension, this[\"Name\"], this[\"Args\"]>;\n}\n\n/**\n * What an attachment's options factory sees. `args` stays a thunk.\n */\nexport interface Info<FieldsType> {\n readonly name: string;\n readonly args: () => FunctionProvenance.ArgsFields;\n readonly fields: FieldsType;\n}\n\nexport interface Attachment<\n MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec,\n FieldsType,\n> {\n readonly spec: MiddlewareSpec_;\n readonly options: (\n info: Info<FieldsType>,\n ) => MiddlewareSpec.Options<MiddlewareSpec_>;\n}\n\n/**\n * A middleware without options has none to compute and is attached at most\n * once, so it joins a profile's list directly.\n */\ntype TakesOptions<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec> = [\n MiddlewareSpec.WithoutOptions<MiddlewareSpec_>,\n] extends [never]\n ? unknown\n : MiddlewareSpec.AttachmentError<`Middleware \"${MiddlewareSpec.Key<MiddlewareSpec_>}\" takes no options, so list it without Profile.attach`>;\n\n/**\n * Attach a middleware that takes options to every function a profile builds,\n * with options computed from each function's fields.\n */\nexport const attach = <\n MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec,\n FieldsType,\n>(\n spec: MiddlewareSpec_ & TakesOptions<MiddlewareSpec_>,\n options: (\n info: Info<FieldsType>,\n ) => MiddlewareSpec.Options<NoInfer<MiddlewareSpec_>>,\n): Attachment<MiddlewareSpec_, FieldsType> => ({ spec, options });\n\n/**\n * A type function for a schema wrapper, applied to each declared codec.\n */\nexport interface SchemaTransform {\n readonly Input: Schema.Codec<unknown, unknown>;\n readonly Type: Schema.Codec<any, any>;\n}\n\n/**\n * Args wrappers transform the declared field map, before Struct composition.\n */\nexport interface ArgsTransform {\n readonly Input: unknown;\n readonly Type: FunctionProvenance.ArgsFields;\n}\n\nexport interface Transforms {\n readonly args?: ArgsTransform;\n readonly returns?: SchemaTransform;\n readonly item?: SchemaTransform;\n readonly error?: SchemaTransform;\n}\n\nexport type Transform<T, Input> = (T & { readonly Input: Input })[\"Type\" &\n keyof T];\n\nexport type Wrappers<T extends Transforms, FieldsType> = {\n readonly [K in keyof T]-?: K extends keyof Transforms\n ? <\n Input extends (K extends \"args\"\n ? FunctionProvenance.ArgsFields\n : Schema.Codec<any, any>),\n >(\n thunk: () => Input,\n info: Info<FieldsType>,\n ) => () => Transform<T[K], Input>\n : never;\n} & { readonly [K in Exclude<keyof Transforms, keyof T>]?: never };\n\nexport type SchemaConfig<T extends Transforms, FieldsType> = [keyof T] extends [\n never,\n]\n ? { readonly schemas?: never }\n : { readonly schemas: Wrappers<T, FieldsType> };\n"],"mappings":";;;;;;;AAwEA,MAAa,UAIX,MACA,aAG6C;CAAE;CAAM;AAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gaganref/confect-core",
3
- "version": "10.3.1-fork.20",
3
+ "version": "10.3.1-fork.22",
4
4
  "peerDependencies": {
5
5
  "convex": "^1.46.0",
6
6
  "effect": "^4.0.0"
@@ -11,7 +11,7 @@ import type * as Schema from "effect/Schema";
11
11
  import * as Predicate from "effect/Predicate";
12
12
  import * as FunctionProvenance from "./FunctionProvenance.js";
13
13
  import { validateConfectFunctionIdentifier } from "./Identifier.js";
14
- import type * as MiddlewareSpec from "./MiddlewareSpec.js";
14
+ import * as MiddlewareSpec from "./MiddlewareSpec.js";
15
15
  import type * as Profile from "./Profile.js";
16
16
  import * as RuntimeAndFunctionType from "./RuntimeAndFunctionType.js";
17
17
 
@@ -696,7 +696,7 @@ type OptionFree<Type> = [keyof Type & BuilderOption] extends [never]
696
696
  type CheckedFields<Type> = Type & OptionFree<Type>;
697
697
 
698
698
  type NotRepeated<
699
- Middleware_ extends MiddlewareSpec.AnyMiddlewareSpec,
699
+ Middleware_,
700
700
  Inherited extends MiddlewareSpec.AnyMiddlewareSpec,
701
701
  > = Middleware_ extends {
702
702
  readonly key: infer Key extends MiddlewareSpec.Key<Inherited>;
@@ -705,12 +705,13 @@ type NotRepeated<
705
705
  : Middleware_;
706
706
 
707
707
  /**
708
- * Refuses middleware an earlier layer attached, which would throw once a
709
- * function is built. Each member of an element's union is checked, so an array
710
- * typed `(A | B)[]` is refused when either was attached.
708
+ * Refuses a middleware without options that an earlier layer attached, as it is
709
+ * attached at most once; one with options may repeat. Each member of an
710
+ * element's union is checked, so an array typed `(A | B)[]` is refused when
711
+ * either was attached.
711
712
  */
712
713
  type NotInherited<
713
- Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>,
714
+ Middleware_ extends ReadonlyArray<unknown>,
714
715
  Inherited extends MiddlewareSpec.AnyMiddlewareSpec,
715
716
  > = {
716
717
  readonly [Index in keyof Middleware_]: NotRepeated<
@@ -719,6 +720,18 @@ type NotInherited<
719
720
  >;
720
721
  };
721
722
 
723
+ /**
724
+ * A profile's middleware: a spec without options, or an attachment.
725
+ */
726
+ type ProfileMiddleware<FieldsType> =
727
+ | OptionlessMiddlewareSpec
728
+ | Profile.Attachment<MiddlewareSpec.AnyMiddlewareSpec, FieldsType>;
729
+
730
+ type SpecOf<Middleware_> =
731
+ Middleware_ extends Profile.Attachment<infer MiddlewareSpec_, any>
732
+ ? MiddlewareSpec_
733
+ : Extract<Middleware_, MiddlewareSpec.AnyMiddlewareSpec>;
734
+
722
735
  /**
723
736
  * `never` when a profile middleware does not declare the function type.
724
737
  */
@@ -736,16 +749,38 @@ type Declared<
736
749
  ? Make
737
750
  : never;
738
751
 
752
+ type Wrapped<
753
+ Layers extends ReadonlyArray<Profile.Transforms>,
754
+ Key extends keyof Profile.Transforms,
755
+ Input,
756
+ > = Layers extends readonly [
757
+ infer First extends Profile.Transforms,
758
+ ...infer Rest extends ReadonlyArray<Profile.Transforms>,
759
+ ]
760
+ ? Wrapped<
761
+ Rest,
762
+ Key,
763
+ Key extends keyof First
764
+ ? [Input] extends [never]
765
+ ? never
766
+ : Profile.Transform<First[Key], Input>
767
+ : Input
768
+ >
769
+ : Input;
770
+
771
+ type UserArgs<A> = [A] extends [never] ? {} : A;
772
+
739
773
  type ExtendedMake<
740
774
  RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,
741
775
  Fields_ extends Profile.Fields,
742
776
  MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,
777
+ Layers extends ReadonlyArray<Profile.Transforms>,
743
778
  > = Declared<
744
779
  MiddlewareSpecs_,
745
780
  RuntimeAndFunctionType_["functionType"],
746
781
  <
747
782
  const Name_ extends string,
748
- const ArgsFields_ extends FunctionProvenance.ArgsFields = {},
783
+ const ArgsFields_ extends FunctionProvenance.ArgsFields = never,
749
784
  Returns_ extends Schema.Codec<any, any> = never,
750
785
  Error_ extends Schema.Codec<any, any> = never,
751
786
  >(
@@ -755,26 +790,33 @@ type ExtendedMake<
755
790
  readonly args?: () => ArgsFields_;
756
791
  readonly returns: () => Returns_;
757
792
  readonly error?: () => Error_;
758
- } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, ArgsFields_>>>,
793
+ } & NoInfer<
794
+ CheckedFields<Profile.Apply<Fields_, Name_, UserArgs<ArgsFields_>>>
795
+ >,
759
796
  ) => ExtendedBuilder<
760
797
  RuntimeAndFunctionType_,
761
798
  "public",
762
799
  Name_,
763
- FunctionProvenance.Confect<ArgsFields_, Returns_, Error_>,
800
+ FunctionProvenance.Confect<
801
+ UserArgs<Wrapped<Layers, "args", ArgsFields_>>,
802
+ Wrapped<Layers, "returns", Returns_>,
803
+ Wrapped<Layers, "error", Error_>
804
+ >,
764
805
  MiddlewareSpecs_,
765
- Profile.Apply<Fields_, Name_, ArgsFields_>
806
+ Profile.Apply<Fields_, Name_, UserArgs<ArgsFields_>>
766
807
  >
767
808
  >;
768
809
 
769
810
  type ExtendedMakePaginated<
770
811
  Fields_ extends Profile.Fields,
771
812
  MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,
813
+ Layers extends ReadonlyArray<Profile.Transforms>,
772
814
  > = Declared<
773
815
  MiddlewareSpecs_,
774
816
  "query",
775
817
  <
776
818
  const Name_ extends string,
777
- const UserArgsFields_ extends FunctionProvenance.ArgsFields = {},
819
+ const UserArgsFields_ extends FunctionProvenance.ArgsFields = never,
778
820
  Item_ extends Schema.Codec<any, any> = never,
779
821
  Error_ extends Schema.Codec<any, any> = never,
780
822
  >(
@@ -785,14 +827,20 @@ type ExtendedMakePaginated<
785
827
  ForbidPaginationOpts<UserArgsFields_>;
786
828
  readonly item: () => Item_;
787
829
  readonly error?: () => Error_;
788
- } & NoInfer<CheckedFields<Profile.Apply<Fields_, Name_, UserArgsFields_>>>,
830
+ } & NoInfer<
831
+ CheckedFields<Profile.Apply<Fields_, Name_, UserArgs<UserArgsFields_>>>
832
+ >,
789
833
  ) => ExtendedBuilder<
790
834
  RuntimeAndFunctionType.ConvexQuery,
791
835
  "public",
792
836
  Name_,
793
- FunctionProvenance.ConfectPaginated<UserArgsFields_, Item_, Error_>,
837
+ FunctionProvenance.ConfectPaginated<
838
+ UserArgs<Wrapped<Layers, "args", UserArgsFields_>>,
839
+ Wrapped<Layers, "item", Item_>,
840
+ Wrapped<Layers, "error", Error_>
841
+ >,
794
842
  MiddlewareSpecs_,
795
- Profile.Apply<Fields_, Name_, UserArgsFields_>
843
+ Profile.Apply<Fields_, Name_, UserArgs<UserArgsFields_>>
796
844
  >
797
845
  >;
798
846
 
@@ -809,40 +857,63 @@ interface ExtendedRuntimes {
809
857
  export type Extended<
810
858
  Fields_ extends Profile.Fields,
811
859
  MiddlewareSpecs_ extends MiddlewareSpec.AnyMiddlewareSpec,
860
+ Layers extends ReadonlyArray<Profile.Transforms> = [],
812
861
  > = {
813
862
  readonly [Builder_ in keyof ExtendedRuntimes]: ExtendedMake<
814
863
  ExtendedRuntimes[Builder_],
815
864
  Fields_,
816
- MiddlewareSpecs_
865
+ MiddlewareSpecs_,
866
+ Layers
817
867
  >;
818
868
  } & {
819
869
  readonly publicPaginatedQuery: ExtendedMakePaginated<
820
870
  Fields_,
821
- MiddlewareSpecs_
871
+ MiddlewareSpecs_,
872
+ Layers
822
873
  >;
823
874
  /**
824
875
  * Require more fields and attach more middleware after this profile's.
825
876
  */
826
- extend<Extension extends Profile.Fields = Profile.NoFields>(): <
827
- const Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>,
877
+ extend<
878
+ Extension extends Profile.Fields = Profile.NoFields,
879
+ Transforms extends Profile.Transforms = {},
880
+ >(): <
881
+ const Middleware_ extends ReadonlyArray<
882
+ ProfileMiddleware<
883
+ Profile.Apply<Profile.Both<Fields_, Extension>, string, any>
884
+ >
885
+ >,
828
886
  >(
829
887
  config: {
830
888
  readonly middleware: Middleware_ &
831
889
  NotInherited<Middleware_, MiddlewareSpecs_>;
832
- } & OptionFree<Extension["Type"]>,
890
+ } & OptionFree<Extension["Type"]> &
891
+ Profile.SchemaConfig<
892
+ Transforms,
893
+ Profile.Apply<Profile.Both<Fields_, Extension>, string, any>
894
+ >,
833
895
  ) => Extended<
834
896
  Profile.Both<Fields_, Extension>,
835
- MiddlewareSpecs_ | Middleware_[number]
897
+ MiddlewareSpecs_ | SpecOf<Middleware_[number]>,
898
+ [...Layers, Transforms]
836
899
  >;
837
900
  };
838
901
 
902
+ type RuntimeWrappers = Partial<
903
+ Record<
904
+ keyof Profile.Transforms,
905
+ (thunk: () => any, info: Profile.Info<any>) => () => any
906
+ >
907
+ >;
908
+
839
909
  const makeExtended = (
840
- middleware: ReadonlyArray<MiddlewareSpec.AnyMiddlewareSpec>,
910
+ middleware: ReadonlyArray<ProfileMiddleware<any>>,
911
+ schemas: ReadonlyArray<RuntimeWrappers> = [],
841
912
  ): Extended<any, any> => {
842
913
  // `OptionFree` keeps option names out of the fields; this split is the
843
914
  // runtime's fallback.
844
915
  const extended =
845
- (makeSpec: (options: never) => object): any =>
916
+ (makeSpec: (options: never) => object, paginated = false): any =>
846
917
  ({
847
918
  name,
848
919
  description,
@@ -851,23 +922,54 @@ const makeExtended = (
851
922
  item,
852
923
  error,
853
924
  ...fields
854
- }: Record<string, unknown>) =>
855
- middleware.reduce(
856
- (spec: any, middlewareSpec) => spec.middleware(middlewareSpec),
857
- Object.assign(
858
- makeSpec({ name, description, args, returns, item, error } as never),
859
- { fields },
860
- ),
925
+ }: Record<string, unknown>) => {
926
+ const info = {
927
+ name,
928
+ args: args ?? (() => ({})),
929
+ fields,
930
+ } as Profile.Info<unknown>;
931
+ const thunks = {
932
+ args,
933
+ returns: paginated ? undefined : returns,
934
+ item: paginated ? item : undefined,
935
+ error,
936
+ } as Partial<Record<keyof Profile.Transforms, () => any>>;
937
+ for (const wrappers of schemas) {
938
+ for (const key of ["args", "returns", "item", "error"] as const) {
939
+ const wrap = wrappers[key];
940
+ const thunk = thunks[key];
941
+ if (wrap !== undefined && thunk !== undefined) {
942
+ thunks[key] = () => wrap(thunk, info)();
943
+ }
944
+ }
945
+ }
946
+ return middleware.reduce(
947
+ (spec: any, entry) =>
948
+ MiddlewareSpec.isMiddlewareSpec(entry)
949
+ ? spec.middleware(entry)
950
+ : spec.middleware(entry.spec, entry.options(info)),
951
+ Object.assign(makeSpec({ name, description, ...thunks } as never), {
952
+ fields,
953
+ }),
861
954
  );
955
+ };
862
956
 
863
957
  return {
864
958
  publicQuery: extended(publicQuery),
865
959
  publicMutation: extended(publicMutation),
866
960
  publicAction: extended(publicAction),
867
961
  publicNodeAction: extended(publicNodeAction),
868
- publicPaginatedQuery: extended(publicPaginatedQuery),
869
- extend: () => (config) =>
870
- makeExtended([...middleware, ...config.middleware]),
962
+ publicPaginatedQuery: extended(publicPaginatedQuery, true),
963
+ extend:
964
+ () =>
965
+ (config: {
966
+ middleware: ReadonlyArray<ProfileMiddleware<any>>;
967
+ schemas?: RuntimeWrappers;
968
+ }) =>
969
+ makeExtended(
970
+ [...middleware, ...config.middleware],
971
+ [...schemas, config.schemas ?? {}],
972
+ ),
871
973
  };
872
974
  };
873
975
 
@@ -875,11 +977,25 @@ const makeExtended = (
875
977
  * Public builders whose specs require and keep `Fields_`, with `middleware`.
876
978
  */
877
979
  export const extend =
878
- <Fields_ extends Profile.Fields = Profile.NoFields>() =>
879
- <const Middleware_ extends ReadonlyArray<OptionlessMiddlewareSpec>>(
880
- config: { readonly middleware: Middleware_ } & OptionFree<Fields_["Type"]>,
980
+ <
981
+ Fields_ extends Profile.Fields = Profile.NoFields,
982
+ Transforms extends Profile.Transforms = {},
983
+ >() =>
984
+ <
985
+ const Middleware_ extends ReadonlyArray<
986
+ ProfileMiddleware<Profile.Apply<Fields_, string, any>>
987
+ >,
988
+ >(
989
+ config: {
990
+ readonly middleware: Middleware_;
991
+ } & OptionFree<Fields_["Type"]> &
992
+ Profile.SchemaConfig<Transforms, Profile.Apply<Fields_, string, any>>,
881
993
  ) =>
882
- makeExtended(config.middleware) as Extended<Fields_, Middleware_[number]>;
994
+ makeExtended(config.middleware, [config.schemas ?? {}]) as Extended<
995
+ Fields_,
996
+ SpecOf<Middleware_[number]>,
997
+ [Transforms]
998
+ >;
883
999
 
884
1000
  type MatchingRegisteredFunction<
885
1001
  RuntimeAndFunctionType_ extends RuntimeAndFunctionType.RuntimeAndFunctionType,
package/src/Profile.ts CHANGED
@@ -1,3 +1,7 @@
1
+ import type * as Schema from "effect/Schema";
2
+ import type * as FunctionProvenance from "./FunctionProvenance.js";
3
+ import type * as MiddlewareSpec from "./MiddlewareSpec.js";
4
+
1
5
  /**
2
6
  * A type-level function from a function's name and args fields to the fields a
3
7
  * profile's builders require. Read `this["Name"]` and `this["Args"]` directly
@@ -32,3 +36,91 @@ export interface Both<
32
36
  readonly Type: Apply<Base, this["Name"], this["Args"]> &
33
37
  Apply<Extension, this["Name"], this["Args"]>;
34
38
  }
39
+
40
+ /**
41
+ * What an attachment's options factory sees. `args` stays a thunk.
42
+ */
43
+ export interface Info<FieldsType> {
44
+ readonly name: string;
45
+ readonly args: () => FunctionProvenance.ArgsFields;
46
+ readonly fields: FieldsType;
47
+ }
48
+
49
+ export interface Attachment<
50
+ MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec,
51
+ FieldsType,
52
+ > {
53
+ readonly spec: MiddlewareSpec_;
54
+ readonly options: (
55
+ info: Info<FieldsType>,
56
+ ) => MiddlewareSpec.Options<MiddlewareSpec_>;
57
+ }
58
+
59
+ /**
60
+ * A middleware without options has none to compute and is attached at most
61
+ * once, so it joins a profile's list directly.
62
+ */
63
+ type TakesOptions<MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec> = [
64
+ MiddlewareSpec.WithoutOptions<MiddlewareSpec_>,
65
+ ] extends [never]
66
+ ? unknown
67
+ : MiddlewareSpec.AttachmentError<`Middleware "${MiddlewareSpec.Key<MiddlewareSpec_>}" takes no options, so list it without Profile.attach`>;
68
+
69
+ /**
70
+ * Attach a middleware that takes options to every function a profile builds,
71
+ * with options computed from each function's fields.
72
+ */
73
+ export const attach = <
74
+ MiddlewareSpec_ extends MiddlewareSpec.AnyMiddlewareSpec,
75
+ FieldsType,
76
+ >(
77
+ spec: MiddlewareSpec_ & TakesOptions<MiddlewareSpec_>,
78
+ options: (
79
+ info: Info<FieldsType>,
80
+ ) => MiddlewareSpec.Options<NoInfer<MiddlewareSpec_>>,
81
+ ): Attachment<MiddlewareSpec_, FieldsType> => ({ spec, options });
82
+
83
+ /**
84
+ * A type function for a schema wrapper, applied to each declared codec.
85
+ */
86
+ export interface SchemaTransform {
87
+ readonly Input: Schema.Codec<unknown, unknown>;
88
+ readonly Type: Schema.Codec<any, any>;
89
+ }
90
+
91
+ /**
92
+ * Args wrappers transform the declared field map, before Struct composition.
93
+ */
94
+ export interface ArgsTransform {
95
+ readonly Input: unknown;
96
+ readonly Type: FunctionProvenance.ArgsFields;
97
+ }
98
+
99
+ export interface Transforms {
100
+ readonly args?: ArgsTransform;
101
+ readonly returns?: SchemaTransform;
102
+ readonly item?: SchemaTransform;
103
+ readonly error?: SchemaTransform;
104
+ }
105
+
106
+ export type Transform<T, Input> = (T & { readonly Input: Input })["Type" &
107
+ keyof T];
108
+
109
+ export type Wrappers<T extends Transforms, FieldsType> = {
110
+ readonly [K in keyof T]-?: K extends keyof Transforms
111
+ ? <
112
+ Input extends (K extends "args"
113
+ ? FunctionProvenance.ArgsFields
114
+ : Schema.Codec<any, any>),
115
+ >(
116
+ thunk: () => Input,
117
+ info: Info<FieldsType>,
118
+ ) => () => Transform<T[K], Input>
119
+ : never;
120
+ } & { readonly [K in Exclude<keyof Transforms, keyof T>]?: never };
121
+
122
+ export type SchemaConfig<T extends Transforms, FieldsType> = [keyof T] extends [
123
+ never,
124
+ ]
125
+ ? { readonly schemas?: never }
126
+ : { readonly schemas: Wrappers<T, FieldsType> };