@rivetkit/effect 0.0.0-codex-rivetkit-cli-preview.5e414a8
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.
- package/dist/Action.d.ts +104 -0
- package/dist/Action.d.ts.map +1 -0
- package/dist/Action.js +50 -0
- package/dist/Action.js.map +1 -0
- package/dist/Actor.d.ts +133 -0
- package/dist/Actor.d.ts.map +1 -0
- package/dist/Actor.js +104 -0
- package/dist/Actor.js.map +1 -0
- package/dist/Client.d.ts +31 -0
- package/dist/Client.d.ts.map +1 -0
- package/dist/Client.js +98 -0
- package/dist/Client.js.map +1 -0
- package/dist/Logger.d.ts +29 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +31 -0
- package/dist/Logger.js.map +1 -0
- package/dist/Registry.d.ts +72 -0
- package/dist/Registry.d.ts.map +1 -0
- package/dist/Registry.js +125 -0
- package/dist/Registry.js.map +1 -0
- package/dist/RivetError.d.ts +438 -0
- package/dist/RivetError.d.ts.map +1 -0
- package/dist/RivetError.js +873 -0
- package/dist/RivetError.js.map +1 -0
- package/dist/State.d.ts +123 -0
- package/dist/State.d.ts.map +1 -0
- package/dist/State.js +104 -0
- package/dist/State.js.map +1 -0
- package/dist/internal/ActionDispatcher.d.ts +14 -0
- package/dist/internal/ActionDispatcher.d.ts.map +1 -0
- package/dist/internal/ActionDispatcher.js +100 -0
- package/dist/internal/ActionDispatcher.js.map +1 -0
- package/dist/internal/ActionErrorEnvelope.d.ts +11 -0
- package/dist/internal/ActionErrorEnvelope.d.ts.map +1 -0
- package/dist/internal/ActionErrorEnvelope.js +14 -0
- package/dist/internal/ActionErrorEnvelope.js.map +1 -0
- package/dist/internal/ActorInstanceManager.d.ts +28 -0
- package/dist/internal/ActorInstanceManager.d.ts.map +1 -0
- package/dist/internal/ActorInstanceManager.js +51 -0
- package/dist/internal/ActorInstanceManager.js.map +1 -0
- package/dist/internal/ActorStateAdapter.d.ts +18 -0
- package/dist/internal/ActorStateAdapter.d.ts.map +1 -0
- package/dist/internal/ActorStateAdapter.js +29 -0
- package/dist/internal/ActorStateAdapter.js.map +1 -0
- package/dist/internal/StateOptions.d.ts +12 -0
- package/dist/internal/StateOptions.d.ts.map +1 -0
- package/dist/internal/StateOptions.js +2 -0
- package/dist/internal/StateOptions.js.map +1 -0
- package/dist/internal/logging.d.ts +23 -0
- package/dist/internal/logging.d.ts.map +1 -0
- package/dist/internal/logging.js +162 -0
- package/dist/internal/logging.js.map +1 -0
- package/dist/internal/tracing.d.ts +23 -0
- package/dist/internal/tracing.d.ts.map +1 -0
- package/dist/internal/tracing.js +30 -0
- package/dist/internal/tracing.js.map +1 -0
- package/dist/internal/utils.d.ts +7 -0
- package/dist/internal/utils.d.ts.map +1 -0
- package/dist/internal/utils.js +7 -0
- package/dist/internal/utils.js.map +1 -0
- package/dist/mod.d.ts +8 -0
- package/dist/mod.d.ts.map +1 -0
- package/dist/mod.js +8 -0
- package/dist/mod.js.map +1 -0
- package/package.json +46 -0
- package/src/Action.ts +231 -0
- package/src/Actor.test-d.ts +603 -0
- package/src/Actor.test.ts +206 -0
- package/src/Actor.ts +550 -0
- package/src/Client.test.ts +210 -0
- package/src/Client.ts +216 -0
- package/src/Logger.ts +43 -0
- package/src/Registry.test-d.ts +126 -0
- package/src/Registry.test.ts +411 -0
- package/src/Registry.ts +243 -0
- package/src/RivetError.test.ts +188 -0
- package/src/RivetError.ts +1044 -0
- package/src/State.test.ts +181 -0
- package/src/State.ts +224 -0
- package/src/internal/ActionDispatcher.ts +192 -0
- package/src/internal/ActionErrorEnvelope.ts +19 -0
- package/src/internal/ActorInstanceManager.ts +143 -0
- package/src/internal/ActorStateAdapter.ts +88 -0
- package/src/internal/StateOptions.ts +17 -0
- package/src/internal/logging.test.ts +288 -0
- package/src/internal/logging.ts +237 -0
- package/src/internal/tracing.ts +42 -0
- package/src/internal/utils.ts +12 -0
- package/src/mod.ts +7 -0
package/dist/Action.d.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { type Effect, Schema } from "effect";
|
|
2
|
+
declare const TypeId = "~@rivetkit/effect/Action";
|
|
3
|
+
export declare const isAction: (u: unknown) => u is Action<any, any, any, any>;
|
|
4
|
+
/**
|
|
5
|
+
* A value-level definition for a non-durable, request-response call.
|
|
6
|
+
*/
|
|
7
|
+
export interface Action<Tag extends string, Payload extends Schema.Top = Schema.Void, Success extends Schema.Top = Schema.Void, Error extends Schema.Top = Schema.Never> {
|
|
8
|
+
readonly [TypeId]: typeof TypeId;
|
|
9
|
+
readonly _tag: Tag;
|
|
10
|
+
readonly key: string;
|
|
11
|
+
/**
|
|
12
|
+
* Raw RivetKit clients omit the argument for no-payload actions, so
|
|
13
|
+
* the actor wrapper uses this to adapt only those calls to the Effect
|
|
14
|
+
* JSON Void codec's null representation.
|
|
15
|
+
*/
|
|
16
|
+
readonly hasPayload: boolean;
|
|
17
|
+
readonly payloadSchema: Payload;
|
|
18
|
+
readonly successSchema: Success;
|
|
19
|
+
readonly errorSchema: Error;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Type-erased view of any `Action`. Useful for collections of actions
|
|
23
|
+
* where the specific schemas don't matter.
|
|
24
|
+
*/
|
|
25
|
+
export interface Any {
|
|
26
|
+
readonly [TypeId]: typeof TypeId;
|
|
27
|
+
readonly _tag: string;
|
|
28
|
+
readonly key: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Like `Any`, but with the prop fields (`*Schema`) accessible. Used
|
|
32
|
+
* by internal builders that need to read schemas off an action.
|
|
33
|
+
*/
|
|
34
|
+
export interface AnyWithProps {
|
|
35
|
+
readonly [TypeId]: typeof TypeId;
|
|
36
|
+
readonly _tag: string;
|
|
37
|
+
readonly key: string;
|
|
38
|
+
readonly hasPayload: boolean;
|
|
39
|
+
readonly payloadSchema: Schema.Top;
|
|
40
|
+
readonly successSchema: Schema.Top;
|
|
41
|
+
readonly errorSchema: Schema.Top;
|
|
42
|
+
}
|
|
43
|
+
export type Tag<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Tag : never;
|
|
44
|
+
export type PayloadSchema<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload : never;
|
|
45
|
+
export type Payload<R> = PayloadSchema<R>["Type"];
|
|
46
|
+
/**
|
|
47
|
+
* The shape accepted by the payload schema's `make` constructor on the
|
|
48
|
+
* client side (i.e. before encoding). Useful for typing the call site.
|
|
49
|
+
*/
|
|
50
|
+
export type PayloadConstructor<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["~type.make.in"] : never;
|
|
51
|
+
export type SuccessSchema<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Success : never;
|
|
52
|
+
export type Success<R> = SuccessSchema<R>["Type"];
|
|
53
|
+
export type ErrorSchema<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Error : never;
|
|
54
|
+
export type Error<R> = ErrorSchema<R>["Type"];
|
|
55
|
+
/**
|
|
56
|
+
* The full set of decoding/encoding services required by every schema
|
|
57
|
+
* referenced by the action. Code generators include this in the `R`
|
|
58
|
+
* channel of any effect that handles or invokes the action.
|
|
59
|
+
*/
|
|
60
|
+
export type Services<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["DecodingServices"] | _Payload["EncodingServices"] | _Success["DecodingServices"] | _Success["EncodingServices"] | _Error["DecodingServices"] | _Error["EncodingServices"] : never;
|
|
61
|
+
/**
|
|
62
|
+
* The subset of `Services` actually needed on the client side: encoding
|
|
63
|
+
* the payload, decoding the success response, decoding the error.
|
|
64
|
+
*/
|
|
65
|
+
export type ServicesClient<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["EncodingServices"] | _Success["DecodingServices"] | _Error["DecodingServices"] : never;
|
|
66
|
+
/**
|
|
67
|
+
* The subset of `Services` needed on the server side: decoding the
|
|
68
|
+
* payload, encoding the success response, encoding the error.
|
|
69
|
+
*/
|
|
70
|
+
export type ServicesServer<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["DecodingServices"] | _Success["EncodingServices"] | _Error["EncodingServices"] : never;
|
|
71
|
+
/**
|
|
72
|
+
* Extract the action with the matching tag from a union of actions.
|
|
73
|
+
*/
|
|
74
|
+
export type ExtractTag<R extends Any, Tag extends string> = R extends {
|
|
75
|
+
readonly _tag: Tag;
|
|
76
|
+
} ? R : never;
|
|
77
|
+
export type ResultFrom<R extends Any, Services> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? Effect.Effect<_Success["Type"], _Error["Type"], Services> : never;
|
|
78
|
+
/**
|
|
79
|
+
* Define a Rivet Actor action.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* import { Schema } from "effect"
|
|
84
|
+
* import { Action } from "@rivetkit/effect"
|
|
85
|
+
*
|
|
86
|
+
* class CounterOverflow extends Schema.TaggedErrorClass<CounterOverflow>()(
|
|
87
|
+
* "CounterOverflow",
|
|
88
|
+
* { limit: Schema.Number },
|
|
89
|
+
* ) {}
|
|
90
|
+
*
|
|
91
|
+
* export const Increment = Action.make("Increment", {
|
|
92
|
+
* payload: { amount: Schema.Number },
|
|
93
|
+
* success: Schema.Number,
|
|
94
|
+
* error: CounterOverflow,
|
|
95
|
+
* })
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export declare const make: <const Tag extends string, Payload extends Schema.Top | Schema.Struct.Fields = Schema.Void, Success extends Schema.Top = Schema.Void, Error extends Schema.Top = Schema.Never>(tag: Tag, options?: {
|
|
99
|
+
readonly payload?: Payload;
|
|
100
|
+
readonly success?: Success;
|
|
101
|
+
readonly error?: Error;
|
|
102
|
+
}) => Action<Tag, Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload, Success, Error>;
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=Action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":"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"}
|
package/dist/Action.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Predicate, Schema } from "effect";
|
|
2
|
+
const TypeId = "~@rivetkit/effect/Action";
|
|
3
|
+
export const isAction = (u) => Predicate.hasProperty(u, TypeId);
|
|
4
|
+
// --- Implementation -------------------------------------------------
|
|
5
|
+
const Proto = {
|
|
6
|
+
[TypeId]: TypeId,
|
|
7
|
+
};
|
|
8
|
+
const makeProto = (options) => {
|
|
9
|
+
const self = Object.assign(Object.create(Proto), options);
|
|
10
|
+
self.key = `@rivetkit/effect/Action/${options._tag}`;
|
|
11
|
+
return self;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Define a Rivet Actor action.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Schema } from "effect"
|
|
19
|
+
* import { Action } from "@rivetkit/effect"
|
|
20
|
+
*
|
|
21
|
+
* class CounterOverflow extends Schema.TaggedErrorClass<CounterOverflow>()(
|
|
22
|
+
* "CounterOverflow",
|
|
23
|
+
* { limit: Schema.Number },
|
|
24
|
+
* ) {}
|
|
25
|
+
*
|
|
26
|
+
* export const Increment = Action.make("Increment", {
|
|
27
|
+
* payload: { amount: Schema.Number },
|
|
28
|
+
* success: Schema.Number,
|
|
29
|
+
* error: CounterOverflow,
|
|
30
|
+
* })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export const make = (tag, options) => {
|
|
34
|
+
const successSchema = options?.success ?? Schema.Void;
|
|
35
|
+
const errorSchema = options?.error ?? Schema.Never;
|
|
36
|
+
const hasPayload = options?.payload !== undefined;
|
|
37
|
+
const payloadSchema = Schema.isSchema(options?.payload)
|
|
38
|
+
? options?.payload
|
|
39
|
+
: options?.payload
|
|
40
|
+
? Schema.Struct(options?.payload)
|
|
41
|
+
: Schema.Void;
|
|
42
|
+
return makeProto({
|
|
43
|
+
_tag: tag,
|
|
44
|
+
hasPayload,
|
|
45
|
+
payloadSchema,
|
|
46
|
+
successSchema,
|
|
47
|
+
errorSchema,
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=Action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExD,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAmC,EAAE,CACvE,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAgJlC,uEAAuE;AAEvE,MAAM,KAAK,GAAG;IACb,CAAC,MAAM,CAAC,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,SAAS,GAAG,CAKhB,OAMD,EAAwC,EAAE;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,GAAG,2BAA2B,OAAO,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAMnB,GAAQ,EACR,OAIC,EAMA,EAAE;IACH,MAAM,aAAa,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IAClD,MAAM,aAAa,GAAe,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAClE,CAAC,CAAE,OAAO,EAAE,OAAe;QAC3B,CAAC,CAAC,OAAO,EAAE,OAAO;YACjB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAc,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAChB,OAAO,SAAS,CAAC;QAChB,IAAI,EAAE,GAAG;QACT,UAAU;QACV,aAAa;QACb,aAAa;QACb,WAAW;KACX,CAKA,CAAC;AACH,CAAC,CAAC"}
|
package/dist/Actor.d.ts
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Context, Effect, Layer, type Schema, Scope } from "effect";
|
|
2
|
+
import * as Rivetkit from "rivetkit";
|
|
3
|
+
import type * as RivetkitDb from "rivetkit/db";
|
|
4
|
+
import type * as Action from "./Action.ts";
|
|
5
|
+
import * as Client from "./Client.ts";
|
|
6
|
+
import type * as StateOptions from "./internal/StateOptions.ts";
|
|
7
|
+
import * as Registry from "./Registry.ts";
|
|
8
|
+
import type * as RivetError from "./RivetError.ts";
|
|
9
|
+
import type * as State from "./State.ts";
|
|
10
|
+
declare const TypeId = "~@rivetkit/effect/Actor";
|
|
11
|
+
export declare const isActor: (u: unknown) => u is Actor<any, any>;
|
|
12
|
+
declare const rivetkitActorOptionsKeys: readonly ["name", "icon"];
|
|
13
|
+
export type RivetkitActorOptions = Pick<NonNullable<Rivetkit.ActorOptionsInput>, (typeof rivetkitActorOptionsKeys)[number]>;
|
|
14
|
+
/**
|
|
15
|
+
* Per-actor instance options. Combines the public
|
|
16
|
+
* `RivetkitActorOptions` (forwarded verbatim to `Rivetkit.actor`)
|
|
17
|
+
* with the effect-SDK-only options.
|
|
18
|
+
*/
|
|
19
|
+
export type Options<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider = undefined> = Readonly<RivetkitActorOptions> & {
|
|
20
|
+
readonly state?: State;
|
|
21
|
+
readonly db?: Database;
|
|
22
|
+
};
|
|
23
|
+
type StatelessOptions<Database extends RivetkitDb.AnyDatabaseProvider = undefined> = Readonly<RivetkitActorOptions> & {
|
|
24
|
+
readonly state?: never;
|
|
25
|
+
readonly db?: Database;
|
|
26
|
+
};
|
|
27
|
+
type StatefulOptions<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider = undefined> = Readonly<RivetkitActorOptions> & {
|
|
28
|
+
readonly state: State;
|
|
29
|
+
readonly db?: Database;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Per-instance identity carried inside the wake scope. An actor
|
|
33
|
+
* instance is addressable in two ways:
|
|
34
|
+
*
|
|
35
|
+
* - `(name, key)` — stable user-facing pair (e.g. "Counter", ["counter-123"])
|
|
36
|
+
* - `actorId` — opaque engine-assigned unique identifier
|
|
37
|
+
*
|
|
38
|
+
* Available inside `Actor.toLayer`'s wake effect via
|
|
39
|
+
* `yield* Actor.CurrentAddress`.
|
|
40
|
+
*/
|
|
41
|
+
export type ActorAddress = Pick<Rivetkit.ActorContext<any, any, any, any, any, any, any, any>, "actorId" | "name" | "key">;
|
|
42
|
+
declare const CurrentAddress_base: Context.ServiceClass<CurrentAddress, "@rivetkit/effect/Actor/CurrentAddress", ActorAddress>;
|
|
43
|
+
/**
|
|
44
|
+
* Context tag for the current actor instance's address. Provided
|
|
45
|
+
* once per wake when the wake effect runs; capture it into a
|
|
46
|
+
* closure if action handlers need it.
|
|
47
|
+
*/
|
|
48
|
+
export declare class CurrentAddress extends CurrentAddress_base {
|
|
49
|
+
}
|
|
50
|
+
declare const Sleep_base: Context.ServiceClass<Sleep, "@rivetkit/effect/Actor/Sleep", Effect.Effect<void, never, never>>;
|
|
51
|
+
export declare class Sleep extends Sleep_base {
|
|
52
|
+
}
|
|
53
|
+
export type ActionRequest<A extends Action.Any> = A extends Action.Action<infer Tag, infer Payload, infer _Success, infer _Error> ? {
|
|
54
|
+
readonly _tag: Tag;
|
|
55
|
+
readonly action: A;
|
|
56
|
+
readonly payload: Payload["Type"];
|
|
57
|
+
} : never;
|
|
58
|
+
type ActionHandlerServices<ActionHandlers> = {
|
|
59
|
+
readonly [Name in keyof ActionHandlers]: ActionHandlers[Name] extends (...args: ReadonlyArray<any>) => Effect.Effect<any, any, infer R> ? R : never;
|
|
60
|
+
}[keyof ActionHandlers];
|
|
61
|
+
type RivetkitActorDefinitionFor<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = Rivetkit.ActorDefinition<StateOptions.Encoded<State>, undefined, undefined, undefined, undefined, Database, Record<never, never>, Record<never, never>, any>;
|
|
62
|
+
export type WakeOptions<ActorDefinition extends Rivetkit.AnyActorDefinition = Rivetkit.AnyActorDefinition> = {
|
|
63
|
+
readonly rawRivetkitContext: Rivetkit.WakeContextOf<ActorDefinition>;
|
|
64
|
+
};
|
|
65
|
+
type RawWakeContextFor<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = {
|
|
66
|
+
[Key in keyof Rivetkit.WakeContextOf<RivetkitActorDefinitionFor<State, Database>>]: Key extends "state" ? [State] extends [never] ? never : StateOptions.Encoded<State> : Rivetkit.WakeContextOf<RivetkitActorDefinitionFor<State, Database>>[Key];
|
|
67
|
+
};
|
|
68
|
+
type WakeOptionsFor<StateDefinition extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = {
|
|
69
|
+
readonly rawRivetkitContext: RawWakeContextFor<StateDefinition, Database>;
|
|
70
|
+
} & ([StateDefinition] extends [never] ? unknown : {
|
|
71
|
+
readonly state: State.State<StateOptions.Decoded<StateDefinition>, Schema.SchemaError>;
|
|
72
|
+
});
|
|
73
|
+
type WakeFunction<ActionHandlers, R, W extends WakeOptions> = ((wakeOptions: W) => ActionHandlers) | ((wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>);
|
|
74
|
+
type Wake<ActionHandlers, R, RX, W extends WakeOptions> = ActionHandlers | Effect.Effect<ActionHandlers, never, RX> | WakeFunction<ActionHandlers, R, W> | Effect.Effect<WakeFunction<ActionHandlers, R, W>, never, RX>;
|
|
75
|
+
export type AccessorKeyParam = string | Rivetkit.ActorKey;
|
|
76
|
+
/**
|
|
77
|
+
* A typed handle for one actor instance. Each action becomes a
|
|
78
|
+
* method that takes the action's payload-constructor input and
|
|
79
|
+
* returns an Effect with the action's success / typed error
|
|
80
|
+
* channels baked in.
|
|
81
|
+
*/
|
|
82
|
+
export type Handle<Actions extends Action.Any> = {
|
|
83
|
+
readonly [A in Actions as Action.Tag<A>]: (payload: Action.PayloadConstructor<A>) => Effect.Effect<Action.Success<A>, Action.Error<A> | RivetError.RivetError, Action.ServicesClient<A>>;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Yielded by `Actor.client`. Address an actor instance by key, then
|
|
87
|
+
* dispatch typed action calls against the returned `Handle`.
|
|
88
|
+
*/
|
|
89
|
+
export type Accessor<Actions extends Action.Any> = {
|
|
90
|
+
readonly getOrCreate: (key: AccessorKeyParam) => Handle<Actions>;
|
|
91
|
+
};
|
|
92
|
+
type UnknownToNever<T> = unknown extends T ? never : T;
|
|
93
|
+
type ExcludeBuiltInWakeServices<T, _State extends StateOptions.Any> = UnknownToNever<Exclude<T, Scope.Scope | CurrentAddress | Sleep>>;
|
|
94
|
+
type ToLayerRequirements<Actions extends Action.Any, ActionHandlers, State extends StateOptions.Any, R, RX> = ExcludeBuiltInWakeServices<R, State> | ExcludeBuiltInWakeServices<RX, State> | UnknownToNever<ActionHandlerServices<ActionHandlers>> | UnknownToNever<Action.ServicesServer<Actions>> | UnknownToNever<Action.ServicesClient<Actions>> | Registry.Registry;
|
|
95
|
+
/**
|
|
96
|
+
* A Rivet Actor contract. It carries the action schemas and
|
|
97
|
+
* display options, but no server implementation.
|
|
98
|
+
*/
|
|
99
|
+
export interface Actor<Name extends string, Actions extends Action.Any = never> {
|
|
100
|
+
readonly [TypeId]: typeof TypeId;
|
|
101
|
+
readonly name: Name;
|
|
102
|
+
readonly actions: ReadonlyArray<Actions>;
|
|
103
|
+
of<ActionHandlers extends ActionHandlersFrom<Actions>>(actionHandlers: ActionHandlers): ActionHandlers;
|
|
104
|
+
toLayer<ActionHandlers extends ActionHandlersFrom<Actions>, Database extends RivetkitDb.AnyDatabaseProvider = undefined, R = never, RX = never>(wake: Wake<ActionHandlers, R, RX, WakeOptionsFor<never, Database>>, options: StatelessOptions<Database>): Layer.Layer<never, never, ToLayerRequirements<Actions, ActionHandlers, never, R, RX>>;
|
|
105
|
+
toLayer<ActionHandlers extends ActionHandlersFrom<Actions>, R = never, RX = never>(wake: Wake<ActionHandlers, R, RX, WakeOptionsFor<never, undefined>>): Layer.Layer<never, never, ToLayerRequirements<Actions, ActionHandlers, never, R, RX>>;
|
|
106
|
+
toLayer<ActionHandlers extends ActionHandlersFrom<Actions>, State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider = undefined, R = never, RX = never>(wake: Wake<ActionHandlers, R, RX, WakeOptionsFor<State, Database>>, options: StatefulOptions<State, Database>): Layer.Layer<never, never, ToLayerRequirements<Actions, ActionHandlers, State, R, RX>>;
|
|
107
|
+
/**
|
|
108
|
+
* Effect-yielded typed accessor for this actor. Provide a
|
|
109
|
+
* `Client.layer({ ... })` once at the program root; every
|
|
110
|
+
* `yield* SomeActor.client` then dispatches through the same
|
|
111
|
+
* transport.
|
|
112
|
+
*/
|
|
113
|
+
readonly client: Effect.Effect<Accessor<Actions>, never, Client.Client>;
|
|
114
|
+
}
|
|
115
|
+
export type Any = Actor<string, Action.AnyWithProps>;
|
|
116
|
+
export type ActionHandlersFrom<Actions extends Action.Any> = {
|
|
117
|
+
readonly [A in Actions as A["_tag"]]: (envelope: ActionRequest<A>) => Action.ResultFrom<A, any>;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Define a Rivet Actor contract.
|
|
121
|
+
*/
|
|
122
|
+
export declare const make: <const Name extends string, const Actions extends ReadonlyArray<Action.AnyWithProps> = readonly []>(name: Name, options?: {
|
|
123
|
+
readonly actions?: Actions;
|
|
124
|
+
}) => Actor<Name, Actions[number]>;
|
|
125
|
+
export declare function toWakeHandler<ActionHandlers extends object, R, RX, W extends WakeOptions = WakeOptions>(wake: Effect.Effect<(wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>, never, RX>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R | RX>;
|
|
126
|
+
export declare function toWakeHandler<ActionHandlers extends object, RX, W extends WakeOptions = WakeOptions>(wake: Effect.Effect<(wakeOptions: W) => ActionHandlers, never, RX>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, RX>;
|
|
127
|
+
export declare function toWakeHandler<ActionHandlers extends object, R, W extends WakeOptions = WakeOptions>(wake: (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>;
|
|
128
|
+
export declare function toWakeHandler<ActionHandlers extends object, W extends WakeOptions = WakeOptions>(wake: (wakeOptions: W) => ActionHandlers): (wakeOptions: W) => Effect.Effect<ActionHandlers>;
|
|
129
|
+
export declare function toWakeHandler<ActionHandlers extends object, RX, W extends WakeOptions = WakeOptions>(wake: Effect.Effect<ActionHandlers, never, RX>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, RX>;
|
|
130
|
+
export declare function toWakeHandler<ActionHandlers extends object, W extends WakeOptions = WakeOptions>(wake: ActionHandlers): (wakeOptions: W) => Effect.Effect<ActionHandlers>;
|
|
131
|
+
export declare function toWakeHandler<ActionHandlers extends object, R, RX, W extends WakeOptions = WakeOptions>(wake: Wake<ActionHandlers, R, RX, W>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R | RX>;
|
|
132
|
+
export {};
|
|
133
|
+
//# sourceMappingURL=Actor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../src/Actor.ts"],"names":[],"mappings":"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"}
|
package/dist/Actor.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Context, Effect, identity, Layer, Predicate, Scope, Struct, } from "effect";
|
|
2
|
+
import * as Rivetkit from "rivetkit";
|
|
3
|
+
import * as Client from "./Client.js";
|
|
4
|
+
import * as ActionDispatcher from "./internal/ActionDispatcher.js";
|
|
5
|
+
import * as ActorInstanceManager from "./internal/ActorInstanceManager.js";
|
|
6
|
+
import * as ActorStateAdapter from "./internal/ActorStateAdapter.js";
|
|
7
|
+
import { makeActorLogAnnotations } from "./internal/logging.js";
|
|
8
|
+
import * as Registry from "./Registry.js";
|
|
9
|
+
const TypeId = "~@rivetkit/effect/Actor";
|
|
10
|
+
export const isActor = (u) => Predicate.hasProperty(u, TypeId);
|
|
11
|
+
const rivetkitActorOptionsKeys = [
|
|
12
|
+
"name",
|
|
13
|
+
"icon",
|
|
14
|
+
];
|
|
15
|
+
const splitOptions = (options) => ({
|
|
16
|
+
rivetkitOptions: Struct.pick(options, rivetkitActorOptionsKeys),
|
|
17
|
+
effectOptions: Struct.omit(options, rivetkitActorOptionsKeys),
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* Context tag for the current actor instance's address. Provided
|
|
21
|
+
* once per wake when the wake effect runs; capture it into a
|
|
22
|
+
* closure if action handlers need it.
|
|
23
|
+
*/
|
|
24
|
+
export class CurrentAddress extends Context.Service()("@rivetkit/effect/Actor/CurrentAddress") {
|
|
25
|
+
}
|
|
26
|
+
export class Sleep extends Context.Service()("@rivetkit/effect/Actor/Sleep") {
|
|
27
|
+
}
|
|
28
|
+
const Proto = {
|
|
29
|
+
[TypeId]: TypeId,
|
|
30
|
+
toLayer(wake, options = {}) {
|
|
31
|
+
return makeRivetkitActor({
|
|
32
|
+
actor: this,
|
|
33
|
+
wakeHandler: toWakeHandler(wake),
|
|
34
|
+
options,
|
|
35
|
+
}).pipe(Effect.flatMap((rivetKitActor) => Registry.Registry.pipe(Effect.flatMap((registry) => Effect.sync(() => registry.rivetkitActors.set(this.name, rivetKitActor))))), Layer.effectDiscard);
|
|
36
|
+
},
|
|
37
|
+
get client() {
|
|
38
|
+
return Client.Client.pipe(Effect.map((client) => client.makeActorAccessor(this)));
|
|
39
|
+
},
|
|
40
|
+
of: identity,
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Define a Rivet Actor contract.
|
|
44
|
+
*/
|
|
45
|
+
export const make = (name, options) => {
|
|
46
|
+
const self = Object.create(Proto);
|
|
47
|
+
self.name = name;
|
|
48
|
+
self.actions = options?.actions ?? [];
|
|
49
|
+
return self;
|
|
50
|
+
};
|
|
51
|
+
export function toWakeHandler(wake) {
|
|
52
|
+
return (wakeOptions) => {
|
|
53
|
+
const wakeEffect = Effect.isEffect(wake)
|
|
54
|
+
? wake
|
|
55
|
+
: Effect.succeed(wake);
|
|
56
|
+
return wakeEffect.pipe(Effect.flatMap((resolvedWake) => {
|
|
57
|
+
if (typeof resolvedWake === "function") {
|
|
58
|
+
const actionHandlers = resolvedWake(wakeOptions);
|
|
59
|
+
return Effect.isEffect(actionHandlers)
|
|
60
|
+
? actionHandlers
|
|
61
|
+
: Effect.succeed(actionHandlers);
|
|
62
|
+
}
|
|
63
|
+
return Effect.succeed(resolvedWake);
|
|
64
|
+
}));
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const makeRivetkitActor = Effect.fnUntraced(function* ({ actor, wakeHandler, options, }) {
|
|
68
|
+
const { effectOptions, rivetkitOptions } = splitOptions(options);
|
|
69
|
+
const stateAdapter = effectOptions.state === undefined
|
|
70
|
+
? undefined
|
|
71
|
+
: yield* ActorStateAdapter.make(effectOptions.state);
|
|
72
|
+
const instanceManager = yield* ActorInstanceManager.make({
|
|
73
|
+
wakeHandler: (wakeOptions) => wakeHandler(wakeOptions).pipe(Effect.annotateLogs(makeActorLogAnnotations(wakeOptions.rawRivetkitContext))),
|
|
74
|
+
stateAdapter,
|
|
75
|
+
makeContext: (c, scope) => Context.mergeAll(Context.make(CurrentAddress, {
|
|
76
|
+
actorId: c.actorId,
|
|
77
|
+
name: c.name,
|
|
78
|
+
key: c.key,
|
|
79
|
+
}), Context.make(Scope.Scope, scope), Context.make(Sleep, Effect.sync(() => c.sleep()))),
|
|
80
|
+
makeWakeOptions: (c, state) => ({
|
|
81
|
+
rawRivetkitContext: c,
|
|
82
|
+
...(state === undefined ? {} : { state }),
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
const actions = ActionDispatcher.make({
|
|
86
|
+
actor,
|
|
87
|
+
getInstance: instanceManager.get,
|
|
88
|
+
});
|
|
89
|
+
return Rivetkit.actor({
|
|
90
|
+
options: rivetkitOptions,
|
|
91
|
+
...(effectOptions.db ? { db: effectOptions.db } : {}),
|
|
92
|
+
onWake: instanceManager.onWake,
|
|
93
|
+
...(stateAdapter
|
|
94
|
+
? { createState: stateAdapter.createInitialState }
|
|
95
|
+
: {}),
|
|
96
|
+
actions,
|
|
97
|
+
...(instanceManager.onStateChange
|
|
98
|
+
? { onStateChange: instanceManager.onStateChange }
|
|
99
|
+
: {}),
|
|
100
|
+
onSleep: instanceManager.onTeardown,
|
|
101
|
+
onDestroy: instanceManager.onTeardown,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=Actor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Actor.js","sourceRoot":"","sources":["../src/Actor.ts"],"names":[],"mappings":"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"}
|
package/dist/Client.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import * as RivetkitClient from "rivetkit/client";
|
|
3
|
+
import type * as Action from "./Action.ts";
|
|
4
|
+
import type * as Actor from "./Actor.ts";
|
|
5
|
+
import { type TraceMeta } from "./internal/tracing.ts";
|
|
6
|
+
declare const TypeId = "~@rivetkit/effect/Client";
|
|
7
|
+
/**
|
|
8
|
+
* Connection options for the Rivet Engine client transport. Mirrors
|
|
9
|
+
* the `(endpoint, token, namespace)` subset of rivetkit's
|
|
10
|
+
* `ClientConfigInput`.
|
|
11
|
+
*/
|
|
12
|
+
export type Options = Pick<RivetkitClient.ClientConfigInput, "endpoint" | "token" | "namespace">;
|
|
13
|
+
/**
|
|
14
|
+
* Per-call metadata envelope shipped as `args[1]` alongside the encoded
|
|
15
|
+
* payload. The SDK currently uses it for trace propagation (`trace`),
|
|
16
|
+
* but it's intentionally extensible so future cross-cutting concerns —
|
|
17
|
+
* idempotency keys, deadlines, custom headers — can land as additional
|
|
18
|
+
* optional fields without changing the wire shape.
|
|
19
|
+
*/
|
|
20
|
+
export interface ActionMeta {
|
|
21
|
+
readonly trace?: TraceMeta;
|
|
22
|
+
}
|
|
23
|
+
export interface Client {
|
|
24
|
+
readonly [TypeId]: typeof TypeId;
|
|
25
|
+
readonly makeActorAccessor: <Actions extends Action.AnyWithProps>(actor: Actor.Actor<string, Actions>) => Actor.Accessor<Actions>;
|
|
26
|
+
}
|
|
27
|
+
export declare const Client: Context.Service<Client, Client>;
|
|
28
|
+
export declare const make: (options?: Options | undefined) => Effect.Effect<Client, never, import("effect/Scope").Scope>;
|
|
29
|
+
export declare const layer: (options?: Options) => Layer.Layer<Client>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=Client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAC;AACxE,OAAO,KAAK,cAAc,MAAM,iBAAiB,CAAC;AAGlD,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlE,QAAA,MAAM,MAAM,6BAA6B,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,IAAI,CACzB,cAAc,CAAC,iBAAiB,EAChC,UAAU,GAAG,OAAO,GAAG,WAAW,CAClC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC;IAEjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,SAAS,MAAM,CAAC,YAAY,EAC/D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,IAAI,+FA+Ff,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,UAAS,OAAY,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAO9D,CAAC"}
|
package/dist/Client.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Context, Effect, Layer, Record, Result, Schema } from "effect";
|
|
2
|
+
import * as RivetkitClient from "rivetkit/client";
|
|
3
|
+
import * as RivetkitErrors from "rivetkit/errors";
|
|
4
|
+
import { configureBaseLogger } from "rivetkit/log";
|
|
5
|
+
import * as ActionErrorEnvelope from "./internal/ActionErrorEnvelope.js";
|
|
6
|
+
import { getOrCreateBaseLogger } from "./internal/logging.js";
|
|
7
|
+
import { rpcSystem } from "./internal/tracing.js";
|
|
8
|
+
import * as Logger from "./Logger.js";
|
|
9
|
+
import * as RivetError from "./RivetError.js";
|
|
10
|
+
const TypeId = "~@rivetkit/effect/Client";
|
|
11
|
+
export const Client = Context.Service("@rivetkit/effect/Client");
|
|
12
|
+
export const make = Effect.fnUntraced(function* (options = {}) {
|
|
13
|
+
const baseLogger = yield* getOrCreateBaseLogger;
|
|
14
|
+
const rivetkitClient = yield* Effect.acquireRelease(Effect.sync(() => {
|
|
15
|
+
configureBaseLogger(baseLogger);
|
|
16
|
+
return RivetkitClient.createClient(options);
|
|
17
|
+
}), (c) => Effect.promise(() => c.dispose()));
|
|
18
|
+
return Client.of({
|
|
19
|
+
[TypeId]: TypeId,
|
|
20
|
+
makeActorAccessor: (actor) => ({
|
|
21
|
+
getOrCreate: (key) => {
|
|
22
|
+
const rivetkitActorHandle = rivetkitClient.getOrCreate(actor.name, key);
|
|
23
|
+
return Record.fromIterableWith(actor.actions, (action) => {
|
|
24
|
+
const encodePayload = Schema.encodeEffect(Schema.toCodecJson(action.payloadSchema));
|
|
25
|
+
const decodeSuccess = Schema.decodeUnknownEffect(Schema.toCodecJson(action.successSchema));
|
|
26
|
+
const classifyRivetkitActionFailure = makeRivetkitActionFailureClassifier(action.errorSchema);
|
|
27
|
+
const rpcMethod = `${actor.name}/${action._tag}`;
|
|
28
|
+
return [
|
|
29
|
+
action._tag,
|
|
30
|
+
Effect.fn(rpcMethod, {
|
|
31
|
+
kind: "client",
|
|
32
|
+
attributes: {
|
|
33
|
+
"rpc.system.name": rpcSystem,
|
|
34
|
+
"rpc.method": rpcMethod,
|
|
35
|
+
},
|
|
36
|
+
})(function* (payload) {
|
|
37
|
+
const span = yield* Effect.currentSpan;
|
|
38
|
+
const meta = {
|
|
39
|
+
trace: {
|
|
40
|
+
traceId: span.traceId,
|
|
41
|
+
spanId: span.spanId,
|
|
42
|
+
sampled: span.sampled,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
const encodedPayload = yield* encodePayload(payload).pipe(Effect.mapError((cause) => new RivetError.RivetError({
|
|
46
|
+
reason: new RivetError.InvalidEncoding({
|
|
47
|
+
cause: new RivetkitErrors.RivetError("encoding", "invalid", "Could not encode action payload", {
|
|
48
|
+
public: true,
|
|
49
|
+
metadata: cause,
|
|
50
|
+
}),
|
|
51
|
+
}),
|
|
52
|
+
})));
|
|
53
|
+
const encodedSuccess = yield* Effect.tryPromise((abortSignal) => rivetkitActorHandle.action({
|
|
54
|
+
name: action._tag,
|
|
55
|
+
args: [encodedPayload, meta],
|
|
56
|
+
signal: abortSignal,
|
|
57
|
+
})).pipe(Effect.catch((unknownError) => classifyRivetkitActionFailure(unknownError.cause).pipe(Effect.flatMap(Effect.fail))));
|
|
58
|
+
return yield* decodeSuccess(encodedSuccess).pipe(Effect.orDie);
|
|
59
|
+
}),
|
|
60
|
+
];
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
export const layer = (options = {}) => Layer.unwrap(Effect.map(getOrCreateBaseLogger, (baseLogger) => Layer.effect(Client, make(options)).pipe(Layer.provideMerge(Logger.layerPino(baseLogger)))));
|
|
67
|
+
const decodeActionErrorEnvelope = Schema.decodeUnknownEffect(ActionErrorEnvelope.ActionErrorEnvelope);
|
|
68
|
+
/** @internal */
|
|
69
|
+
export const makeRivetkitActionFailureClassifier = (actionErrorSchema) => {
|
|
70
|
+
const decodeActionError = Schema.decodeUnknownEffect(Schema.toCodecJson(actionErrorSchema));
|
|
71
|
+
return Effect.fnUntraced(function* (cause) {
|
|
72
|
+
// In the case where the `cause` is not a `RivetError`. In principle, this shouldn't happen.
|
|
73
|
+
if (!RivetkitErrors.isRivetErrorLike(cause)) {
|
|
74
|
+
return RivetError.fromUnknown(cause);
|
|
75
|
+
}
|
|
76
|
+
const rivetkitRivetError = RivetkitErrors.toRivetError(cause);
|
|
77
|
+
const actionErrorEnvelope = yield* Effect.result(decodeActionErrorEnvelope(rivetkitRivetError.metadata));
|
|
78
|
+
// If the error's `metadata` is not a valid action error envelope, then
|
|
79
|
+
// it means it's not a user-declared action error.
|
|
80
|
+
if (Result.isFailure(actionErrorEnvelope)) {
|
|
81
|
+
return RivetError.fromRivetkitRivetError(rivetkitRivetError);
|
|
82
|
+
}
|
|
83
|
+
const actionErrorResult = yield* Effect.result(decodeActionError(actionErrorEnvelope.success.error));
|
|
84
|
+
// The envelope was valid, but the inner payload doesn't match the
|
|
85
|
+
// declared schema — surface as `ActionErrorDecodeFailed`
|
|
86
|
+
if (Result.isFailure(actionErrorResult)) {
|
|
87
|
+
return new RivetError.RivetError({
|
|
88
|
+
reason: new RivetError.ActionErrorDecodeFailed({
|
|
89
|
+
cause: actionErrorResult.failure,
|
|
90
|
+
rivetError: rivetkitRivetError,
|
|
91
|
+
}),
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Successfully decoded user-declared action error
|
|
95
|
+
return actionErrorResult.success;
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=Client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
|
package/dist/Logger.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Layer } from "effect";
|
|
2
|
+
import type { Logger as PinoLogger } from "rivetkit/log";
|
|
3
|
+
import { BaseLogger } from "./internal/logging.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Builds a logging layer from a custom Pino-compatible logger.
|
|
6
|
+
*
|
|
7
|
+
* The layer installs the matching Effect logger and configures the underlying
|
|
8
|
+
* RivetKit TypeScript SDK logs to go through the same logger.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { Logger } from "@rivetkit/effect"
|
|
13
|
+
* import { pino } from "pino"
|
|
14
|
+
*
|
|
15
|
+
* const LoggerLive = Logger.layerPino(
|
|
16
|
+
* pino({ transport: { target: "pino-pretty" } })
|
|
17
|
+
* )
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const layerPino: (baseLogger: PinoLogger) => Layer.Layer<BaseLogger, never, never>;
|
|
21
|
+
/**
|
|
22
|
+
* Default RivetKit Effect logging layer.
|
|
23
|
+
*
|
|
24
|
+
* The layer creates a base logger from `References.MinimumLogLevel` and installs
|
|
25
|
+
* the Effect logger adapter. Applications that want custom formatting or
|
|
26
|
+
* transports should provide {@link layerPino} instead.
|
|
27
|
+
*/
|
|
28
|
+
export declare const layer: Layer.Layer<never>;
|
|
29
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACN,UAAU,EAGV,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,YAAY,UAAU,0CAO9C,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAEpC,CAAC"}
|