effect-cf 0.39.1 → 0.40.1
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/CHANGELOG.md +18 -0
- package/README.md +9 -1
- package/dist/AiGateway.d.mts +86 -0
- package/dist/AiGateway.mjs +178 -0
- package/dist/AnalyticsEngine.d.mts +170 -0
- package/dist/AnalyticsEngine.mjs +275 -0
- package/dist/{Artifacts-B3r3RuTB.d.mts → Artifacts.d.mts} +8 -5
- package/dist/{Artifacts-CBxWGeZB.mjs → Artifacts.mjs} +9 -5
- package/dist/Binding.d.mts +45 -0
- package/dist/{Binding-C82jRhdr.mjs → Binding.mjs} +8 -4
- package/dist/BrowserRendering.d.mts +85 -0
- package/dist/BrowserRendering.mjs +81 -0
- package/dist/Cache.d.mts +40 -0
- package/dist/Cache.mjs +51 -0
- package/dist/CloudflareOtlp.d.mts +95 -0
- package/dist/CloudflareOtlp.mjs +125 -0
- package/dist/CloudflareTracer.d.mts +20 -0
- package/dist/CloudflareTracer.mjs +69 -0
- package/dist/ComputerArtifacts.d.mts +2 -2
- package/dist/ComputerArtifacts.mjs +3 -2
- package/dist/ComputerWorkspace.d.mts +36 -31
- package/dist/ComputerWorkspace.mjs +8 -3
- package/dist/ComputerWorkspaceHost.d.mts +1 -1
- package/dist/ComputerWorkspaceHost.mjs +1 -1
- package/dist/{ContainerNamespace-DbLaeFhN.d.mts → ContainerNamespace.d.mts} +16 -12
- package/dist/ContainerNamespace.mjs +165 -0
- package/dist/D1.d.mts +33 -0
- package/dist/D1.mjs +32 -0
- package/dist/DurableObject.d.mts +103 -0
- package/dist/DurableObject.mjs +77 -0
- package/dist/DurableObjectAlarm.d.mts +187 -0
- package/dist/DurableObjectAlarm.mjs +344 -0
- package/dist/DurableObjectDefinition.d.mts +87 -0
- package/dist/DurableObjectDefinition.mjs +125 -0
- package/dist/DurableObjectNamespace.d.mts +154 -0
- package/dist/DurableObjectNamespace.mjs +144 -0
- package/dist/DurableObjectRpcWebSocket.d.mts +112 -0
- package/dist/DurableObjectRpcWebSocket.mjs +547 -0
- package/dist/DurableObjectSqlite.d.mts +11 -0
- package/dist/DurableObjectSqlite.mjs +16 -0
- package/dist/DurableObjectState.d.mts +65 -0
- package/dist/DurableObjectState.mjs +47 -0
- package/dist/DurableObjectStorage.d.mts +112 -0
- package/dist/{DurableObjectState-DLL0YgBd.mjs → DurableObjectStorage.mjs} +19 -157
- package/dist/DurableObjectWebSocket.d.mts +83 -0
- package/dist/DurableObjectWebSocket.mjs +120 -0
- package/dist/Email.d.mts +106 -0
- package/dist/Email.mjs +247 -0
- package/dist/Environment.d.mts +59 -0
- package/dist/{ErrorMessage-Byx2OgNd.mjs → Environment.mjs} +7 -18
- package/dist/{Hyperdrive-HrwFlZ6x.d.mts → Hyperdrive.d.mts} +8 -5
- package/dist/Hyperdrive.mjs +32 -0
- package/dist/HyperdrivePg.d.mts +4 -3
- package/dist/HyperdrivePg.mjs +3 -1
- package/dist/Images.d.mts +191 -0
- package/dist/Images.mjs +112 -0
- package/dist/Kv.d.mts +84 -0
- package/dist/Kv.mjs +132 -0
- package/dist/Mcp.d.mts +5 -3
- package/dist/Mcp.mjs +13 -4
- package/dist/Queue.d.mts +68 -0
- package/dist/Queue.mjs +54 -0
- package/dist/QueueBinding.d.mts +42 -0
- package/dist/QueueBinding.mjs +69 -0
- package/dist/QueueDefinition.d.mts +48 -0
- package/dist/QueueDefinition.mjs +63 -0
- package/dist/R2.d.mts +89 -0
- package/dist/R2.mjs +117 -0
- package/dist/Rpc.d.mts +29 -0
- package/dist/Rpc.mjs +28 -0
- package/dist/RpcDefinition.d.mts +116 -0
- package/dist/RpcDefinition.mjs +184 -0
- package/dist/RpcTracing.d.mts +52 -0
- package/dist/RpcTracing.mjs +77 -0
- package/dist/Sandbox.d.mts +10 -5
- package/dist/Sandbox.mjs +9 -3
- package/dist/ServiceBinding.d.mts +112 -0
- package/dist/ServiceBinding.mjs +145 -0
- package/dist/Vectorize.d.mts +68 -0
- package/dist/Vectorize.mjs +76 -0
- package/dist/Vitest.d.mts +6 -4
- package/dist/Vitest.mjs +8 -4
- package/dist/WebTransport.d.mts +66 -0
- package/dist/WebTransport.mjs +63 -0
- package/dist/Worker.d.mts +139 -0
- package/dist/Worker.mjs +141 -0
- package/dist/WorkerDefinition.d.mts +100 -0
- package/dist/WorkerDefinition.mjs +103 -0
- package/dist/WorkersAi.d.mts +84 -0
- package/dist/WorkersAi.mjs +84 -0
- package/dist/Workflow.d.mts +91 -0
- package/dist/Workflow.mjs +139 -0
- package/dist/{WorkflowBinding-DtVykUCz.d.mts → WorkflowBinding.d.mts} +14 -10
- package/dist/WorkflowBinding.mjs +100 -0
- package/dist/WorkflowDefinition.d.mts +51 -0
- package/dist/WorkflowDefinition.mjs +69 -0
- package/dist/{rolldown-runtime-D7D4PA-g.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
- package/dist/index.d.mts +40 -1800
- package/dist/index.mjs +40 -3123
- package/dist/{ComputerWorkspaceHostRegistry-CY5Fv4Ng.mjs → internal/ComputerWorkspaceHostRegistry.mjs} +1 -1
- package/dist/internal/Entrypoint.mjs +37 -0
- package/dist/internal/ErrorMessage.mjs +17 -0
- package/dist/internal/NativeCallback.mjs +33 -0
- package/dist/internal/RpcInvocation.d.mts +13 -0
- package/dist/internal/RpcInvocation.mjs +34 -0
- package/dist/internal/Runtime.mjs +31 -0
- package/dist/internal/Telemetry.mjs +20 -0
- package/dist/{WorkerContext-Yobnfw-K.mjs → internal/WorkerContext.mjs} +4 -31
- package/package.json +1 -1
- package/src/AiGateway.ts +5 -1
- package/src/AnalyticsEngine.ts +14 -19
- package/src/Artifacts.ts +6 -1
- package/src/Binding.ts +5 -1
- package/src/BrowserRendering.ts +5 -1
- package/src/Cache.ts +5 -1
- package/src/CloudflareOtlp.ts +12 -10
- package/src/CloudflareTracer.ts +7 -1
- package/src/ComputerArtifacts.ts +2 -1
- package/src/ComputerWorkspace.ts +7 -1
- package/src/ContainerNamespace.ts +6 -1
- package/src/D1.ts +4 -1
- package/src/DurableObject.ts +122 -29
- package/src/DurableObjectAlarm.ts +185 -52
- package/src/DurableObjectDefinition.ts +22 -22
- package/src/DurableObjectNamespace.ts +4 -1
- package/src/DurableObjectRpcWebSocket.ts +7 -1
- package/src/DurableObjectSqlite.ts +2 -1
- package/src/DurableObjectState.ts +4 -1
- package/src/DurableObjectStorage.ts +11 -13
- package/src/DurableObjectWebSocket.ts +5 -1
- package/src/Email.ts +5 -1
- package/src/Environment.ts +6 -1
- package/src/Hyperdrive.ts +4 -1
- package/src/HyperdrivePg.ts +3 -1
- package/src/Images.ts +7 -1
- package/src/Kv.ts +7 -1
- package/src/Mcp.ts +13 -13
- package/src/Queue.ts +3 -1
- package/src/QueueBinding.ts +5 -1
- package/src/QueueDefinition.ts +4 -1
- package/src/R2.ts +7 -1
- package/src/Rpc.ts +4 -1
- package/src/RpcDefinition.ts +4 -1
- package/src/RpcTracing.ts +9 -1
- package/src/Sandbox.ts +7 -1
- package/src/ServiceBinding.ts +6 -1
- package/src/Vectorize.ts +7 -1
- package/src/Vitest.ts +5 -1
- package/src/WebTransport.ts +6 -1
- package/src/Worker.ts +10 -16
- package/src/WorkerDefinition.ts +3 -1
- package/src/WorkersAi.ts +7 -1
- package/src/Workflow.ts +8 -11
- package/src/WorkflowBinding.ts +6 -1
- package/src/WorkflowDefinition.ts +4 -1
- package/src/internal/Entrypoint.ts +3 -1
- package/src/internal/ErrorMessage.ts +1 -1
- package/src/internal/NativeCallback.ts +3 -1
- package/src/internal/RpcInvocation.ts +5 -1
- package/src/internal/Runtime.ts +5 -1
- package/src/internal/Telemetry.ts +4 -3
- package/src/internal/WorkerContext.ts +3 -1
- package/dist/Binding-DKcLrQCM.d.mts +0 -94
- package/dist/DurableObjectState-DJ0K-zyd.d.mts +0 -244
- package/dist/Worker-XsGJsCJX.mjs +0 -885
- package/dist/Worker-gV4mDqIs.d.mts +0 -641
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# effect-cf
|
|
2
2
|
|
|
3
|
+
## 0.40.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#151](https://github.com/danieljvdm/effect-cf/pull/151) [`f6c9c9f`](https://github.com/danieljvdm/effect-cf/commit/f6c9c9f8ff504d44ab9c5c0d0fa6fc4c47a98039) Thanks [@danieljvdm](https://github.com/danieljvdm)! - Reduce consumer bundles by preserving module boundaries in the published package and avoiding unused telemetry exporters. Consumers using only KV no longer retain unrelated Workers, Workflows, or Node async-hooks imports.
|
|
8
|
+
|
|
9
|
+
- [#153](https://github.com/danieljvdm/effect-cf/pull/153) [`00a1247`](https://github.com/danieljvdm/effect-cf/commit/00a1247cfff4641539ffdb3928b56e4887e32499) Thanks [@danieljvdm](https://github.com/danieljvdm)! - Reduce unused Effect code retained by consumer bundlers such as Wrangler and esbuild. Existing package imports and APIs continue to work without application changes.
|
|
10
|
+
|
|
11
|
+
## 0.40.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [#146](https://github.com/danieljvdm/effect-cf/pull/146) [`376c9cc`](https://github.com/danieljvdm/effect-cf/commit/376c9ccb16c7ee6a3d6ac2c6f8d6c91ad0b237fc) Thanks [@danieljvdm](https://github.com/danieljvdm)! - Add schema-bound scheduling, cancellation, and transactions through `DurableObjectAlarm.Tag`. Register the service's complete `handlers(...)` implementation in a Durable Object's `alarms:` option, then yield the service to schedule work. Missing registration or handlers fail typechecking. Scheduling checks tag/payload pairs and schema-encodes payloads before storage.
|
|
16
|
+
|
|
17
|
+
Durable Object entrypoints provide registered alarm services to application layers and handlers. The raw scheduler is provided automatically and remains available for dynamic tags; existing explicit layers and handler-only `define(...)` calls remain supported.
|
|
18
|
+
|
|
19
|
+
Unknown stored alarm tags now report `StoredAlarmDecodeError` and follow the delivery failure policy instead of being silently acknowledged. Applications intentionally retiring tags can handle them through `onFailure`.
|
|
20
|
+
|
|
3
21
|
## 0.39.1
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -45,10 +45,18 @@ const greeting = Effect.gen(function* () {
|
|
|
45
45
|
|
|
46
46
|
Declare `SETTINGS` in `wrangler.jsonc` and pass `SettingsLive` to `Worker.make`. Other bindings use the same tag/layer pattern.
|
|
47
47
|
|
|
48
|
-
The [
|
|
48
|
+
The [document outbox example](https://github.com/danieljvdm/effect-cf/tree/main/examples/outbox) saves document revisions and their delivery alarms atomically, then archives them to R2 outside the transaction.
|
|
49
49
|
|
|
50
50
|
For atomic application writes and alarm changes, see the [alarm transaction example](tests/fixtures/alarm-transaction-consumer.ts) and [API contract](src/DurableObjectAlarm.ts).
|
|
51
51
|
|
|
52
|
+
Define a typed alarm service with `class Alarms extends DurableObjectAlarm.Tag<Alarms>()("Alarms", { ...schemas }) {}`. Pass `Alarms.handlers({ ...implementations })` to the DO's `alarms:` option, then `yield* Alarms` to schedule or cancel alarms and open transactions. All declared handlers are required. The registration provides the service to application layers, initialization, and event handlers; declaring schemas alone does not provide a scheduler.
|
|
53
|
+
|
|
54
|
+
Scheduling accepts decoded payloads, encodes them with the declared schema, and checks that the result is JSON before storage. Transaction callbacks expose the same typed mutations and retain the raw scheduler's rollback and callback-lifetime rules.
|
|
55
|
+
|
|
56
|
+
`DurableObject.make` and tagged definitions' `.make` still provide the raw `DurableObjectAlarm` service automatically for dynamic tags and JSON payloads. `DurableObjectAlarm.define({ ... }).handlers(...)` remains a handler-only helper for raw scheduling. No alarm tables or native alarms are created until the scheduler is used. Outside these entrypoints, provide the raw scheduler layer explicitly. A typed registration exposes `layer` and `run` for custom runtimes and tests; custom runtimes must install both.
|
|
57
|
+
|
|
58
|
+
Unknown stored tags produce `StoredAlarmDecodeError` and follow the configured delivery failure policy rather than being acknowledged silently. Use the raw scheduler's `cancelAlarm` to remove retired tags, including repeating alarms.
|
|
59
|
+
|
|
52
60
|
## Cloudflare Observability traces
|
|
53
61
|
|
|
54
62
|
`CloudflareTracer.layer` sends existing `Effect.withSpan` and named `Effect.fn`
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { WorkerEnvironment } from "./Environment.mjs";
|
|
2
|
+
import { BindingNotFoundError, BindingValidationError } from "./Binding.mjs";
|
|
3
|
+
import { WorkersAiBinding, isWorkersAiBinding } from "./WorkersAi.mjs";
|
|
4
|
+
import * as Context$1 from "effect/Context";
|
|
5
|
+
import * as Effect from "effect/Effect";
|
|
6
|
+
import { Layer } from "effect";
|
|
7
|
+
declare namespace AiGateway_d_exports {
|
|
8
|
+
export { AiGatewayBinding, AiGatewayClient, AiGatewayDefinition, AiGatewayFetchOptions, AiGatewayHeaders, AiGatewayLog, AiGatewayOperationError, AiGatewayPatchLog, AiGatewayProvider, AiGatewayRunOptions, AiGatewayService, AiGatewayUniversalRequest, LayerOptions, Tag, TagClass, isAiGatewayBinding, layer, make, makeClient, makeClientFromAi, makeHttpClient };
|
|
9
|
+
}
|
|
10
|
+
declare const AiGatewayOperationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
11
|
+
readonly _tag: "AiGatewayOperationError";
|
|
12
|
+
} & Readonly<A>;
|
|
13
|
+
declare class AiGatewayOperationError extends AiGatewayOperationError_base<{
|
|
14
|
+
readonly binding: string;
|
|
15
|
+
readonly operation: string;
|
|
16
|
+
readonly cause: unknown;
|
|
17
|
+
}> {
|
|
18
|
+
get message(): string;
|
|
19
|
+
}
|
|
20
|
+
interface AiGatewayDefinition {
|
|
21
|
+
readonly binding: string;
|
|
22
|
+
readonly gatewayId: string;
|
|
23
|
+
readonly accountId?: string;
|
|
24
|
+
}
|
|
25
|
+
type AiGatewayBinding = CloudflareAiGateway;
|
|
26
|
+
type AiGatewayRunData = Parameters<AiGatewayBinding["run"]>[0];
|
|
27
|
+
type AiGatewayPatchLog = Parameters<AiGatewayBinding["patchLog"]>[1];
|
|
28
|
+
type AiGatewayLog = Awaited<ReturnType<AiGatewayBinding["getLog"]>>;
|
|
29
|
+
type AiGatewayProvider = NonNullable<Parameters<AiGatewayBinding["getUrl"]>[0]>;
|
|
30
|
+
type AiGatewayUniversalRequest = Exclude<AiGatewayRunData, ReadonlyArray<unknown>>;
|
|
31
|
+
type AiGatewayHeaders = NonNullable<AiGatewayUniversalRequest["headers"]>;
|
|
32
|
+
type AiGatewayRunOptions = Parameters<CloudflareAiGateway["run"]>[1];
|
|
33
|
+
type AiGatewayBindingCandidate = Parameters<typeof isWorkersAiBinding>[0];
|
|
34
|
+
interface AiGatewayFetchOptions {
|
|
35
|
+
readonly provider?: AiGatewayProvider;
|
|
36
|
+
readonly path?: string;
|
|
37
|
+
readonly init?: RequestInit;
|
|
38
|
+
}
|
|
39
|
+
interface AiGatewayClient {
|
|
40
|
+
readonly run: (data: AiGatewayUniversalRequest | ReadonlyArray<AiGatewayUniversalRequest>, options?: AiGatewayRunOptions) => Effect.Effect<Response, AiGatewayOperationError>;
|
|
41
|
+
readonly getUrl: (provider?: AiGatewayProvider) => Effect.Effect<string, AiGatewayOperationError>;
|
|
42
|
+
readonly fetch: (options: AiGatewayFetchOptions) => Effect.Effect<Response, AiGatewayOperationError>;
|
|
43
|
+
readonly patchLog: (logId: string, data: AiGatewayPatchLog) => Effect.Effect<void, AiGatewayOperationError>;
|
|
44
|
+
readonly getLog: (logId: string) => Effect.Effect<AiGatewayLog, AiGatewayOperationError>;
|
|
45
|
+
readonly rawUnsafe: Effect.Effect<AiGatewayBinding, AiGatewayOperationError>;
|
|
46
|
+
readonly definition: AiGatewayDefinition;
|
|
47
|
+
}
|
|
48
|
+
declare const AiGatewayServiceTypeId: unique symbol;
|
|
49
|
+
interface AiGatewayService<Id extends string> {
|
|
50
|
+
readonly [AiGatewayServiceTypeId]: {
|
|
51
|
+
readonly id: Id;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
type LayerOptions = {
|
|
55
|
+
readonly binding: string;
|
|
56
|
+
readonly gatewayId: string;
|
|
57
|
+
readonly accountId?: string;
|
|
58
|
+
};
|
|
59
|
+
interface TagClass<Self, Id extends string> extends Context$1.ServiceClass<Self, Id, AiGatewayClient> {
|
|
60
|
+
readonly id: Id;
|
|
61
|
+
readonly layer: (options: LayerOptions) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError | AiGatewayOperationError, WorkerEnvironment>;
|
|
62
|
+
}
|
|
63
|
+
declare const isAiGatewayBinding: (value: AiGatewayBindingCandidate) => value is WorkersAiBinding;
|
|
64
|
+
declare const makeClient: (definition: AiGatewayDefinition, gateway: AiGatewayBinding) => {
|
|
65
|
+
definition: AiGatewayDefinition;
|
|
66
|
+
run: (data: import("@cloudflare/workers-types").AIGatewayUniversalRequest | readonly import("@cloudflare/workers-types").AIGatewayUniversalRequest[], options?: {
|
|
67
|
+
gateway?: import("@cloudflare/workers-types").UniversalGatewayOptions;
|
|
68
|
+
extraHeaders?: object;
|
|
69
|
+
signal?: import("@cloudflare/workers-types").AbortSignal;
|
|
70
|
+
} | undefined) => Effect.Effect<import("@cloudflare/workers-types").Response, AiGatewayOperationError, never>;
|
|
71
|
+
getUrl: (provider?: string | undefined) => Effect.Effect<string, AiGatewayOperationError, never>;
|
|
72
|
+
fetch: (options: AiGatewayFetchOptions) => Effect.Effect<Response, AiGatewayOperationError, never>;
|
|
73
|
+
patchLog: (logId: string, data: import("@cloudflare/workers-types").AiGatewayPatchLog) => Effect.Effect<void, AiGatewayOperationError, never>;
|
|
74
|
+
getLog: (logId: string) => Effect.Effect<import("@cloudflare/workers-types").AiGatewayLog, AiGatewayOperationError, never>;
|
|
75
|
+
rawUnsafe: Effect.Effect<CloudflareAiGateway, never, never>;
|
|
76
|
+
};
|
|
77
|
+
declare const makeClientFromAi: (definition: AiGatewayDefinition, ai: WorkersAiBinding) => AiGatewayClient;
|
|
78
|
+
declare const makeHttpClient: (definition: Omit<AiGatewayDefinition, "binding"> & {
|
|
79
|
+
readonly accountId: string;
|
|
80
|
+
readonly binding?: string;
|
|
81
|
+
}, request?: typeof fetch) => AiGatewayClient;
|
|
82
|
+
declare const layer: <Self>(tag: Context$1.Service<Self, AiGatewayClient>, definition: AiGatewayDefinition) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
|
|
83
|
+
declare const make: <Id extends string>(id: Id) => TagClass<AiGatewayService<Id>, Id>;
|
|
84
|
+
declare const Tag: <Self>() => <Id extends string>(id: Id) => TagClass<Self, Id>;
|
|
85
|
+
//#endregion
|
|
86
|
+
export { AiGatewayBinding, AiGatewayClient, AiGatewayDefinition, AiGatewayFetchOptions, AiGatewayHeaders, AiGatewayLog, AiGatewayOperationError, AiGatewayPatchLog, AiGatewayProvider, AiGatewayRunOptions, AiGatewayService, AiGatewayUniversalRequest, AiGateway_d_exports, LayerOptions, Tag, TagClass, isAiGatewayBinding, layer, make, makeClient, makeClientFromAi, makeHttpClient };
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { __exportAll } from "./_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
import { layer as layer$1 } from "./Binding.mjs";
|
|
3
|
+
import { causeMessage } from "./internal/ErrorMessage.mjs";
|
|
4
|
+
import { isWorkersAiBinding } from "./WorkersAi.mjs";
|
|
5
|
+
import * as Context from "effect/Context";
|
|
6
|
+
import * as Data from "effect/Data";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as S from "effect/Schema";
|
|
9
|
+
//#region src/AiGateway.ts
|
|
10
|
+
var AiGateway_exports = /* @__PURE__ */ __exportAll({
|
|
11
|
+
AiGatewayOperationError: () => AiGatewayOperationError,
|
|
12
|
+
Tag: () => Tag,
|
|
13
|
+
isAiGatewayBinding: () => isAiGatewayBinding,
|
|
14
|
+
layer: () => layer,
|
|
15
|
+
make: () => make,
|
|
16
|
+
makeClient: () => makeClient,
|
|
17
|
+
makeClientFromAi: () => makeClientFromAi,
|
|
18
|
+
makeHttpClient: () => makeHttpClient
|
|
19
|
+
});
|
|
20
|
+
const expectedAiGatewayBinding = "Workers AI binding with gateway()";
|
|
21
|
+
var AiGatewayOperationError = class extends Data.TaggedError("AiGatewayOperationError") {
|
|
22
|
+
get message() {
|
|
23
|
+
return `AI Gateway ${this.operation} failed for binding "${this.binding}": ${causeMessage(this.cause)}`;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const AiGatewayMetadata = S.Record(S.String, S.Union([
|
|
27
|
+
S.String,
|
|
28
|
+
S.Number,
|
|
29
|
+
S.Boolean,
|
|
30
|
+
S.Null
|
|
31
|
+
]));
|
|
32
|
+
const AiGatewayHttpMetadata = S.Union([AiGatewayMetadata, S.fromJsonString(AiGatewayMetadata)]);
|
|
33
|
+
const AiGatewayLogResponse = S.Struct({
|
|
34
|
+
success: S.Literal(true),
|
|
35
|
+
result: S.Struct({
|
|
36
|
+
id: S.String,
|
|
37
|
+
provider: S.String,
|
|
38
|
+
model: S.String,
|
|
39
|
+
model_type: S.optional(S.String),
|
|
40
|
+
path: S.String,
|
|
41
|
+
duration: S.Number,
|
|
42
|
+
request_type: S.optional(S.String),
|
|
43
|
+
request_content_type: S.optional(S.String),
|
|
44
|
+
status_code: S.Number,
|
|
45
|
+
response_content_type: S.optional(S.String),
|
|
46
|
+
success: S.Boolean,
|
|
47
|
+
cached: S.Boolean,
|
|
48
|
+
tokens_in: S.optional(S.Number),
|
|
49
|
+
tokens_out: S.optional(S.Number),
|
|
50
|
+
metadata: S.optional(AiGatewayHttpMetadata),
|
|
51
|
+
step: S.optional(S.Number),
|
|
52
|
+
cost: S.optional(S.Number),
|
|
53
|
+
custom_cost: S.optional(S.Boolean),
|
|
54
|
+
request_size: S.Number,
|
|
55
|
+
request_head: S.optional(S.String),
|
|
56
|
+
request_head_complete: S.Boolean,
|
|
57
|
+
response_size: S.Number,
|
|
58
|
+
response_head: S.optional(S.String),
|
|
59
|
+
response_head_complete: S.Boolean,
|
|
60
|
+
created_at: S.DateFromString
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
const AiGatewayPatchLogResponse = S.Struct({
|
|
64
|
+
success: S.Literal(true),
|
|
65
|
+
result: S.Unknown
|
|
66
|
+
});
|
|
67
|
+
const decodeAiGatewayLogResponse = S.decodeUnknownPromise(AiGatewayLogResponse);
|
|
68
|
+
const decodeAiGatewayPatchLogResponse = S.decodeUnknownPromise(AiGatewayPatchLogResponse);
|
|
69
|
+
const aiGatewayError = (binding, operation, cause) => new AiGatewayOperationError({
|
|
70
|
+
binding,
|
|
71
|
+
operation,
|
|
72
|
+
cause
|
|
73
|
+
});
|
|
74
|
+
const tryAiGatewayPromise = (binding, operation, evaluate) => Effect.tryPromise({
|
|
75
|
+
try: evaluate,
|
|
76
|
+
catch: (cause) => aiGatewayError(binding, operation, cause)
|
|
77
|
+
});
|
|
78
|
+
const mergeAbortSignals = (userSignal, signal) => userSignal === null || userSignal === void 0 ? signal : AbortSignal.any([userSignal, signal]);
|
|
79
|
+
const tryAiGatewaySync = (binding, operation, evaluate) => Effect.try({
|
|
80
|
+
try: evaluate,
|
|
81
|
+
catch: (cause) => aiGatewayError(binding, operation, cause)
|
|
82
|
+
});
|
|
83
|
+
const providerUrl = (baseUrl, path = "") => {
|
|
84
|
+
const url = new URL(baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`);
|
|
85
|
+
const normalizedPath = path.replace(/^\/+/, "");
|
|
86
|
+
return normalizedPath === "" ? url : new URL(normalizedPath, url);
|
|
87
|
+
};
|
|
88
|
+
const gatewayUrl = (definition) => `https://gateway.ai.cloudflare.com/v1/${definition.accountId}/${definition.gatewayId}/`;
|
|
89
|
+
const ensureSuccessfulResponse = (response) => {
|
|
90
|
+
if (!response.ok) throw new Error(`AI Gateway HTTP request failed with status ${response.status}`);
|
|
91
|
+
};
|
|
92
|
+
const isAiGatewayBinding = (value) => isWorkersAiBinding(value);
|
|
93
|
+
const makeClient = (definition, gateway) => ({
|
|
94
|
+
definition,
|
|
95
|
+
run: Effect.fn("AiGateway.run")((data, options) => tryAiGatewayPromise(definition.binding, "run", () => gateway.run(Array.isArray(data) ? [...data] : data, options))),
|
|
96
|
+
getUrl: Effect.fn("AiGateway.getUrl")((provider) => tryAiGatewayPromise(definition.binding, "getUrl", () => gateway.getUrl(provider))),
|
|
97
|
+
fetch: Effect.fn("AiGateway.fetch")(function* (options) {
|
|
98
|
+
const baseUrl = yield* tryAiGatewayPromise(definition.binding, "getUrl", () => gateway.getUrl(options.provider));
|
|
99
|
+
return yield* tryAiGatewayPromise(definition.binding, "fetch", (signal) => fetch(providerUrl(baseUrl, options.path).href, {
|
|
100
|
+
...options.init,
|
|
101
|
+
signal: mergeAbortSignals(options.init?.signal, signal)
|
|
102
|
+
}));
|
|
103
|
+
}),
|
|
104
|
+
patchLog: Effect.fn("AiGateway.patchLog")((logId, data) => tryAiGatewayPromise(definition.binding, "patchLog", () => gateway.patchLog(logId, data))),
|
|
105
|
+
getLog: Effect.fn("AiGateway.getLog")((logId) => tryAiGatewayPromise(definition.binding, "getLog", () => gateway.getLog(logId))),
|
|
106
|
+
rawUnsafe: Effect.succeed(gateway)
|
|
107
|
+
});
|
|
108
|
+
const makeClientFromAi = (definition, ai) => {
|
|
109
|
+
const gateway = tryAiGatewaySync(definition.binding, "gateway", () => ai.gateway(definition.gatewayId));
|
|
110
|
+
const withGateway = (operation) => gateway.pipe(Effect.flatMap(operation));
|
|
111
|
+
return {
|
|
112
|
+
definition,
|
|
113
|
+
run: (data, options) => withGateway((raw) => makeClient(definition, raw).run(data, options)),
|
|
114
|
+
getUrl: (provider) => withGateway((raw) => makeClient(definition, raw).getUrl(provider)),
|
|
115
|
+
fetch: (options) => withGateway((raw) => makeClient(definition, raw).fetch(options)),
|
|
116
|
+
patchLog: (logId, data) => withGateway((raw) => makeClient(definition, raw).patchLog(logId, data)),
|
|
117
|
+
getLog: (logId) => withGateway((raw) => makeClient(definition, raw).getLog(logId)),
|
|
118
|
+
rawUnsafe: gateway
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
const makeHttpClient = (definition, request = fetch) => {
|
|
122
|
+
const binding = definition.binding ?? "AI_GATEWAY";
|
|
123
|
+
const clientDefinition = {
|
|
124
|
+
binding,
|
|
125
|
+
gatewayId: definition.gatewayId,
|
|
126
|
+
accountId: definition.accountId
|
|
127
|
+
};
|
|
128
|
+
const getUrl = (provider) => Effect.succeed(provider === void 0 ? gatewayUrl(definition) : providerUrl(gatewayUrl(definition), provider).href.replace(/\/$/, ""));
|
|
129
|
+
const extraHeaders = (options) => {
|
|
130
|
+
if (options?.extraHeaders === void 0 || Array.isArray(options.extraHeaders) || options.extraHeaders instanceof Headers) return options?.extraHeaders;
|
|
131
|
+
return Object.fromEntries(Object.entries(options.extraHeaders).map(([key, value]) => [key, String(value)]));
|
|
132
|
+
};
|
|
133
|
+
return {
|
|
134
|
+
definition: clientDefinition,
|
|
135
|
+
run: Effect.fn("AiGateway.run")((data, options) => tryAiGatewayPromise(binding, "run", (signal) => request(gatewayUrl(definition), {
|
|
136
|
+
method: "POST",
|
|
137
|
+
body: JSON.stringify(data),
|
|
138
|
+
headers: new Headers({
|
|
139
|
+
"content-type": "application/json",
|
|
140
|
+
...Object.fromEntries(new Headers(extraHeaders(options)).entries())
|
|
141
|
+
}),
|
|
142
|
+
signal: mergeAbortSignals(options?.signal, signal)
|
|
143
|
+
}))),
|
|
144
|
+
getUrl,
|
|
145
|
+
fetch: Effect.fn("AiGateway.fetch")((options) => getUrl(options.provider).pipe(Effect.flatMap((baseUrl) => tryAiGatewayPromise(binding, "fetch", (signal) => request(providerUrl(baseUrl, options.path).href, {
|
|
146
|
+
...options.init,
|
|
147
|
+
signal: mergeAbortSignals(options.init?.signal, signal)
|
|
148
|
+
}))))),
|
|
149
|
+
patchLog: Effect.fn("AiGateway.patchLog")((logId, data) => tryAiGatewayPromise(binding, "patchLog", async (signal) => {
|
|
150
|
+
const response = await request(providerUrl(gatewayUrl(definition), `logs/${logId}`).href, {
|
|
151
|
+
method: "PATCH",
|
|
152
|
+
body: JSON.stringify(data),
|
|
153
|
+
headers: { "content-type": "application/json" },
|
|
154
|
+
signal
|
|
155
|
+
});
|
|
156
|
+
ensureSuccessfulResponse(response);
|
|
157
|
+
await decodeAiGatewayPatchLogResponse(await response.json());
|
|
158
|
+
})),
|
|
159
|
+
getLog: Effect.fn("AiGateway.getLog")((logId) => tryAiGatewayPromise(binding, "getLog", async (signal) => {
|
|
160
|
+
const response = await request(providerUrl(gatewayUrl(definition), `logs/${logId}`).href, { signal });
|
|
161
|
+
ensureSuccessfulResponse(response);
|
|
162
|
+
return (await decodeAiGatewayLogResponse(await response.json())).result;
|
|
163
|
+
})),
|
|
164
|
+
rawUnsafe: Effect.fail(aiGatewayError(binding, "rawUnsafe", /* @__PURE__ */ new TypeError("HTTP AI Gateway clients have no raw binding")))
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
const layer = (tag, definition) => layer$1(tag, definition.binding, isAiGatewayBinding, (ai) => makeClientFromAi(definition, ai), { expected: expectedAiGatewayBinding });
|
|
168
|
+
const make = (id) => Tag()(id);
|
|
169
|
+
const Tag = () => (id) => {
|
|
170
|
+
const tag = Context.Service()(id);
|
|
171
|
+
const makeLayer = (definition) => layer(tag, definition);
|
|
172
|
+
return Object.assign(tag, {
|
|
173
|
+
id,
|
|
174
|
+
layer: makeLayer
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
//#endregion
|
|
178
|
+
export { AiGatewayOperationError, AiGateway_exports, Tag, isAiGatewayBinding, layer, make, makeClient, makeClientFromAi, makeHttpClient };
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { WorkerEnvironment } from "./Environment.mjs";
|
|
2
|
+
import { BindingNotFoundError, BindingValidationError } from "./Binding.mjs";
|
|
3
|
+
import * as Context$1 from "effect/Context";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as S from "effect/Schema";
|
|
6
|
+
import * as Layer$1 from "effect/Layer";
|
|
7
|
+
import * as Config$1 from "effect/Config";
|
|
8
|
+
import * as Option from "effect/Option";
|
|
9
|
+
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
10
|
+
import { Redacted } from "effect";
|
|
11
|
+
import { Headers, HttpClientResponse } from "effect/unstable/http";
|
|
12
|
+
declare namespace AnalyticsEngine_d_exports {
|
|
13
|
+
export { AnalyticsEngineBinding, AnalyticsEngineClient, AnalyticsEngineDataPoint, AnalyticsEngineDataPointSchema, AnalyticsEngineDefinition, AnalyticsEngineFieldValue, AnalyticsEngineFieldValueSchema, AnalyticsEngineInvalidWritePolicy, AnalyticsEngineOperationError, AnalyticsEngineQueryClient, AnalyticsEngineQueryColumn, AnalyticsEngineQueryDefinition, AnalyticsEngineQueryError, AnalyticsEngineQueryOptions, AnalyticsEngineQueryResult, AnalyticsEngineQueryRow, AnalyticsEngineQueryService, AnalyticsEngineService, AnalyticsEngineWriteError, AnalyticsEngineWriteOptions, AnalyticsEngineWritePolicy, AnalyticsEngineWriteValidationError, AnalyticsEngineWriteViolation, LayerOptions, QueryConfigOptions, QueryTag, QueryTagClass, Tag, TagClass, isAnalyticsEngineDataset, layer, layerFetch, layerFetchConfig, make, makeClient, makeQuery, makeQueryClient, queryConfig, queryLayer, queryLayerConfig, writeLimits };
|
|
14
|
+
}
|
|
15
|
+
declare const writeLimits: {
|
|
16
|
+
readonly maxBlobs: 20;
|
|
17
|
+
readonly maxDoubles: 20;
|
|
18
|
+
readonly maxIndexes: 1;
|
|
19
|
+
readonly maxBlobBytes: number;
|
|
20
|
+
readonly maxIndexBytes: 96;
|
|
21
|
+
readonly maxDataPointsPerInvocation: 250;
|
|
22
|
+
};
|
|
23
|
+
declare const queryColumnSchema: S.Struct<{
|
|
24
|
+
readonly name: S.String;
|
|
25
|
+
readonly type: S.String;
|
|
26
|
+
}>;
|
|
27
|
+
declare const queryRowSchema: S.$Record<S.String, S.Unknown>;
|
|
28
|
+
declare const AnalyticsEngineFieldValueSchema: S.NullOr<S.Union<readonly [S.String, S.instanceOf<ArrayBuffer, unknown>]>>;
|
|
29
|
+
declare const AnalyticsEngineDataPointSchema: S.Struct<{
|
|
30
|
+
readonly indexes: S.optional<S.$Array<S.NullOr<S.Union<readonly [S.String, S.instanceOf<ArrayBuffer, unknown>]>>>>;
|
|
31
|
+
readonly doubles: S.optional<S.$Array<S.Finite>>;
|
|
32
|
+
readonly blobs: S.optional<S.$Array<S.NullOr<S.Union<readonly [S.String, S.instanceOf<ArrayBuffer, unknown>]>>>>;
|
|
33
|
+
}>;
|
|
34
|
+
declare const AnalyticsEngineOperationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
35
|
+
readonly _tag: "AnalyticsEngineOperationError";
|
|
36
|
+
} & Readonly<A>;
|
|
37
|
+
declare class AnalyticsEngineOperationError extends AnalyticsEngineOperationError_base<{
|
|
38
|
+
readonly binding: string;
|
|
39
|
+
readonly operation: string;
|
|
40
|
+
readonly cause: unknown;
|
|
41
|
+
}> {
|
|
42
|
+
get message(): string;
|
|
43
|
+
}
|
|
44
|
+
interface AnalyticsEngineWriteViolation {
|
|
45
|
+
readonly path: string;
|
|
46
|
+
readonly message: string;
|
|
47
|
+
readonly limit?: number;
|
|
48
|
+
readonly actual?: number;
|
|
49
|
+
}
|
|
50
|
+
declare const AnalyticsEngineWriteValidationError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
51
|
+
readonly _tag: "AnalyticsEngineWriteValidationError";
|
|
52
|
+
} & Readonly<A>;
|
|
53
|
+
declare class AnalyticsEngineWriteValidationError extends AnalyticsEngineWriteValidationError_base<{
|
|
54
|
+
readonly binding: string;
|
|
55
|
+
readonly operation: string;
|
|
56
|
+
readonly violations: ReadonlyArray<AnalyticsEngineWriteViolation>;
|
|
57
|
+
readonly cause?: unknown;
|
|
58
|
+
}> {
|
|
59
|
+
get message(): string;
|
|
60
|
+
}
|
|
61
|
+
declare const AnalyticsEngineQueryError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
62
|
+
readonly _tag: "AnalyticsEngineQueryError";
|
|
63
|
+
} & Readonly<A>;
|
|
64
|
+
declare class AnalyticsEngineQueryError extends AnalyticsEngineQueryError_base<{
|
|
65
|
+
readonly operation: string;
|
|
66
|
+
readonly accountId: string;
|
|
67
|
+
readonly message: string;
|
|
68
|
+
readonly status?: number;
|
|
69
|
+
readonly body?: string;
|
|
70
|
+
readonly cause?: unknown;
|
|
71
|
+
}> {}
|
|
72
|
+
interface AnalyticsEngineDefinition {
|
|
73
|
+
readonly binding: string;
|
|
74
|
+
}
|
|
75
|
+
type AnalyticsEngineBinding = CloudflareAnalyticsEngineDataset;
|
|
76
|
+
type AnalyticsEngineDataPoint = CloudflareAnalyticsEngineDataPoint;
|
|
77
|
+
type AnalyticsEngineFieldValue = ArrayBuffer | string | null;
|
|
78
|
+
type AnalyticsEngineWriteError = AnalyticsEngineOperationError | AnalyticsEngineWriteValidationError;
|
|
79
|
+
type AnalyticsEngineInvalidWritePolicy = "error" | "drop";
|
|
80
|
+
type AnalyticsEngineQueryColumn = S.Schema.Type<typeof queryColumnSchema>;
|
|
81
|
+
type AnalyticsEngineQueryRow = S.Schema.Type<typeof queryRowSchema>;
|
|
82
|
+
interface AnalyticsEngineWriteOptions {
|
|
83
|
+
/**
|
|
84
|
+
* Controls invalid write behavior. The default is `"error"`, which fails with
|
|
85
|
+
* `AnalyticsEngineWriteValidationError`. `"drop"` skips invalid points.
|
|
86
|
+
*/
|
|
87
|
+
readonly onInvalid?: AnalyticsEngineInvalidWritePolicy;
|
|
88
|
+
}
|
|
89
|
+
type AnalyticsEngineWritePolicy = AnalyticsEngineWriteOptions;
|
|
90
|
+
interface AnalyticsEngineQueryResult<Row = AnalyticsEngineQueryRow> {
|
|
91
|
+
readonly meta: ReadonlyArray<AnalyticsEngineQueryColumn>;
|
|
92
|
+
readonly data: ReadonlyArray<Row>;
|
|
93
|
+
readonly rows: number;
|
|
94
|
+
}
|
|
95
|
+
interface AnalyticsEngineQueryDefinition {
|
|
96
|
+
readonly accountId: string;
|
|
97
|
+
/** API token with Account Analytics Read permission. */
|
|
98
|
+
readonly apiToken: Redacted.Redacted<string>;
|
|
99
|
+
readonly apiBaseUrl?: string | URL;
|
|
100
|
+
}
|
|
101
|
+
interface AnalyticsEngineQueryOptions {
|
|
102
|
+
/** Additional request headers. Authorization is always derived from `apiToken`. */
|
|
103
|
+
readonly headers?: Headers.Input;
|
|
104
|
+
}
|
|
105
|
+
interface AnalyticsEngineClient {
|
|
106
|
+
readonly writeDataPoint: (dataPoint?: AnalyticsEngineDataPoint, options?: AnalyticsEngineWriteOptions) => Effect.Effect<void, AnalyticsEngineWriteError>;
|
|
107
|
+
readonly writeDataPoints: (dataPoints: ReadonlyArray<AnalyticsEngineDataPoint>, options?: AnalyticsEngineWriteOptions) => Effect.Effect<void, AnalyticsEngineWriteError>;
|
|
108
|
+
readonly rawUnsafe: Effect.Effect<AnalyticsEngineBinding>;
|
|
109
|
+
readonly definition: AnalyticsEngineDefinition;
|
|
110
|
+
}
|
|
111
|
+
interface AnalyticsEngineQueryClient {
|
|
112
|
+
readonly query: (sql: string, options?: AnalyticsEngineQueryOptions) => Effect.Effect<AnalyticsEngineQueryResult, AnalyticsEngineQueryError | S.SchemaError>;
|
|
113
|
+
readonly queryResult: <Row>(row: S.Codec<Row, unknown>, sql: string, options?: AnalyticsEngineQueryOptions) => Effect.Effect<AnalyticsEngineQueryResult<Row>, AnalyticsEngineQueryError | S.SchemaError>;
|
|
114
|
+
readonly queryRows: <Row>(row: S.Codec<Row, unknown>, sql: string, options?: AnalyticsEngineQueryOptions) => Effect.Effect<ReadonlyArray<Row>, AnalyticsEngineQueryError | S.SchemaError>;
|
|
115
|
+
readonly queryOne: <Row>(row: S.Codec<Row, unknown>, sql: string, options?: AnalyticsEngineQueryOptions) => Effect.Effect<Option.Option<Row>, AnalyticsEngineQueryError | S.SchemaError>;
|
|
116
|
+
readonly queryText: (sql: string, options?: AnalyticsEngineQueryOptions) => Effect.Effect<string, AnalyticsEngineQueryError>;
|
|
117
|
+
readonly raw: (sql: string, options?: AnalyticsEngineQueryOptions) => Effect.Effect<HttpClientResponse.HttpClientResponse, AnalyticsEngineQueryError>;
|
|
118
|
+
readonly definition: AnalyticsEngineQueryDefinition;
|
|
119
|
+
}
|
|
120
|
+
declare const AnalyticsEngineServiceTypeId: unique symbol;
|
|
121
|
+
declare const AnalyticsEngineQueryServiceTypeId: unique symbol;
|
|
122
|
+
interface AnalyticsEngineService<Id extends string> {
|
|
123
|
+
readonly [AnalyticsEngineServiceTypeId]: {
|
|
124
|
+
readonly id: Id;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
interface AnalyticsEngineQueryService<Id extends string> {
|
|
128
|
+
readonly [AnalyticsEngineQueryServiceTypeId]: {
|
|
129
|
+
readonly id: Id;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
type LayerOptions = {
|
|
133
|
+
readonly binding: string;
|
|
134
|
+
readonly write?: AnalyticsEngineWritePolicy;
|
|
135
|
+
};
|
|
136
|
+
type QueryConfigOptions = {
|
|
137
|
+
readonly accountId?: Config$1.Config<string>;
|
|
138
|
+
readonly apiToken?: Config$1.Config<Redacted.Redacted<string>>;
|
|
139
|
+
readonly apiBaseUrl?: Config$1.Config<string>;
|
|
140
|
+
};
|
|
141
|
+
interface TagClass<Self, Id extends string> extends Context$1.ServiceClass<Self, Id, AnalyticsEngineClient> {
|
|
142
|
+
readonly id: Id;
|
|
143
|
+
readonly layer: (options: LayerOptions) => Layer$1.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
|
|
144
|
+
}
|
|
145
|
+
interface QueryTagClass<Self, Id extends string> extends Context$1.ServiceClass<Self, Id, AnalyticsEngineQueryClient> {
|
|
146
|
+
readonly id: Id;
|
|
147
|
+
readonly layer: (definition: AnalyticsEngineQueryDefinition) => Layer$1.Layer<Self, never, HttpClient.HttpClient>;
|
|
148
|
+
readonly layerFetch: (definition: AnalyticsEngineQueryDefinition) => Layer$1.Layer<Self>;
|
|
149
|
+
readonly layerConfig: (config?: Config$1.Config<AnalyticsEngineQueryDefinition>) => Layer$1.Layer<Self, Config$1.ConfigError, HttpClient.HttpClient>;
|
|
150
|
+
readonly layerFetchConfig: (config?: Config$1.Config<AnalyticsEngineQueryDefinition>) => Layer$1.Layer<Self, Config$1.ConfigError>;
|
|
151
|
+
}
|
|
152
|
+
declare const makeQueryClient: (definition: AnalyticsEngineQueryDefinition) => Effect.Effect<AnalyticsEngineQueryClient, never, HttpClient.HttpClient>;
|
|
153
|
+
declare const isAnalyticsEngineDataset: <Candidate>(value: Candidate) => value is Candidate & AnalyticsEngineBinding;
|
|
154
|
+
declare const makeClient: (definition: AnalyticsEngineDefinition, defaults?: AnalyticsEngineWritePolicy) => (dataset: AnalyticsEngineBinding) => AnalyticsEngineClient;
|
|
155
|
+
declare const queryConfig: (options?: QueryConfigOptions) => Config$1.Config<{
|
|
156
|
+
accountId: string;
|
|
157
|
+
apiToken: Redacted.Redacted<string>;
|
|
158
|
+
apiBaseUrl: string;
|
|
159
|
+
}>;
|
|
160
|
+
declare const queryLayer: <Self>(tag: Context$1.Service<Self, AnalyticsEngineQueryClient>, definition: AnalyticsEngineQueryDefinition) => Layer$1.Layer<Self, never, HttpClient.HttpClient>;
|
|
161
|
+
declare const layerFetch: <Self>(tag: Context$1.Service<Self, AnalyticsEngineQueryClient>, definition: AnalyticsEngineQueryDefinition) => Layer$1.Layer<Self, never, never>;
|
|
162
|
+
declare const queryLayerConfig: <Self>(tag: Context$1.Service<Self, AnalyticsEngineQueryClient>, config?: Config$1.Config<AnalyticsEngineQueryDefinition>) => Layer$1.Layer<Self, Config$1.ConfigError, HttpClient.HttpClient>;
|
|
163
|
+
declare const layerFetchConfig: <Self>(tag: Context$1.Service<Self, AnalyticsEngineQueryClient>, config?: Config$1.Config<AnalyticsEngineQueryDefinition>) => Layer$1.Layer<Self, Config$1.ConfigError, never>;
|
|
164
|
+
declare const layer: <Self>(tag: Context$1.Service<Self, AnalyticsEngineClient>, definition: LayerOptions) => Layer$1.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
|
|
165
|
+
declare const make: <Id extends string>(id: Id) => TagClass<AnalyticsEngineService<Id>, Id>;
|
|
166
|
+
declare const makeQuery: <Id extends string>(id: Id) => QueryTagClass<AnalyticsEngineQueryService<Id>, Id>;
|
|
167
|
+
declare const Tag: <Self>() => <Id extends string>(id: Id) => TagClass<Self, Id>;
|
|
168
|
+
declare const QueryTag: <Self>() => <Id extends string>(id: Id) => QueryTagClass<Self, Id>;
|
|
169
|
+
//#endregion
|
|
170
|
+
export { AnalyticsEngineBinding, AnalyticsEngineClient, AnalyticsEngineDataPoint, AnalyticsEngineDataPointSchema, AnalyticsEngineDefinition, AnalyticsEngineFieldValue, AnalyticsEngineFieldValueSchema, AnalyticsEngineInvalidWritePolicy, AnalyticsEngineOperationError, AnalyticsEngineQueryClient, AnalyticsEngineQueryColumn, AnalyticsEngineQueryDefinition, AnalyticsEngineQueryError, AnalyticsEngineQueryOptions, AnalyticsEngineQueryResult, AnalyticsEngineQueryRow, AnalyticsEngineQueryService, AnalyticsEngineService, AnalyticsEngineWriteError, AnalyticsEngineWriteOptions, AnalyticsEngineWritePolicy, AnalyticsEngineWriteValidationError, AnalyticsEngineWriteViolation, AnalyticsEngine_d_exports, LayerOptions, QueryConfigOptions, QueryTag, QueryTagClass, Tag, TagClass, isAnalyticsEngineDataset, layer, layerFetch, layerFetchConfig, make, makeClient, makeQuery, makeQueryClient, queryConfig, queryLayer, queryLayerConfig, writeLimits };
|