@gaganref/confect-core 10.3.1-fork.64 → 10.3.1-fork.66

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.
@@ -68,8 +68,12 @@ export declare const action: <const Id_ extends Id, const ArgsFields_ extends Fu
68
68
  * The schema of a handle for `contract`: a string on the wire, a runnable ref
69
69
  * once decoded. Use it in a component's function args or tables. It lowers to
70
70
  * Convex's `v.function` with the contract's encoded args and returns.
71
+ * `reservedArgument` opts mutation and action handles into context forwarding.
72
+ * The host target must reserve the same argument name.
71
73
  */
72
- export declare const handle: <Contract_ extends Any>(contract: Contract_) => Schema.Codec<Handle<Contract_>, string>;
74
+ export declare const handle: <Contract_ extends Any>(contract: Contract_, options?: {
75
+ readonly reservedArgument?: Contract_["functionType"] extends "query" ? never : string;
76
+ }) => Schema.Codec<Handle<Contract_>, string>;
73
77
  type EncodedArgs<Ref_> = Ref_ extends {
74
78
  readonly _tag: "Confect";
75
79
  readonly args: {
@@ -1 +1 @@
1
- {"version":3,"file":"Callback.d.ts","sourceRoot":"","sources":["../src/Callback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Callback.d.ts","sourceRoot":"","sources":["../src/Callback.ts"],"names":[],"mappings":"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"}
package/dist/Callback.js CHANGED
@@ -29,14 +29,16 @@ const query = make("query");
29
29
  const mutation = make("mutation");
30
30
  const action = make("action");
31
31
  const isHandleOf = (contract) => (value) => isRef(value) && Predicate.hasProperty(value, HandleTypeId) && value[HandleTypeId] === contract.id;
32
- const fromText = (contract, text) => Object.assign(fromProvenance(text, contract.functionProvenance, [], text, contract.functionType), { [HandleTypeId]: contract.id });
32
+ const fromText = (contract, text, reservedArgument) => Object.assign(fromProvenance(text, contract.functionProvenance, [], text, contract.functionType, contract.functionType === "query" ? void 0 : reservedArgument), { [HandleTypeId]: contract.id });
33
33
  /**
34
34
  * The schema of a handle for `contract`: a string on the wire, a runnable ref
35
35
  * once decoded. Use it in a component's function args or tables. It lowers to
36
36
  * Convex's `v.function` with the contract's encoded args and returns.
37
+ * `reservedArgument` opts mutation and action handles into context forwarding.
38
+ * The host target must reserve the same argument name.
37
39
  */
38
- const handle = (contract) => Schema.String.annotate({ [CallbackContract]: contract }).pipe(Schema.decodeTo(Schema.declare(isHandleOf(contract), { identifier: `Callback.Handle<${contract.id}>` }), {
39
- decode: SchemaGetter.transform((text) => fromText(contract, text)),
40
+ const handle = (contract, options) => Schema.String.annotate({ [CallbackContract]: contract }).pipe(Schema.decodeTo(Schema.declare(isHandleOf(contract), { identifier: `Callback.Handle<${contract.id}>` }), {
41
+ decode: SchemaGetter.transform((text) => fromText(contract, text, options?.reservedArgument)),
40
42
  encode: SchemaGetter.transform((ref) => ref.convexFunctionName)
41
43
  }));
42
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Callback.js","names":["FunctionProvenance.Confect","Ref.isRef","Ref.fromProvenance"],"sources":["../src/Callback.ts"],"sourcesContent":["import type {\n FunctionReference,\n FunctionReference_future,\n FunctionType,\n} from \"convex/server\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaGetter from \"effect/SchemaGetter\";\nimport * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport * as Ref from \"./Ref.js\";\nimport { getFunctionReference } from \"./RefInternal.js\";\nimport { CallbackContract } from \"./internal/annotations.js\";\nimport type * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType.js\";\n\nexport const TypeId = \"~@confect/core/Callback\";\nexport type TypeId = typeof TypeId;\n\nconst HandleTypeId = \"~@confect/core/Callback/Handle\";\n\n/**\n * A contract's id, `\"<component>/<event>\"`.\n */\nexport type Id = `${string}/${string}`;\n\n/**\n * A function a component calls back into its host, declared by the component:\n * the args it sends and the returns and errors it accepts. A host proves that\n * one of its functions satisfies the contract when it creates a handle.\n */\nexport interface Contract<\n Id_ extends Id,\n FunctionType_ extends FunctionType,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n> {\n readonly [TypeId]: TypeId;\n readonly id: Id_;\n readonly functionType: FunctionType_;\n readonly functionProvenance: FunctionProvenance.Confect<\n ArgsFields_,\n Returns_,\n Error_,\n FunctionProvenance.Standard\n >;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n readonly id: Id;\n readonly functionType: FunctionType;\n readonly functionProvenance: FunctionProvenance.AnyConfect;\n}\n\nexport const isContract = (u: unknown): u is Any =>\n Predicate.hasProperty(u, TypeId) && u[TypeId] === TypeId;\n\ntype ArgsFields<Contract_ extends Any> =\n Contract_[\"functionProvenance\"] extends {\n readonly \"~ArgsFields\": infer ArgsFields_ extends\n FunctionProvenance.ArgsFields;\n }\n ? ArgsFields_\n : never;\n\ntype ReturnsSchema<Contract_ extends Any> =\n Contract_[\"functionProvenance\"][\"returns\"];\n\ntype ErrorSchema<Contract_ extends Any> =\n Contract_[\"functionProvenance\"] extends {\n readonly error?: infer ErrorSchema_;\n }\n ? Extract<ErrorSchema_, Schema.Codec<any, any>>\n : never;\n\nexport type Args<Contract_ extends Any> = Schema.Struct.Type<\n ArgsFields<Contract_>\n>;\n\nexport type Returns<Contract_ extends Any> = ReturnsSchema<Contract_>[\"Type\"];\n\nexport type Error<Contract_ extends Any> = ErrorSchema<Contract_>[\"Type\"];\n\n/**\n * A host function a component received for a contract. It is a ref, so the\n * runners and the scheduler run it with the contract's codecs, and declared\n * errors arrive by tag.\n */\nexport type Handle<Contract_ extends Any> = Ref.ConfectRef<\n Extract<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n {\n readonly runtime: \"Convex\";\n readonly functionType: Contract_[\"functionType\"];\n }\n >,\n \"internal\",\n ArgsFields<Contract_>,\n ReturnsSchema<Contract_>,\n ErrorSchema<Contract_>\n> & { readonly [HandleTypeId]: Contract_[\"id\"] };\n\nconst make =\n <FunctionType_ extends FunctionType>(functionType: FunctionType_) =>\n <\n const Id_ extends Id,\n const ArgsFields_ extends FunctionProvenance.ArgsFields = {},\n Returns_ extends Schema.Codec<any, any> = never,\n Error_ extends Schema.Codec<any, any> = never,\n >(\n id: Id_,\n options: {\n readonly args?: () => ArgsFields_;\n readonly returns: () => Returns_;\n readonly error?: () => Error_;\n },\n ): Contract<Id_, FunctionType_, ArgsFields_, Returns_, Error_> => ({\n [TypeId]: TypeId,\n id,\n functionType,\n functionProvenance: FunctionProvenance.Confect(\n options.args ?? (() => ({}) as ArgsFields_),\n options.returns,\n options.error,\n ),\n });\n\nexport const query = make(\"query\");\nexport const mutation = make(\"mutation\");\nexport const action = make(\"action\");\n\nconst isHandleOf =\n <Contract_ extends Any>(contract: Contract_) =>\n (value: unknown): value is Handle<Contract_> =>\n Ref.isRef(value) &&\n Predicate.hasProperty(value, HandleTypeId) &&\n value[HandleTypeId] === contract.id;\n\nconst fromText = <Contract_ extends Any>(\n contract: Contract_,\n text: string,\n): Handle<Contract_> =>\n Object.assign(\n Ref.fromProvenance(\n text,\n contract.functionProvenance,\n [],\n // Convex types a handle as a string that is also a function reference.\n text as unknown as FunctionReference<any, any>,\n contract.functionType,\n ),\n { [HandleTypeId]: contract.id },\n ) as unknown as Handle<Contract_>;\n\n/**\n * The schema of a handle for `contract`: a string on the wire, a runnable ref\n * once decoded. Use it in a component's function args or tables. It lowers to\n * Convex's `v.function` with the contract's encoded args and returns.\n */\nexport const handle = <Contract_ extends Any>(\n contract: Contract_,\n): Schema.Codec<Handle<Contract_>, string> =>\n Schema.String.annotate({ [CallbackContract]: contract }).pipe(\n Schema.decodeTo(\n Schema.declare(isHandleOf(contract), {\n identifier: `Callback.Handle<${contract.id}>`,\n }),\n {\n decode: SchemaGetter.transform((text: string) =>\n fromText(contract, text),\n ),\n encode: SchemaGetter.transform(\n (ref: Handle<Contract_>) => ref.convexFunctionName,\n ),\n },\n ),\n );\n\ntype EncodedArgs<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly args: {\n readonly fields: infer ArgsFields_ extends FunctionProvenance.ArgsFields;\n };\n}\n ? Schema.Struct.Encoded<ArgsFields_>\n : Ref.Args<Ref_>;\n\ntype EncodedReturns<Ref_> = Ref_ extends { readonly _tag: \"Confect\" }\n ? Ref.ReturnsSchema<Ref_>[\"Encoded\"]\n : Ref.Returns<Ref_>;\n\ntype IsAny<A> = 0 extends 1 & A ? true : false;\n\n/**\n * A Confect ref typed from values alone, such as a bound component's ref, has\n * no codec types left to compare, and middleware attachments typed without\n * their specs erase their errors. True when any variant of `Ref_` is erased.\n */\ntype IsErased<Ref_> = true extends (\n Ref_ extends { readonly _tag: \"Confect\" }\n ? IsAny<Ref.ReturnsSchema<Ref_>[\"Encoded\"]> | IsAny<Ref.EncodedError<Ref_>>\n : false\n)\n ? true\n : false;\n\n/**\n * The shape a value has on the wire: a component's ID brands become `string`,\n * since the contract cannot name the host's scope, while the host's own IDs\n * keep their table. Arrays and tuples lose `readonly`, and an optional field is\n * the same whether or not it admits `undefined`, which Convex never transmits.\n * `unknown` stays `unknown`.\n */\ntype WireShape<A> = unknown extends A\n ? A\n : A extends { readonly \"~@confect/core/ScopedId\": unknown }\n ? string\n : A extends\n | string\n | number\n | bigint\n | boolean\n | null\n | undefined\n | ArrayBuffer\n ? A\n : { -readonly [Key in keyof A]: WireShape<Exclude<A[Key], undefined>> };\n\ntype Identical<A, B> =\n (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2\n ? true\n : false;\n\ntype FirstOf<Checks extends ReadonlyArray<unknown>> = Checks extends readonly [\n infer Head,\n ...infer Rest,\n]\n ? [Head] extends [never]\n ? FirstOf<Rest>\n : Head\n : never;\n\n/**\n * Every obligation a host ref owes a contract, in the order they are reported.\n * Each is `never` when it holds.\n */\ntype Obligations<Contract_ extends Any, Ref_ extends Ref.Any> = [\n IsErased<Ref_> extends true\n ? `the ref's codecs are erased, so its encoding cannot be checked against \"${Contract_[\"id\"]}\"; pass the host's generated ref`\n : never,\n [Ref.GetFunctionType<Ref_>] extends [Contract_[\"functionType\"]]\n ? never\n : `\"${Contract_[\"id\"]}\" needs a ${Contract_[\"functionType\"]}, not a ${Ref.GetFunctionType<Ref_>}`,\n Identical<\n WireShape<EncodedArgs<Handle<Contract_>>>,\n WireShape<EncodedArgs<Ref_>>\n > extends true\n ? never\n : `the ref's encoded args differ from the args \"${Contract_[\"id\"]}\" sends`,\n Identical<\n WireShape<EncodedReturns<Handle<Contract_>>>,\n WireShape<EncodedReturns<Ref_>>\n > extends true\n ? never\n : `the ref's returns are encoded differently from the returns of \"${Contract_[\"id\"]}\"`,\n [Ref.Error<Ref_>] extends [Error<Contract_>]\n ? never\n : `the ref fails with errors \"${Contract_[\"id\"]}\" does not declare`,\n [WireShape<Ref.EncodedError<Ref_>>] extends [\n WireShape<Ref.EncodedError<Handle<Contract_>>>,\n ]\n ? never\n : `the ref's errors are encoded differently from the errors of \"${Contract_[\"id\"]}\"`,\n];\n\ntype Mismatch<Contract_ extends Any, Ref_ extends Ref.Any> = FirstOf<\n Obligations<Contract_, Ref_>\n>;\n\n/**\n * `unknown` when host ref `Ref_` satisfies `Contract_` as far as its types\n * show, otherwise an object type naming the first mismatch. The check compares\n * the types that cross the wire, with a component's IDs compared as strings.\n * The host's encoded args and returns must equal the contract's, and its\n * encoded errors (middleware errors included) must be ones the contract's\n * codecs decode. A ref whose codecs are erased cannot be checked and is\n * refused. Types miss what only the validators show, such as field names behind\n * a `Record` type, so `Callback.create` in `@confect/server` also compares the\n * compiled validators before it creates a handle.\n */\nexport type Check<Contract_ extends Any, Ref_ extends Ref.Any> = [\n Mismatch<Contract_, Ref_>,\n] extends [never]\n ? unknown\n : { readonly \"~CallbackMismatch\": Mismatch<Contract_, Ref_> };\n\n/**\n * View a ref as Convex's `FunctionReference_future`, typed with its wire args\n * and returns, for `createFunctionHandle` and clients that accept it.\n */\nexport const toFuture = <Ref_ extends Ref.Any>(\n ref: Ref_,\n): FunctionReference_future<\n Ref.GetFunctionType<Ref_>,\n Ref.GetFunctionVisibility<Ref_>,\n EncodedArgs<Ref_>,\n EncodedReturns<Ref_>\n> => getFunctionReference(ref) as never;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAcA,MAAa,SAAS;AAGtB,MAAM,eAAe;AAqCrB,MAAa,cAAc,MACzB,UAAU,YAAY,GAAA,yBAAS,KAAK,EAAA,+BAAA;AA+CtC,MAAM,QACiC,kBAOnC,IACA,aAKiE;EAChE,SAAS;CACV;CACA;CACA,oBAAoBA,QAClB,QAAQ,gBAAgB,CAAC,KACzB,QAAQ,SACR,QAAQ,KACV;AACF;AAEF,MAAa,QAAQ,KAAK,OAAO;AACjC,MAAa,WAAW,KAAK,UAAU;AACvC,MAAa,SAAS,KAAK,QAAQ;AAEnC,MAAM,cACoB,cACvB,UACCC,MAAU,KAAK,KACf,UAAU,YAAY,OAAO,YAAY,KACzC,MAAM,kBAAkB,SAAS;AAErC,MAAM,YACJ,UACA,SAEA,OAAO,OACLC,eACE,MACA,SAAS,oBACT,CAAC,GAED,MACA,SAAS,YACX,GACA,GAAG,eAAe,SAAS,GAAG,CAChC;;;;;;AAOF,MAAa,UACX,aAEA,OAAO,OAAO,SAAS,GAAG,mBAAmB,SAAS,CAAC,CAAC,CAAC,KACvD,OAAO,SACL,OAAO,QAAQ,WAAW,QAAQ,GAAG,EACnC,YAAY,mBAAmB,SAAS,GAAG,GAC7C,CAAC,GACD;CACE,QAAQ,aAAa,WAAW,SAC9B,SAAS,UAAU,IAAI,CACzB;CACA,QAAQ,aAAa,WAClB,QAA2B,IAAI,kBAClC;AACF,CACF,CACF;;;;;AA4HF,MAAa,YACX,QAMG,qBAAqB,GAAG"}
1
+ {"version":3,"file":"Callback.js","names":["FunctionProvenance.Confect","Ref.isRef","Ref.fromProvenance"],"sources":["../src/Callback.ts"],"sourcesContent":["import type {\n FunctionReference,\n FunctionReference_future,\n FunctionType,\n} from \"convex/server\";\nimport * as Predicate from \"effect/Predicate\";\nimport * as Schema from \"effect/Schema\";\nimport * as SchemaGetter from \"effect/SchemaGetter\";\nimport * as FunctionProvenance from \"./FunctionProvenance.js\";\nimport * as Ref from \"./Ref.js\";\nimport { getFunctionReference } from \"./RefInternal.js\";\nimport { CallbackContract } from \"./internal/annotations.js\";\nimport type * as RuntimeAndFunctionType from \"./RuntimeAndFunctionType.js\";\n\nexport const TypeId = \"~@confect/core/Callback\";\nexport type TypeId = typeof TypeId;\n\nconst HandleTypeId = \"~@confect/core/Callback/Handle\";\n\n/**\n * A contract's id, `\"<component>/<event>\"`.\n */\nexport type Id = `${string}/${string}`;\n\n/**\n * A function a component calls back into its host, declared by the component:\n * the args it sends and the returns and errors it accepts. A host proves that\n * one of its functions satisfies the contract when it creates a handle.\n */\nexport interface Contract<\n Id_ extends Id,\n FunctionType_ extends FunctionType,\n ArgsFields_ extends FunctionProvenance.ArgsFields,\n Returns_ extends Schema.Codec<any, any>,\n Error_ extends Schema.Codec<any, any> = never,\n> {\n readonly [TypeId]: TypeId;\n readonly id: Id_;\n readonly functionType: FunctionType_;\n readonly functionProvenance: FunctionProvenance.Confect<\n ArgsFields_,\n Returns_,\n Error_,\n FunctionProvenance.Standard\n >;\n}\n\nexport interface Any {\n readonly [TypeId]: TypeId;\n readonly id: Id;\n readonly functionType: FunctionType;\n readonly functionProvenance: FunctionProvenance.AnyConfect;\n}\n\nexport const isContract = (u: unknown): u is Any =>\n Predicate.hasProperty(u, TypeId) && u[TypeId] === TypeId;\n\ntype ArgsFields<Contract_ extends Any> =\n Contract_[\"functionProvenance\"] extends {\n readonly \"~ArgsFields\": infer ArgsFields_ extends\n FunctionProvenance.ArgsFields;\n }\n ? ArgsFields_\n : never;\n\ntype ReturnsSchema<Contract_ extends Any> =\n Contract_[\"functionProvenance\"][\"returns\"];\n\ntype ErrorSchema<Contract_ extends Any> =\n Contract_[\"functionProvenance\"] extends {\n readonly error?: infer ErrorSchema_;\n }\n ? Extract<ErrorSchema_, Schema.Codec<any, any>>\n : never;\n\nexport type Args<Contract_ extends Any> = Schema.Struct.Type<\n ArgsFields<Contract_>\n>;\n\nexport type Returns<Contract_ extends Any> = ReturnsSchema<Contract_>[\"Type\"];\n\nexport type Error<Contract_ extends Any> = ErrorSchema<Contract_>[\"Type\"];\n\n/**\n * A host function a component received for a contract. It is a ref, so the\n * runners and the scheduler run it with the contract's codecs, and declared\n * errors arrive by tag.\n */\nexport type Handle<Contract_ extends Any> = Ref.ConfectRef<\n Extract<\n RuntimeAndFunctionType.RuntimeAndFunctionType,\n {\n readonly runtime: \"Convex\";\n readonly functionType: Contract_[\"functionType\"];\n }\n >,\n \"internal\",\n ArgsFields<Contract_>,\n ReturnsSchema<Contract_>,\n ErrorSchema<Contract_>\n> & { readonly [HandleTypeId]: Contract_[\"id\"] };\n\nconst make =\n <FunctionType_ extends FunctionType>(functionType: FunctionType_) =>\n <\n const Id_ extends Id,\n const ArgsFields_ extends FunctionProvenance.ArgsFields = {},\n Returns_ extends Schema.Codec<any, any> = never,\n Error_ extends Schema.Codec<any, any> = never,\n >(\n id: Id_,\n options: {\n readonly args?: () => ArgsFields_;\n readonly returns: () => Returns_;\n readonly error?: () => Error_;\n },\n ): Contract<Id_, FunctionType_, ArgsFields_, Returns_, Error_> => ({\n [TypeId]: TypeId,\n id,\n functionType,\n functionProvenance: FunctionProvenance.Confect(\n options.args ?? (() => ({}) as ArgsFields_),\n options.returns,\n options.error,\n ),\n });\n\nexport const query = make(\"query\");\nexport const mutation = make(\"mutation\");\nexport const action = make(\"action\");\n\nconst isHandleOf =\n <Contract_ extends Any>(contract: Contract_) =>\n (value: unknown): value is Handle<Contract_> =>\n Ref.isRef(value) &&\n Predicate.hasProperty(value, HandleTypeId) &&\n value[HandleTypeId] === contract.id;\n\nconst fromText = <Contract_ extends Any>(\n contract: Contract_,\n text: string,\n reservedArgument?: string,\n): Handle<Contract_> =>\n Object.assign(\n Ref.fromProvenance(\n text,\n contract.functionProvenance,\n [],\n // Convex types a handle as a string that is also a function reference.\n text as unknown as FunctionReference<any, any>,\n contract.functionType,\n contract.functionType === \"query\" ? undefined : reservedArgument,\n ),\n { [HandleTypeId]: contract.id },\n ) as unknown as Handle<Contract_>;\n\n/**\n * The schema of a handle for `contract`: a string on the wire, a runnable ref\n * once decoded. Use it in a component's function args or tables. It lowers to\n * Convex's `v.function` with the contract's encoded args and returns.\n * `reservedArgument` opts mutation and action handles into context forwarding.\n * The host target must reserve the same argument name.\n */\nexport const handle = <Contract_ extends Any>(\n contract: Contract_,\n options?: {\n readonly reservedArgument?: Contract_[\"functionType\"] extends \"query\"\n ? never\n : string;\n },\n): Schema.Codec<Handle<Contract_>, string> =>\n Schema.String.annotate({ [CallbackContract]: contract }).pipe(\n Schema.decodeTo(\n Schema.declare(isHandleOf(contract), {\n identifier: `Callback.Handle<${contract.id}>`,\n }),\n {\n decode: SchemaGetter.transform((text: string) =>\n fromText(contract, text, options?.reservedArgument),\n ),\n encode: SchemaGetter.transform(\n (ref: Handle<Contract_>) => ref.convexFunctionName,\n ),\n },\n ),\n );\n\ntype EncodedArgs<Ref_> = Ref_ extends {\n readonly _tag: \"Confect\";\n readonly args: {\n readonly fields: infer ArgsFields_ extends FunctionProvenance.ArgsFields;\n };\n}\n ? Schema.Struct.Encoded<ArgsFields_>\n : Ref.Args<Ref_>;\n\ntype EncodedReturns<Ref_> = Ref_ extends { readonly _tag: \"Confect\" }\n ? Ref.ReturnsSchema<Ref_>[\"Encoded\"]\n : Ref.Returns<Ref_>;\n\ntype IsAny<A> = 0 extends 1 & A ? true : false;\n\n/**\n * A Confect ref typed from values alone, such as a bound component's ref, has\n * no codec types left to compare, and middleware attachments typed without\n * their specs erase their errors. True when any variant of `Ref_` is erased.\n */\ntype IsErased<Ref_> = true extends (\n Ref_ extends { readonly _tag: \"Confect\" }\n ? IsAny<Ref.ReturnsSchema<Ref_>[\"Encoded\"]> | IsAny<Ref.EncodedError<Ref_>>\n : false\n)\n ? true\n : false;\n\n/**\n * The shape a value has on the wire: a component's ID brands become `string`,\n * since the contract cannot name the host's scope, while the host's own IDs\n * keep their table. Arrays and tuples lose `readonly`, and an optional field is\n * the same whether or not it admits `undefined`, which Convex never transmits.\n * `unknown` stays `unknown`.\n */\ntype WireShape<A> = unknown extends A\n ? A\n : A extends { readonly \"~@confect/core/ScopedId\": unknown }\n ? string\n : A extends\n | string\n | number\n | bigint\n | boolean\n | null\n | undefined\n | ArrayBuffer\n ? A\n : { -readonly [Key in keyof A]: WireShape<Exclude<A[Key], undefined>> };\n\ntype Identical<A, B> =\n (<T>() => T extends A ? 1 : 2) extends <T>() => T extends B ? 1 : 2\n ? true\n : false;\n\ntype FirstOf<Checks extends ReadonlyArray<unknown>> = Checks extends readonly [\n infer Head,\n ...infer Rest,\n]\n ? [Head] extends [never]\n ? FirstOf<Rest>\n : Head\n : never;\n\n/**\n * Every obligation a host ref owes a contract, in the order they are reported.\n * Each is `never` when it holds.\n */\ntype Obligations<Contract_ extends Any, Ref_ extends Ref.Any> = [\n IsErased<Ref_> extends true\n ? `the ref's codecs are erased, so its encoding cannot be checked against \"${Contract_[\"id\"]}\"; pass the host's generated ref`\n : never,\n [Ref.GetFunctionType<Ref_>] extends [Contract_[\"functionType\"]]\n ? never\n : `\"${Contract_[\"id\"]}\" needs a ${Contract_[\"functionType\"]}, not a ${Ref.GetFunctionType<Ref_>}`,\n Identical<\n WireShape<EncodedArgs<Handle<Contract_>>>,\n WireShape<EncodedArgs<Ref_>>\n > extends true\n ? never\n : `the ref's encoded args differ from the args \"${Contract_[\"id\"]}\" sends`,\n Identical<\n WireShape<EncodedReturns<Handle<Contract_>>>,\n WireShape<EncodedReturns<Ref_>>\n > extends true\n ? never\n : `the ref's returns are encoded differently from the returns of \"${Contract_[\"id\"]}\"`,\n [Ref.Error<Ref_>] extends [Error<Contract_>]\n ? never\n : `the ref fails with errors \"${Contract_[\"id\"]}\" does not declare`,\n [WireShape<Ref.EncodedError<Ref_>>] extends [\n WireShape<Ref.EncodedError<Handle<Contract_>>>,\n ]\n ? never\n : `the ref's errors are encoded differently from the errors of \"${Contract_[\"id\"]}\"`,\n];\n\ntype Mismatch<Contract_ extends Any, Ref_ extends Ref.Any> = FirstOf<\n Obligations<Contract_, Ref_>\n>;\n\n/**\n * `unknown` when host ref `Ref_` satisfies `Contract_` as far as its types\n * show, otherwise an object type naming the first mismatch. The check compares\n * the types that cross the wire, with a component's IDs compared as strings.\n * The host's encoded args and returns must equal the contract's, and its\n * encoded errors (middleware errors included) must be ones the contract's\n * codecs decode. A ref whose codecs are erased cannot be checked and is\n * refused. Types miss what only the validators show, such as field names behind\n * a `Record` type, so `Callback.create` in `@confect/server` also compares the\n * compiled validators before it creates a handle.\n */\nexport type Check<Contract_ extends Any, Ref_ extends Ref.Any> = [\n Mismatch<Contract_, Ref_>,\n] extends [never]\n ? unknown\n : { readonly \"~CallbackMismatch\": Mismatch<Contract_, Ref_> };\n\n/**\n * View a ref as Convex's `FunctionReference_future`, typed with its wire args\n * and returns, for `createFunctionHandle` and clients that accept it.\n */\nexport const toFuture = <Ref_ extends Ref.Any>(\n ref: Ref_,\n): FunctionReference_future<\n Ref.GetFunctionType<Ref_>,\n Ref.GetFunctionVisibility<Ref_>,\n EncodedArgs<Ref_>,\n EncodedReturns<Ref_>\n> => getFunctionReference(ref) as never;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAcA,MAAa,SAAS;AAGtB,MAAM,eAAe;AAqCrB,MAAa,cAAc,MACzB,UAAU,YAAY,GAAA,yBAAS,KAAK,EAAA,+BAAA;AA+CtC,MAAM,QACiC,kBAOnC,IACA,aAKiE;EAChE,SAAS;CACV;CACA;CACA,oBAAoBA,QAClB,QAAQ,gBAAgB,CAAC,KACzB,QAAQ,SACR,QAAQ,KACV;AACF;AAEF,MAAa,QAAQ,KAAK,OAAO;AACjC,MAAa,WAAW,KAAK,UAAU;AACvC,MAAa,SAAS,KAAK,QAAQ;AAEnC,MAAM,cACoB,cACvB,UACCC,MAAU,KAAK,KACf,UAAU,YAAY,OAAO,YAAY,KACzC,MAAM,kBAAkB,SAAS;AAErC,MAAM,YACJ,UACA,MACA,qBAEA,OAAO,OACLC,eACE,MACA,SAAS,oBACT,CAAC,GAED,MACA,SAAS,cACT,SAAS,iBAAiB,UAAU,KAAA,IAAY,gBAClD,GACA,GAAG,eAAe,SAAS,GAAG,CAChC;;;;;;;;AASF,MAAa,UACX,UACA,YAMA,OAAO,OAAO,SAAS,GAAG,mBAAmB,SAAS,CAAC,CAAC,CAAC,KACvD,OAAO,SACL,OAAO,QAAQ,WAAW,QAAQ,GAAG,EACnC,YAAY,mBAAmB,SAAS,GAAG,GAC7C,CAAC,GACD;CACE,QAAQ,aAAa,WAAW,SAC9B,SAAS,UAAU,MAAM,SAAS,gBAAgB,CACpD;CACA,QAAQ,aAAa,WAClB,QAA2B,IAAI,kBAClC;AACF,CACF,CACF;;;;;AA4HF,MAAa,YACX,QAMG,qBAAqB,GAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gaganref/confect-core",
3
- "version": "10.3.1-fork.64",
3
+ "version": "10.3.1-fork.66",
4
4
  "peerDependencies": {
5
5
  "convex": "^1.49.0",
6
6
  "effect": ">=4.0.0 <4.1.0"
package/src/Callback.ts CHANGED
@@ -139,6 +139,7 @@ const isHandleOf =
139
139
  const fromText = <Contract_ extends Any>(
140
140
  contract: Contract_,
141
141
  text: string,
142
+ reservedArgument?: string,
142
143
  ): Handle<Contract_> =>
143
144
  Object.assign(
144
145
  Ref.fromProvenance(
@@ -148,6 +149,7 @@ const fromText = <Contract_ extends Any>(
148
149
  // Convex types a handle as a string that is also a function reference.
149
150
  text as unknown as FunctionReference<any, any>,
150
151
  contract.functionType,
152
+ contract.functionType === "query" ? undefined : reservedArgument,
151
153
  ),
152
154
  { [HandleTypeId]: contract.id },
153
155
  ) as unknown as Handle<Contract_>;
@@ -156,9 +158,16 @@ const fromText = <Contract_ extends Any>(
156
158
  * The schema of a handle for `contract`: a string on the wire, a runnable ref
157
159
  * once decoded. Use it in a component's function args or tables. It lowers to
158
160
  * Convex's `v.function` with the contract's encoded args and returns.
161
+ * `reservedArgument` opts mutation and action handles into context forwarding.
162
+ * The host target must reserve the same argument name.
159
163
  */
160
164
  export const handle = <Contract_ extends Any>(
161
165
  contract: Contract_,
166
+ options?: {
167
+ readonly reservedArgument?: Contract_["functionType"] extends "query"
168
+ ? never
169
+ : string;
170
+ },
162
171
  ): Schema.Codec<Handle<Contract_>, string> =>
163
172
  Schema.String.annotate({ [CallbackContract]: contract }).pipe(
164
173
  Schema.decodeTo(
@@ -167,7 +176,7 @@ export const handle = <Contract_ extends Any>(
167
176
  }),
168
177
  {
169
178
  decode: SchemaGetter.transform((text: string) =>
170
- fromText(contract, text),
179
+ fromText(contract, text, options?.reservedArgument),
171
180
  ),
172
181
  encode: SchemaGetter.transform(
173
182
  (ref: Handle<Contract_>) => ref.convexFunctionName,