@gaganref/confect-server 10.3.1-fork.49 → 10.3.1-fork.50
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.
|
@@ -37,11 +37,21 @@ export interface Fn<R extends Ref.Any> {
|
|
|
37
37
|
readonly reference: Ref.FunctionReference<R>;
|
|
38
38
|
readonly args: DefaultFunctionArgs;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Choose whether an official component call forwards the caller's carrier.
|
|
42
|
+
*/
|
|
43
|
+
export interface EncodeCallOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Forward the caller's carrier to reserving mutations and actions. Use `none`
|
|
46
|
+
* when the component replays or compares the stored arguments.
|
|
47
|
+
*/
|
|
48
|
+
readonly carrier: "forward" | "none";
|
|
49
|
+
}
|
|
40
50
|
/**
|
|
41
51
|
* Encode a ref's arguments through its codecs to the wire record an official
|
|
42
|
-
* method expects.
|
|
52
|
+
* method expects, with an explicit carrier policy.
|
|
43
53
|
*/
|
|
44
|
-
export declare const encodeCall: <R extends Ref.Any>(ref: R, args: NoInfer<Ref.Args<R
|
|
54
|
+
export declare const encodeCall: <R extends Ref.Any>(ref: R, args: NoInfer<Ref.Args<R>>, options: EncodeCallOptions) => Effect.Effect<Fn<R>>;
|
|
45
55
|
/**
|
|
46
56
|
* Encode a callback's real field without fabricating the rest of its arguments.
|
|
47
57
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OfficialComponent.d.ts","sourceRoot":"","sources":["../src/OfficialComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,KAAK,WAAW,MAAM,kBAAkB,CAAC;;;;;;
|
|
1
|
+
{"version":3,"file":"OfficialComponent.d.ts","sourceRoot":"","sources":["../src/OfficialComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,KAAK,WAAW,MAAM,kBAAkB,CAAC;;;;;;AAGrD;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAGxC;CAAG;AAEJ,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AACzC,KAAK,WAAW,GAAG,OAAO,WAAW,CAAC;AACtC,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACpE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACpD,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACjD,WAAW,CAAC,WAAW,GACvB,cAAc,CAAC,cAAc,GAC/B,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACjD,WAAW,GACX,YAAY,CAAC,YAAY,GAC7B,WAAW,CAAC;AAEhB,KAAK,MAAM,CAAC,QAAQ,IAAI;KACrB,CAAC,IAAI,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAClD,GAAG,EAAE,MAAM,GAAG,EACd,GAAG,IAAI,EAAE,MAAM,KAAK,KACjB,OAAO,CAAC,OAAO,CAAC,GACjB,KAAK,CAAC,GAAG,CAAC,SAAS,WAAW,GAC5B,KAAK,GACL,CAAC,GACH,KAAK;CACV,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC;AAE3B,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CACvB,GAAG,EAAE,MAAM,GAAG,EACd,GAAG,IAAI,EAAE,MAAM,IAAI,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC,GACjB,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GACtD,KAAK,CAAC;AAEV,KAAK,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,EACjD,MAAM,EAAE,CAAC,EACT,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KACnC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,SAAS,MAAM,aAC/B,MAAM,YACP,QAAQ,KACjB,MAAM,CAAC,QAAQ,CAmCjB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG;IACnC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC;CACtC;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,GAAG,CAAC,GAAG,OACrC,CAAC,QACA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WACjB,iBAAiB,KACzB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAanB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,WAAW,GACtB,CAAC,SAAS,GAAG,CAAC,UAAU,EACxB,CAAC,SAAS,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAEhD,CAAC,OACD,CAAC,SACC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAMvB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { __exportAll } from "./_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { encodeArgs } from "./internal/reservedArgument.js";
|
|
2
3
|
import { ActionCtx } from "./ActionCtx.js";
|
|
3
4
|
import { MutationCtx } from "./MutationCtx.js";
|
|
4
5
|
import { QueryCtx } from "./QueryCtx.js";
|
|
@@ -51,9 +52,9 @@ const make = (component, official) => {
|
|
|
51
52
|
};
|
|
52
53
|
/**
|
|
53
54
|
* Encode a ref's arguments through its codecs to the wire record an official
|
|
54
|
-
* method expects.
|
|
55
|
+
* method expects, with an explicit carrier policy.
|
|
55
56
|
*/
|
|
56
|
-
const encodeCall = (ref, args) => Ref.encodeArgs(ref, args).pipe(Effect.flatMap(Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown))), Effect.map((encoded) => ({
|
|
57
|
+
const encodeCall = (ref, args, options) => (options.carrier === "forward" ? encodeArgs(ref, args) : Ref.encodeArgs(ref, args)).pipe(Effect.flatMap(Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown))), Effect.map((encoded) => ({
|
|
57
58
|
reference: Ref.getFunctionReference(ref),
|
|
58
59
|
args: encoded
|
|
59
60
|
})), Effect.orDie);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OfficialComponent.js","names":["ActionCtx.ActionCtx","MutationCtx.MutationCtx","QueryCtx.QueryCtx"],"sources":["../src/OfficialComponent.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport type {\n DefaultFunctionArgs,\n GenericActionCtx,\n GenericDataModel,\n GenericMutationCtx,\n GenericQueryCtx,\n} from \"convex/server\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport * as Schema from \"effect/Schema\";\nimport * as ActionCtx from \"./ActionCtx.js\";\nimport type * as ActionRunner from \"./ActionRunner.js\";\nimport * as MutationCtx from \"./MutationCtx.js\";\nimport type * as MutationRunner from \"./MutationRunner.js\";\nimport * as QueryCtx from \"./QueryCtx.js\";\nimport type * as QueryRunner from \"./QueryRunner.js\";\n\n/**\n * An official component's method rejected. `cause` is the rejection as thrown.\n */\nexport class ComponentCallFailed extends Schema.TaggedError<ComponentCallFailed>()(\n \"ComponentCallFailed\",\n { component: Schema.String, method: Schema.String, cause: Schema.Defect() },\n) {}\n\ndeclare const unsupported: unique symbol;\ntype Unsupported = typeof unsupported;\ntype Needs<Param> = [GenericActionCtx<GenericDataModel>] extends [Param]\n ? [GenericMutationCtx<GenericDataModel>] extends [Param]\n ? [GenericQueryCtx<GenericDataModel>] extends [Param]\n ? QueryRunner.QueryRunner\n : MutationRunner.MutationRunner\n : [GenericQueryCtx<GenericDataModel>] extends [Param]\n ? Unsupported\n : ActionRunner.ActionRunner\n : Unsupported;\n\ntype Method<Official> = {\n [K in keyof Official & string]: Official[K] extends (\n ctx: infer Ctx,\n ...args: infer _Args\n ) => Promise<unknown>\n ? Needs<Ctx> extends Unsupported\n ? never\n : K\n : never;\n}[keyof Official & string];\n\ntype Call<F> = F extends (\n ctx: infer Ctx,\n ...args: infer Args\n) => Promise<infer A>\n ? (...args: Args) => Effect.Effect<A, never, Needs<Ctx>>\n : never;\n\ntype Lifted<Official> = <M extends Method<Official>>(\n method: M,\n ...args: Parameters<Call<Official[M]>>\n) => ReturnType<Call<Official[M]>>;\n\n/**\n * Lift official promise methods, deriving each capability from its ctx\n * parameter. A rejection is caller misuse, a limit or a platform fault rather\n * than a domain fact, so it dies.\n */\nexport const make = <Official extends object>(\n component: string,\n official: Official,\n): Lifted<Official> => {\n const context = Effect.gen(function* () {\n const action = yield* Effect.serviceOption(\n ActionCtx.ActionCtx<GenericDataModel>(),\n );\n if (Option.isSome(action)) return action.value;\n const mutation = yield* Effect.serviceOption(\n MutationCtx.MutationCtx<GenericDataModel>(),\n );\n if (Option.isSome(mutation)) return mutation.value;\n const query = yield* Effect.serviceOption(\n QueryCtx.QueryCtx<GenericDataModel>(),\n );\n if (Option.isSome(query)) return query.value;\n return yield* Effect.die(\n new Error(`${component} called outside a Confect handler`),\n );\n });\n const call = Effect.fn(`${component}.call`)(function* (\n method: Method<Official>,\n ...args: unknown[]\n ) {\n const ctx = yield* context;\n // Method selects promise methods whose first argument accepts a native handler context.\n const invoke = official[method] as (\n native: typeof ctx,\n ...args: unknown[]\n ) => Promise<unknown>;\n return yield* Effect.tryPromise({\n try: () => invoke.call(official, ctx, ...args),\n catch: (cause) => ComponentCallFailed.make({ component, method, cause }),\n }).pipe(Effect.orDie);\n });\n // Confect installs the native ctx with the runner capability inferred by Needs.\n return call as unknown as Lifted<Official>;\n};\n\n/**\n * A function reference with its encoded arguments, ready for an official method\n * that takes both.\n */\nexport interface Fn<R extends Ref.Any> {\n readonly reference: Ref.FunctionReference<R>;\n readonly args: DefaultFunctionArgs;\n}\n\n/**\n * Encode a ref's arguments through its codecs to the wire record an official\n * method expects.\n */\nexport const encodeCall = <R extends Ref.Any>(\n ref: R,\n args: NoInfer<Ref.Args<R>>,\n): Effect.Effect<Fn<R>> =>\n Ref.encodeArgs(ref, args).pipe(\n Effect.flatMap(\n Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown)),\n ),\n Effect.map((encoded) => ({\n reference: Ref.getFunctionReference(ref),\n args: encoded,\n })),\n Effect.orDie,\n );\n\n/**\n * Encode a callback's real field without fabricating the rest of its arguments.\n */\nexport const encodeField = <\n R extends Ref.AnyConfect,\n K extends keyof Ref.Args<R> & keyof Ref.ArgsFields<R>,\n>(\n ref: R,\n key: K,\n value: NoInfer<Ref.Args<R>[K]>,\n): Effect.Effect<unknown> => {\n const fields = ref.args.fields as Record<\n keyof Ref.ArgsFields<R>,\n Schema.Codec<unknown, unknown>\n >;\n return Schema.encodeUnknownEffect(fields[key])(value).pipe(Effect.orDie);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"OfficialComponent.js","names":["ActionCtx.ActionCtx","MutationCtx.MutationCtx","QueryCtx.QueryCtx","ReservedArgument.encodeArgs"],"sources":["../src/OfficialComponent.ts"],"sourcesContent":["import * as Ref from \"@confect/core/Ref\";\nimport type {\n DefaultFunctionArgs,\n GenericActionCtx,\n GenericDataModel,\n GenericMutationCtx,\n GenericQueryCtx,\n} from \"convex/server\";\nimport * as Effect from \"effect/Effect\";\nimport * as Option from \"effect/Option\";\nimport * as Schema from \"effect/Schema\";\nimport * as ActionCtx from \"./ActionCtx.js\";\nimport type * as ActionRunner from \"./ActionRunner.js\";\nimport * as MutationCtx from \"./MutationCtx.js\";\nimport type * as MutationRunner from \"./MutationRunner.js\";\nimport * as QueryCtx from \"./QueryCtx.js\";\nimport type * as QueryRunner from \"./QueryRunner.js\";\nimport * as ReservedArgument from \"./internal/reservedArgument.js\";\n\n/**\n * An official component's method rejected. `cause` is the rejection as thrown.\n */\nexport class ComponentCallFailed extends Schema.TaggedError<ComponentCallFailed>()(\n \"ComponentCallFailed\",\n { component: Schema.String, method: Schema.String, cause: Schema.Defect() },\n) {}\n\ndeclare const unsupported: unique symbol;\ntype Unsupported = typeof unsupported;\ntype Needs<Param> = [GenericActionCtx<GenericDataModel>] extends [Param]\n ? [GenericMutationCtx<GenericDataModel>] extends [Param]\n ? [GenericQueryCtx<GenericDataModel>] extends [Param]\n ? QueryRunner.QueryRunner\n : MutationRunner.MutationRunner\n : [GenericQueryCtx<GenericDataModel>] extends [Param]\n ? Unsupported\n : ActionRunner.ActionRunner\n : Unsupported;\n\ntype Method<Official> = {\n [K in keyof Official & string]: Official[K] extends (\n ctx: infer Ctx,\n ...args: infer _Args\n ) => Promise<unknown>\n ? Needs<Ctx> extends Unsupported\n ? never\n : K\n : never;\n}[keyof Official & string];\n\ntype Call<F> = F extends (\n ctx: infer Ctx,\n ...args: infer Args\n) => Promise<infer A>\n ? (...args: Args) => Effect.Effect<A, never, Needs<Ctx>>\n : never;\n\ntype Lifted<Official> = <M extends Method<Official>>(\n method: M,\n ...args: Parameters<Call<Official[M]>>\n) => ReturnType<Call<Official[M]>>;\n\n/**\n * Lift official promise methods, deriving each capability from its ctx\n * parameter. A rejection is caller misuse, a limit or a platform fault rather\n * than a domain fact, so it dies.\n */\nexport const make = <Official extends object>(\n component: string,\n official: Official,\n): Lifted<Official> => {\n const context = Effect.gen(function* () {\n const action = yield* Effect.serviceOption(\n ActionCtx.ActionCtx<GenericDataModel>(),\n );\n if (Option.isSome(action)) return action.value;\n const mutation = yield* Effect.serviceOption(\n MutationCtx.MutationCtx<GenericDataModel>(),\n );\n if (Option.isSome(mutation)) return mutation.value;\n const query = yield* Effect.serviceOption(\n QueryCtx.QueryCtx<GenericDataModel>(),\n );\n if (Option.isSome(query)) return query.value;\n return yield* Effect.die(\n new Error(`${component} called outside a Confect handler`),\n );\n });\n const call = Effect.fn(`${component}.call`)(function* (\n method: Method<Official>,\n ...args: unknown[]\n ) {\n const ctx = yield* context;\n // Method selects promise methods whose first argument accepts a native handler context.\n const invoke = official[method] as (\n native: typeof ctx,\n ...args: unknown[]\n ) => Promise<unknown>;\n return yield* Effect.tryPromise({\n try: () => invoke.call(official, ctx, ...args),\n catch: (cause) => ComponentCallFailed.make({ component, method, cause }),\n }).pipe(Effect.orDie);\n });\n // Confect installs the native ctx with the runner capability inferred by Needs.\n return call as unknown as Lifted<Official>;\n};\n\n/**\n * A function reference with its encoded arguments, ready for an official method\n * that takes both.\n */\nexport interface Fn<R extends Ref.Any> {\n readonly reference: Ref.FunctionReference<R>;\n readonly args: DefaultFunctionArgs;\n}\n\n/**\n * Choose whether an official component call forwards the caller's carrier.\n */\nexport interface EncodeCallOptions {\n /**\n * Forward the caller's carrier to reserving mutations and actions. Use `none`\n * when the component replays or compares the stored arguments.\n */\n readonly carrier: \"forward\" | \"none\";\n}\n\n/**\n * Encode a ref's arguments through its codecs to the wire record an official\n * method expects, with an explicit carrier policy.\n */\nexport const encodeCall = <R extends Ref.Any>(\n ref: R,\n args: NoInfer<Ref.Args<R>>,\n options: EncodeCallOptions,\n): Effect.Effect<Fn<R>> =>\n (options.carrier === \"forward\"\n ? ReservedArgument.encodeArgs(ref, args)\n : Ref.encodeArgs(ref, args)\n ).pipe(\n Effect.flatMap(\n Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown)),\n ),\n Effect.map((encoded) => ({\n reference: Ref.getFunctionReference(ref),\n args: encoded,\n })),\n Effect.orDie,\n );\n\n/**\n * Encode a callback's real field without fabricating the rest of its arguments.\n */\nexport const encodeField = <\n R extends Ref.AnyConfect,\n K extends keyof Ref.Args<R> & keyof Ref.ArgsFields<R>,\n>(\n ref: R,\n key: K,\n value: NoInfer<Ref.Args<R>[K]>,\n): Effect.Effect<unknown> => {\n const fields = ref.args.fields as Record<\n keyof Ref.ArgsFields<R>,\n Schema.Codec<unknown, unknown>\n >;\n return Schema.encodeUnknownEffect(fields[key])(value).pipe(Effect.orDie);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsBA,IAAa,sBAAb,cAAyC,OAAO,YAAiC,CAAC,CAChF,uBACA;CAAE,WAAW,OAAO;CAAQ,QAAQ,OAAO;CAAQ,OAAO,OAAO,OAAO;AAAE,CAC5E,CAAC,CAAC,CAAC;;;;;;AA0CH,MAAa,QACX,WACA,aACqB;CACrB,MAAM,UAAU,OAAO,IAAI,aAAa;EACtC,MAAM,SAAS,OAAO,OAAO,cAC3BA,UAAsC,CACxC;EACA,IAAI,OAAO,OAAO,MAAM,GAAG,OAAO,OAAO;EACzC,MAAM,WAAW,OAAO,OAAO,cAC7BC,YAA0C,CAC5C;EACA,IAAI,OAAO,OAAO,QAAQ,GAAG,OAAO,SAAS;EAC7C,MAAM,QAAQ,OAAO,OAAO,cAC1BC,SAAoC,CACtC;EACA,IAAI,OAAO,OAAO,KAAK,GAAG,OAAO,MAAM;EACvC,OAAO,OAAO,OAAO,oBACnB,IAAI,MAAM,GAAG,UAAU,kCAAkC,CAC3D;CACF,CAAC;CAiBD,OAhBa,OAAO,GAAG,GAAG,UAAU,MAAM,CAAC,CAAC,WAC1C,QACA,GAAG,MACH;EACA,MAAM,MAAM,OAAO;EAEnB,MAAM,SAAS,SAAS;EAIxB,OAAO,OAAO,OAAO,WAAW;GAC9B,WAAW,OAAO,KAAK,UAAU,KAAK,GAAG,IAAI;GAC7C,QAAQ,UAAU,oBAAoB,KAAK;IAAE;IAAW;IAAQ;GAAM,CAAC;EACzE,CAAC,CAAC,CAAC,KAAK,OAAO,KAAK;CACtB,CAEU;AACZ;;;;;AA0BA,MAAa,cACX,KACA,MACA,aAEC,QAAQ,YAAY,YACjBC,WAA4B,KAAK,IAAI,IACrC,IAAI,WAAW,KAAK,IAAI,EAAA,CAC1B,KACA,OAAO,QACL,OAAO,oBAAoB,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,CAAC,CACzE,GACA,OAAO,KAAK,aAAa;CACvB,WAAW,IAAI,qBAAqB,GAAG;CACvC,MAAM;AACR,EAAE,GACF,OAAO,KACT;;;;AAKF,MAAa,eAIX,KACA,KACA,UAC2B;CAC3B,MAAM,SAAS,IAAI,KAAK;CAIxB,OAAO,OAAO,oBAAoB,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK;AACzE"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gaganref/confect-server",
|
|
3
|
-
"version": "10.3.1-fork.
|
|
3
|
+
"version": "10.3.1-fork.50",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@effect/ai-openai-compat": "4.0.4",
|
|
6
6
|
"@effect/ai-openrouter": "4.0.4"
|
|
7
7
|
},
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.
|
|
9
|
+
"@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.50",
|
|
10
10
|
"@effect/platform-node": ">=4.0.0 <4.1.0",
|
|
11
11
|
"convex": "^1.48.0",
|
|
12
12
|
"effect": ">=4.0.4 <4.1.0"
|
package/src/OfficialComponent.ts
CHANGED
|
@@ -15,6 +15,7 @@ import * as MutationCtx from "./MutationCtx.js";
|
|
|
15
15
|
import type * as MutationRunner from "./MutationRunner.js";
|
|
16
16
|
import * as QueryCtx from "./QueryCtx.js";
|
|
17
17
|
import type * as QueryRunner from "./QueryRunner.js";
|
|
18
|
+
import * as ReservedArgument from "./internal/reservedArgument.js";
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* An official component's method rejected. `cause` is the rejection as thrown.
|
|
@@ -113,15 +114,30 @@ export interface Fn<R extends Ref.Any> {
|
|
|
113
114
|
readonly args: DefaultFunctionArgs;
|
|
114
115
|
}
|
|
115
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Choose whether an official component call forwards the caller's carrier.
|
|
119
|
+
*/
|
|
120
|
+
export interface EncodeCallOptions {
|
|
121
|
+
/**
|
|
122
|
+
* Forward the caller's carrier to reserving mutations and actions. Use `none`
|
|
123
|
+
* when the component replays or compares the stored arguments.
|
|
124
|
+
*/
|
|
125
|
+
readonly carrier: "forward" | "none";
|
|
126
|
+
}
|
|
127
|
+
|
|
116
128
|
/**
|
|
117
129
|
* Encode a ref's arguments through its codecs to the wire record an official
|
|
118
|
-
* method expects.
|
|
130
|
+
* method expects, with an explicit carrier policy.
|
|
119
131
|
*/
|
|
120
132
|
export const encodeCall = <R extends Ref.Any>(
|
|
121
133
|
ref: R,
|
|
122
134
|
args: NoInfer<Ref.Args<R>>,
|
|
135
|
+
options: EncodeCallOptions,
|
|
123
136
|
): Effect.Effect<Fn<R>> =>
|
|
124
|
-
|
|
137
|
+
(options.carrier === "forward"
|
|
138
|
+
? ReservedArgument.encodeArgs(ref, args)
|
|
139
|
+
: Ref.encodeArgs(ref, args)
|
|
140
|
+
).pipe(
|
|
125
141
|
Effect.flatMap(
|
|
126
142
|
Schema.decodeUnknownEffect(Schema.Record(Schema.String, Schema.Unknown)),
|
|
127
143
|
),
|