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.
Files changed (166) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +9 -1
  3. package/dist/AiGateway.d.mts +86 -0
  4. package/dist/AiGateway.mjs +178 -0
  5. package/dist/AnalyticsEngine.d.mts +170 -0
  6. package/dist/AnalyticsEngine.mjs +275 -0
  7. package/dist/{Artifacts-B3r3RuTB.d.mts → Artifacts.d.mts} +8 -5
  8. package/dist/{Artifacts-CBxWGeZB.mjs → Artifacts.mjs} +9 -5
  9. package/dist/Binding.d.mts +45 -0
  10. package/dist/{Binding-C82jRhdr.mjs → Binding.mjs} +8 -4
  11. package/dist/BrowserRendering.d.mts +85 -0
  12. package/dist/BrowserRendering.mjs +81 -0
  13. package/dist/Cache.d.mts +40 -0
  14. package/dist/Cache.mjs +51 -0
  15. package/dist/CloudflareOtlp.d.mts +95 -0
  16. package/dist/CloudflareOtlp.mjs +125 -0
  17. package/dist/CloudflareTracer.d.mts +20 -0
  18. package/dist/CloudflareTracer.mjs +69 -0
  19. package/dist/ComputerArtifacts.d.mts +2 -2
  20. package/dist/ComputerArtifacts.mjs +3 -2
  21. package/dist/ComputerWorkspace.d.mts +36 -31
  22. package/dist/ComputerWorkspace.mjs +8 -3
  23. package/dist/ComputerWorkspaceHost.d.mts +1 -1
  24. package/dist/ComputerWorkspaceHost.mjs +1 -1
  25. package/dist/{ContainerNamespace-DbLaeFhN.d.mts → ContainerNamespace.d.mts} +16 -12
  26. package/dist/ContainerNamespace.mjs +165 -0
  27. package/dist/D1.d.mts +33 -0
  28. package/dist/D1.mjs +32 -0
  29. package/dist/DurableObject.d.mts +103 -0
  30. package/dist/DurableObject.mjs +77 -0
  31. package/dist/DurableObjectAlarm.d.mts +187 -0
  32. package/dist/DurableObjectAlarm.mjs +344 -0
  33. package/dist/DurableObjectDefinition.d.mts +87 -0
  34. package/dist/DurableObjectDefinition.mjs +125 -0
  35. package/dist/DurableObjectNamespace.d.mts +154 -0
  36. package/dist/DurableObjectNamespace.mjs +144 -0
  37. package/dist/DurableObjectRpcWebSocket.d.mts +112 -0
  38. package/dist/DurableObjectRpcWebSocket.mjs +547 -0
  39. package/dist/DurableObjectSqlite.d.mts +11 -0
  40. package/dist/DurableObjectSqlite.mjs +16 -0
  41. package/dist/DurableObjectState.d.mts +65 -0
  42. package/dist/DurableObjectState.mjs +47 -0
  43. package/dist/DurableObjectStorage.d.mts +112 -0
  44. package/dist/{DurableObjectState-DLL0YgBd.mjs → DurableObjectStorage.mjs} +19 -157
  45. package/dist/DurableObjectWebSocket.d.mts +83 -0
  46. package/dist/DurableObjectWebSocket.mjs +120 -0
  47. package/dist/Email.d.mts +106 -0
  48. package/dist/Email.mjs +247 -0
  49. package/dist/Environment.d.mts +59 -0
  50. package/dist/{ErrorMessage-Byx2OgNd.mjs → Environment.mjs} +7 -18
  51. package/dist/{Hyperdrive-HrwFlZ6x.d.mts → Hyperdrive.d.mts} +8 -5
  52. package/dist/Hyperdrive.mjs +32 -0
  53. package/dist/HyperdrivePg.d.mts +4 -3
  54. package/dist/HyperdrivePg.mjs +3 -1
  55. package/dist/Images.d.mts +191 -0
  56. package/dist/Images.mjs +112 -0
  57. package/dist/Kv.d.mts +84 -0
  58. package/dist/Kv.mjs +132 -0
  59. package/dist/Mcp.d.mts +5 -3
  60. package/dist/Mcp.mjs +13 -4
  61. package/dist/Queue.d.mts +68 -0
  62. package/dist/Queue.mjs +54 -0
  63. package/dist/QueueBinding.d.mts +42 -0
  64. package/dist/QueueBinding.mjs +69 -0
  65. package/dist/QueueDefinition.d.mts +48 -0
  66. package/dist/QueueDefinition.mjs +63 -0
  67. package/dist/R2.d.mts +89 -0
  68. package/dist/R2.mjs +117 -0
  69. package/dist/Rpc.d.mts +29 -0
  70. package/dist/Rpc.mjs +28 -0
  71. package/dist/RpcDefinition.d.mts +116 -0
  72. package/dist/RpcDefinition.mjs +184 -0
  73. package/dist/RpcTracing.d.mts +52 -0
  74. package/dist/RpcTracing.mjs +77 -0
  75. package/dist/Sandbox.d.mts +10 -5
  76. package/dist/Sandbox.mjs +9 -3
  77. package/dist/ServiceBinding.d.mts +112 -0
  78. package/dist/ServiceBinding.mjs +145 -0
  79. package/dist/Vectorize.d.mts +68 -0
  80. package/dist/Vectorize.mjs +76 -0
  81. package/dist/Vitest.d.mts +6 -4
  82. package/dist/Vitest.mjs +8 -4
  83. package/dist/WebTransport.d.mts +66 -0
  84. package/dist/WebTransport.mjs +63 -0
  85. package/dist/Worker.d.mts +139 -0
  86. package/dist/Worker.mjs +141 -0
  87. package/dist/WorkerDefinition.d.mts +100 -0
  88. package/dist/WorkerDefinition.mjs +103 -0
  89. package/dist/WorkersAi.d.mts +84 -0
  90. package/dist/WorkersAi.mjs +84 -0
  91. package/dist/Workflow.d.mts +91 -0
  92. package/dist/Workflow.mjs +139 -0
  93. package/dist/{WorkflowBinding-DtVykUCz.d.mts → WorkflowBinding.d.mts} +14 -10
  94. package/dist/WorkflowBinding.mjs +100 -0
  95. package/dist/WorkflowDefinition.d.mts +51 -0
  96. package/dist/WorkflowDefinition.mjs +69 -0
  97. package/dist/{rolldown-runtime-D7D4PA-g.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
  98. package/dist/index.d.mts +40 -1800
  99. package/dist/index.mjs +40 -3123
  100. package/dist/{ComputerWorkspaceHostRegistry-CY5Fv4Ng.mjs → internal/ComputerWorkspaceHostRegistry.mjs} +1 -1
  101. package/dist/internal/Entrypoint.mjs +37 -0
  102. package/dist/internal/ErrorMessage.mjs +17 -0
  103. package/dist/internal/NativeCallback.mjs +33 -0
  104. package/dist/internal/RpcInvocation.d.mts +13 -0
  105. package/dist/internal/RpcInvocation.mjs +34 -0
  106. package/dist/internal/Runtime.mjs +31 -0
  107. package/dist/internal/Telemetry.mjs +20 -0
  108. package/dist/{WorkerContext-Yobnfw-K.mjs → internal/WorkerContext.mjs} +4 -31
  109. package/package.json +1 -1
  110. package/src/AiGateway.ts +5 -1
  111. package/src/AnalyticsEngine.ts +14 -19
  112. package/src/Artifacts.ts +6 -1
  113. package/src/Binding.ts +5 -1
  114. package/src/BrowserRendering.ts +5 -1
  115. package/src/Cache.ts +5 -1
  116. package/src/CloudflareOtlp.ts +12 -10
  117. package/src/CloudflareTracer.ts +7 -1
  118. package/src/ComputerArtifacts.ts +2 -1
  119. package/src/ComputerWorkspace.ts +7 -1
  120. package/src/ContainerNamespace.ts +6 -1
  121. package/src/D1.ts +4 -1
  122. package/src/DurableObject.ts +122 -29
  123. package/src/DurableObjectAlarm.ts +185 -52
  124. package/src/DurableObjectDefinition.ts +22 -22
  125. package/src/DurableObjectNamespace.ts +4 -1
  126. package/src/DurableObjectRpcWebSocket.ts +7 -1
  127. package/src/DurableObjectSqlite.ts +2 -1
  128. package/src/DurableObjectState.ts +4 -1
  129. package/src/DurableObjectStorage.ts +11 -13
  130. package/src/DurableObjectWebSocket.ts +5 -1
  131. package/src/Email.ts +5 -1
  132. package/src/Environment.ts +6 -1
  133. package/src/Hyperdrive.ts +4 -1
  134. package/src/HyperdrivePg.ts +3 -1
  135. package/src/Images.ts +7 -1
  136. package/src/Kv.ts +7 -1
  137. package/src/Mcp.ts +13 -13
  138. package/src/Queue.ts +3 -1
  139. package/src/QueueBinding.ts +5 -1
  140. package/src/QueueDefinition.ts +4 -1
  141. package/src/R2.ts +7 -1
  142. package/src/Rpc.ts +4 -1
  143. package/src/RpcDefinition.ts +4 -1
  144. package/src/RpcTracing.ts +9 -1
  145. package/src/Sandbox.ts +7 -1
  146. package/src/ServiceBinding.ts +6 -1
  147. package/src/Vectorize.ts +7 -1
  148. package/src/Vitest.ts +5 -1
  149. package/src/WebTransport.ts +6 -1
  150. package/src/Worker.ts +10 -16
  151. package/src/WorkerDefinition.ts +3 -1
  152. package/src/WorkersAi.ts +7 -1
  153. package/src/Workflow.ts +8 -11
  154. package/src/WorkflowBinding.ts +6 -1
  155. package/src/WorkflowDefinition.ts +4 -1
  156. package/src/internal/Entrypoint.ts +3 -1
  157. package/src/internal/ErrorMessage.ts +1 -1
  158. package/src/internal/NativeCallback.ts +3 -1
  159. package/src/internal/RpcInvocation.ts +5 -1
  160. package/src/internal/Runtime.ts +5 -1
  161. package/src/internal/Telemetry.ts +4 -3
  162. package/src/internal/WorkerContext.ts +3 -1
  163. package/dist/Binding-DKcLrQCM.d.mts +0 -94
  164. package/dist/DurableObjectState-DJ0K-zyd.d.mts +0 -244
  165. package/dist/Worker-XsGJsCJX.mjs +0 -885
  166. package/dist/Worker-gV4mDqIs.d.mts +0 -641
@@ -0,0 +1,275 @@
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.mjs";
2
+ import { layer as layer$1 } from "./Binding.mjs";
3
+ import { causeMessage, violationsMessage } from "./internal/ErrorMessage.mjs";
4
+ import * as Context from "effect/Context";
5
+ import * as Data from "effect/Data";
6
+ import * as Effect from "effect/Effect";
7
+ import * as S from "effect/Schema";
8
+ import * as Layer from "effect/Layer";
9
+ import * as Predicate from "effect/Predicate";
10
+ import * as Config from "effect/Config";
11
+ import * as Option from "effect/Option";
12
+ import * as Result from "effect/Result";
13
+ import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";
14
+ import * as HttpClient from "effect/unstable/http/HttpClient";
15
+ import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
16
+ //#region src/AnalyticsEngine.ts
17
+ var AnalyticsEngine_exports = /* @__PURE__ */ __exportAll({
18
+ AnalyticsEngineDataPointSchema: () => AnalyticsEngineDataPointSchema,
19
+ AnalyticsEngineFieldValueSchema: () => AnalyticsEngineFieldValueSchema,
20
+ AnalyticsEngineOperationError: () => AnalyticsEngineOperationError,
21
+ AnalyticsEngineQueryError: () => AnalyticsEngineQueryError,
22
+ AnalyticsEngineWriteValidationError: () => AnalyticsEngineWriteValidationError,
23
+ QueryTag: () => QueryTag,
24
+ Tag: () => Tag,
25
+ isAnalyticsEngineDataset: () => isAnalyticsEngineDataset,
26
+ layer: () => layer,
27
+ layerFetch: () => layerFetch,
28
+ layerFetchConfig: () => layerFetchConfig,
29
+ make: () => make,
30
+ makeClient: () => makeClient,
31
+ makeQuery: () => makeQuery,
32
+ makeQueryClient: () => makeQueryClient,
33
+ queryConfig: () => queryConfig,
34
+ queryLayer: () => queryLayer,
35
+ queryLayerConfig: () => queryLayerConfig,
36
+ writeLimits: () => writeLimits
37
+ });
38
+ const expectedAnalyticsEngineDataset = "Analytics Engine dataset binding with writeDataPoint()";
39
+ const defaultQueryApiBaseUrl = "https://api.cloudflare.com/client/v4";
40
+ const textEncoder = new TextEncoder();
41
+ const writeLimits = {
42
+ maxBlobs: 20,
43
+ maxDoubles: 20,
44
+ maxIndexes: 1,
45
+ maxBlobBytes: 16384,
46
+ maxIndexBytes: 96,
47
+ maxDataPointsPerInvocation: 250
48
+ };
49
+ const queryColumnSchema = S.Struct({
50
+ name: S.String,
51
+ type: S.String
52
+ });
53
+ const queryRowSchema = S.Record(S.String, S.Unknown);
54
+ const queryResponseSchema = S.Struct({
55
+ meta: S.Array(queryColumnSchema),
56
+ data: S.Array(queryRowSchema),
57
+ rows: S.Number
58
+ });
59
+ const AnalyticsEngineFieldValueSchema = S.NullOr(S.Union([S.String, S.instanceOf(ArrayBuffer)]));
60
+ const AnalyticsEngineDataPointSchema = S.Struct({
61
+ indexes: S.optional(S.Array(AnalyticsEngineFieldValueSchema)),
62
+ doubles: S.optional(S.Array(S.Finite)),
63
+ blobs: S.optional(S.Array(AnalyticsEngineFieldValueSchema))
64
+ });
65
+ const decodeQueryResponse = S.decodeUnknownEffect(queryResponseSchema);
66
+ const decodeDataPoint = S.decodeUnknownEffect(AnalyticsEngineDataPointSchema);
67
+ var AnalyticsEngineOperationError = class extends Data.TaggedError("AnalyticsEngineOperationError") {
68
+ get message() {
69
+ return `Analytics Engine ${this.operation} failed for binding "${this.binding}": ${causeMessage(this.cause)}`;
70
+ }
71
+ };
72
+ var AnalyticsEngineWriteValidationError = class extends Data.TaggedError("AnalyticsEngineWriteValidationError") {
73
+ get message() {
74
+ return `Analytics Engine ${this.operation} for binding "${this.binding}" failed validation: ${violationsMessage(this.violations)}`;
75
+ }
76
+ };
77
+ var AnalyticsEngineQueryError = class extends Data.TaggedError("AnalyticsEngineQueryError") {};
78
+ const analyticsEngineError = (binding, operation, cause) => new AnalyticsEngineOperationError({
79
+ binding,
80
+ operation,
81
+ cause
82
+ });
83
+ const analyticsEngineWriteValidationError = (binding, operation, violations, cause) => new AnalyticsEngineWriteValidationError({
84
+ binding,
85
+ operation,
86
+ violations,
87
+ cause
88
+ });
89
+ const analyticsEngineQueryError = (definition, operation, message, options) => new AnalyticsEngineQueryError({
90
+ operation,
91
+ accountId: definition.accountId,
92
+ message,
93
+ status: options?.status,
94
+ body: options?.body,
95
+ cause: options?.cause
96
+ });
97
+ const tryAnalyticsEngineSync = (binding, operation, evaluate) => Effect.try({
98
+ try: evaluate,
99
+ catch: (cause) => analyticsEngineError(binding, operation, cause)
100
+ });
101
+ const resolveWritePolicy = (defaults, options) => ({ onInvalid: options?.onInvalid ?? defaults?.onInvalid ?? "error" });
102
+ const fieldPath = (prefix, field) => prefix === "" ? field : `${prefix}.${field}`;
103
+ const indexedPath = (prefix, field, index) => `${fieldPath(prefix, field)}[${index}]`;
104
+ const byteLength = (value) => {
105
+ if (value === null) return 0;
106
+ return Predicate.isString(value) ? textEncoder.encode(value).byteLength : value.byteLength;
107
+ };
108
+ const lengthViolation = (path, label, actual, limit) => ({
109
+ path,
110
+ message: `${label} exceeds Cloudflare Analytics Engine limit`,
111
+ actual,
112
+ limit
113
+ });
114
+ const validateDataPointLimits = (dataPoint, pathPrefix = "") => {
115
+ const violations = [];
116
+ if (dataPoint.blobs !== void 0 && dataPoint.blobs.length > writeLimits.maxBlobs) violations.push(lengthViolation(fieldPath(pathPrefix, "blobs"), "blobs", dataPoint.blobs.length, writeLimits.maxBlobs));
117
+ if (dataPoint.doubles !== void 0 && dataPoint.doubles.length > writeLimits.maxDoubles) violations.push(lengthViolation(fieldPath(pathPrefix, "doubles"), "doubles", dataPoint.doubles.length, writeLimits.maxDoubles));
118
+ if (dataPoint.indexes !== void 0 && dataPoint.indexes.length > writeLimits.maxIndexes) violations.push(lengthViolation(fieldPath(pathPrefix, "indexes"), "indexes", dataPoint.indexes.length, writeLimits.maxIndexes));
119
+ if (dataPoint.blobs !== void 0) {
120
+ const blobBytes = dataPoint.blobs.reduce((total, value) => total + byteLength(value), 0);
121
+ if (blobBytes > writeLimits.maxBlobBytes) violations.push(lengthViolation(fieldPath(pathPrefix, "blobs"), "blob bytes", blobBytes, writeLimits.maxBlobBytes));
122
+ }
123
+ if (dataPoint.indexes !== void 0) for (let index = 0; index < dataPoint.indexes.length; index++) {
124
+ const indexBytes = byteLength(dataPoint.indexes[index] ?? null);
125
+ if (indexBytes > writeLimits.maxIndexBytes) violations.push(lengthViolation(indexedPath(pathPrefix, "indexes", index), "index bytes", indexBytes, writeLimits.maxIndexBytes));
126
+ }
127
+ return violations;
128
+ };
129
+ const schemaViolation = (pathPrefix, cause) => ({
130
+ path: pathPrefix === "" ? "$" : pathPrefix,
131
+ message: cause.message
132
+ });
133
+ const toAnalyticsEngineDataPoint = (dataPoint) => {
134
+ const result = {};
135
+ if (dataPoint.indexes !== void 0) result.indexes = [...dataPoint.indexes];
136
+ if (dataPoint.doubles !== void 0) result.doubles = [...dataPoint.doubles];
137
+ if (dataPoint.blobs !== void 0) result.blobs = [...dataPoint.blobs];
138
+ return result;
139
+ };
140
+ const validateDataPoint = (binding, operation, dataPoint, pathPrefix = "") => Effect.gen(function* () {
141
+ const decoded = yield* decodeDataPoint(dataPoint).pipe(Effect.mapError((cause) => analyticsEngineWriteValidationError(binding, operation, [schemaViolation(pathPrefix, cause)], cause)));
142
+ const validated = toAnalyticsEngineDataPoint(decoded);
143
+ const violations = validateDataPointLimits(validated, pathPrefix);
144
+ if (violations.length > 0) return yield* Effect.fail(analyticsEngineWriteValidationError(binding, operation, violations));
145
+ return validated;
146
+ });
147
+ const validateOptionalDataPoint = (binding, operation, dataPoint) => dataPoint === void 0 ? Effect.succeed(void 0) : validateDataPoint(binding, operation, dataPoint);
148
+ const validateDataPoints = (binding, operation, dataPoints, policy) => Effect.gen(function* () {
149
+ const points = dataPoints.length > writeLimits.maxDataPointsPerInvocation && policy.onInvalid === "drop" ? dataPoints.slice(0, writeLimits.maxDataPointsPerInvocation) : dataPoints;
150
+ const violations = [];
151
+ if (dataPoints.length > writeLimits.maxDataPointsPerInvocation && policy.onInvalid === "error") violations.push(lengthViolation("dataPoints", "data points per Worker invocation", dataPoints.length, writeLimits.maxDataPointsPerInvocation));
152
+ const validPoints = [];
153
+ for (let index = 0; index < points.length; index++) {
154
+ const result = yield* Effect.result(validateDataPoint(binding, operation, points[index], `dataPoints[${index}]`));
155
+ if (Result.isSuccess(result)) validPoints.push(result.success);
156
+ else if (policy.onInvalid === "error") violations.push(...result.failure.violations);
157
+ }
158
+ if (violations.length > 0) return yield* Effect.fail(analyticsEngineWriteValidationError(binding, operation, violations));
159
+ return validPoints;
160
+ });
161
+ const writeChunks = (binding, operation, dataset, dataPoints) => Effect.gen(function* () {
162
+ for (const point of dataPoints) yield* tryAnalyticsEngineSync(binding, operation, () => dataset.writeDataPoint(point));
163
+ });
164
+ const queryApiUrl = (definition) => {
165
+ const baseUrl = new URL(definition.apiBaseUrl ?? defaultQueryApiBaseUrl);
166
+ baseUrl.pathname = `${baseUrl.pathname.replace(/\/+$/, "")}/accounts/${definition.accountId}/analytics_engine/sql`;
167
+ return baseUrl.href;
168
+ };
169
+ const queryRequest = (definition, sql, options) => {
170
+ let request = HttpClientRequest.post(queryApiUrl(definition)).pipe(HttpClientRequest.bodyText(sql, "text/plain;charset=UTF-8"));
171
+ if (options?.headers !== void 0) request = HttpClientRequest.setHeaders(request, options.headers);
172
+ return HttpClientRequest.bearerToken(request, definition.apiToken);
173
+ };
174
+ const responseText = (definition, response, operation) => response.text.pipe(Effect.catch((cause) => Effect.fail(analyticsEngineQueryError(definition, operation, "Failed to read Analytics Engine SQL API response body", { cause }))));
175
+ const executeQueryRequest = (definition, httpClient, sql, options) => Effect.gen(function* () {
176
+ const request = yield* Effect.try({
177
+ try: () => queryRequest(definition, sql, options),
178
+ catch: (cause) => analyticsEngineQueryError(definition, "query", "Invalid Analytics Engine SQL API URL", { cause })
179
+ });
180
+ const response = yield* httpClient.execute(request).pipe(Effect.mapError((cause) => analyticsEngineQueryError(definition, "query", "Analytics Engine SQL API request failed", { cause })));
181
+ if (response.status < 200 || response.status >= 300) {
182
+ const body = yield* responseText(definition, response, "queryErrorBody");
183
+ return yield* Effect.fail(analyticsEngineQueryError(definition, "query", `Analytics Engine SQL API returned HTTP ${response.status}`, {
184
+ status: response.status,
185
+ body
186
+ }));
187
+ }
188
+ return response;
189
+ });
190
+ const makeQueryClientWith = (definition, httpClient) => {
191
+ const raw = Effect.fn("AnalyticsEngine.raw")((sql, options) => executeQueryRequest(definition, httpClient, sql, options));
192
+ const query = Effect.fn("AnalyticsEngine.query")(function* (sql, options) {
193
+ const json = yield* (yield* raw(sql, options)).json.pipe(Effect.catch((cause) => Effect.fail(analyticsEngineQueryError(definition, "json", "Failed to read Analytics Engine SQL API JSON response body", { cause }))));
194
+ return yield* decodeQueryResponse(json);
195
+ });
196
+ const queryResult = (row, sql, options) => Effect.gen(function* () {
197
+ const result = yield* query(sql, options);
198
+ const decodeRow = S.decodeUnknownEffect(row);
199
+ const data = [];
200
+ for (const value of result.data) data.push(yield* decodeRow(value));
201
+ return {
202
+ ...result,
203
+ data,
204
+ rows: result.rows
205
+ };
206
+ }).pipe(Effect.withSpan("AnalyticsEngine.queryResult"));
207
+ return {
208
+ definition,
209
+ raw,
210
+ query,
211
+ queryResult,
212
+ queryRows: (row, sql, options) => queryResult(row, sql, options).pipe(Effect.map((result) => result.data), Effect.withSpan("AnalyticsEngine.queryRows")),
213
+ queryOne: (row, sql, options) => queryResult(row, sql, options).pipe(Effect.map((result) => result.data[0] === void 0 ? Option.none() : Option.some(result.data[0])), Effect.withSpan("AnalyticsEngine.queryOne")),
214
+ queryText: Effect.fn("AnalyticsEngine.queryText")((sql, options) => raw(sql, options).pipe(Effect.flatMap((response) => responseText(definition, response, "text"))))
215
+ };
216
+ };
217
+ const makeQueryClient = (definition) => Effect.map(HttpClient.HttpClient, (httpClient) => makeQueryClientWith(definition, httpClient));
218
+ const isAnalyticsEngineDataset = (value) => Predicate.hasProperty(value, "writeDataPoint") && Predicate.isFunction(value.writeDataPoint);
219
+ const makeClient = (definition, defaults) => (dataset) => {
220
+ return {
221
+ definition,
222
+ writeDataPoint: Effect.fn("AnalyticsEngine.writeDataPoint")((dataPoint, options) => {
223
+ const policy = resolveWritePolicy(defaults, options);
224
+ return validateOptionalDataPoint(definition.binding, "writeDataPoint", dataPoint).pipe(Effect.matchEffect({
225
+ onFailure: (error) => policy.onInvalid === "drop" ? Effect.succeed(void 0) : Effect.fail(error),
226
+ onSuccess: (point) => tryAnalyticsEngineSync(definition.binding, "writeDataPoint", () => dataset.writeDataPoint(point))
227
+ }));
228
+ }),
229
+ writeDataPoints: Effect.fn("AnalyticsEngine.writeDataPoints")(function* (dataPoints, options) {
230
+ const policy = resolveWritePolicy(defaults, options);
231
+ const validPoints = yield* validateDataPoints(definition.binding, "writeDataPoints", dataPoints, policy);
232
+ yield* writeChunks(definition.binding, "writeDataPoints", dataset, validPoints);
233
+ }),
234
+ rawUnsafe: Effect.succeed(dataset)
235
+ };
236
+ };
237
+ const queryConfig = (options) => Config.all({
238
+ accountId: options?.accountId ?? Config.string("CLOUDFLARE_ACCOUNT_ID"),
239
+ apiToken: options?.apiToken ?? Config.redacted("CLOUDFLARE_API_TOKEN"),
240
+ apiBaseUrl: options?.apiBaseUrl ?? Config.string("CLOUDFLARE_API_BASE_URL").pipe(Config.withDefault(defaultQueryApiBaseUrl))
241
+ });
242
+ const queryLayer = (tag, definition) => Layer.effect(tag, makeQueryClient(definition));
243
+ const layerFetch = (tag, definition) => queryLayer(tag, definition).pipe(Layer.provide(FetchHttpClient.layer));
244
+ const queryLayerConfig = (tag, config = queryConfig()) => Layer.effect(tag, Effect.gen(function* () {
245
+ const definition = yield* config;
246
+ return yield* makeQueryClient(definition);
247
+ }));
248
+ const layerFetchConfig = (tag, config = queryConfig()) => queryLayerConfig(tag, config).pipe(Layer.provide(FetchHttpClient.layer));
249
+ const layer = (tag, definition) => layer$1(tag, definition.binding, isAnalyticsEngineDataset, makeClient(definition, definition.write), { expected: expectedAnalyticsEngineDataset });
250
+ const make = (id) => Tag()(id);
251
+ const makeQuery = (id) => QueryTag()(id);
252
+ const Tag = () => (id) => {
253
+ const tag = Context.Service()(id);
254
+ const makeLayer = (definition) => layer(tag, definition);
255
+ return Object.assign(tag, {
256
+ id,
257
+ layer: makeLayer
258
+ });
259
+ };
260
+ const QueryTag = () => (id) => {
261
+ const tag = Context.Service()(id);
262
+ const makeLayer = (definition) => queryLayer(tag, definition);
263
+ const makeLayerFetch = (definition) => layerFetch(tag, definition);
264
+ const makeLayerConfig = (config) => queryLayerConfig(tag, config);
265
+ const makeLayerFetchConfig = (config) => layerFetchConfig(tag, config);
266
+ return Object.assign(tag, {
267
+ id,
268
+ layer: makeLayer,
269
+ layerFetch: makeLayerFetch,
270
+ layerConfig: makeLayerConfig,
271
+ layerFetchConfig: makeLayerFetchConfig
272
+ });
273
+ };
274
+ //#endregion
275
+ export { AnalyticsEngineDataPointSchema, AnalyticsEngineFieldValueSchema, AnalyticsEngineOperationError, AnalyticsEngineQueryError, AnalyticsEngineWriteValidationError, AnalyticsEngine_exports, QueryTag, Tag, isAnalyticsEngineDataset, layer, layerFetch, layerFetchConfig, make, makeClient, makeQuery, makeQueryClient, queryConfig, queryLayer, queryLayerConfig, writeLimits };
@@ -1,5 +1,8 @@
1
- import { c as WorkerEnvironment, r as BindingValidationError, t as BindingNotFoundError } from "./Binding-DKcLrQCM.mjs";
2
- import { Context, Effect, Layer } from "effect";
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 { Layer } from "effect";
3
6
  declare namespace Artifacts_d_exports {
4
7
  export { ArtifactsBinding, ArtifactsClient, ArtifactsCommit, ArtifactsCommitIdentity, ArtifactsCreateOptions, ArtifactsCreateRepoResult, ArtifactsCreateTokenResult, ArtifactsDefinition, ArtifactsErrorCode, ArtifactsForkOptions, ArtifactsImportParams, ArtifactsImportSource, ArtifactsImportTarget, ArtifactsImportTargetOptions, ArtifactsListOptions, ArtifactsLogOptions, ArtifactsLogResult, ArtifactsOperation, ArtifactsOperationError, ArtifactsRepoBinding, ArtifactsRepoClient, ArtifactsRepoInfo, ArtifactsRepoListEntry, ArtifactsRepoListResult, ArtifactsRepoStatus, ArtifactsService, ArtifactsTokenInfo, ArtifactsTokenListResult, ArtifactsTokenScope, ArtifactsTokenState, ArtifactsTree, Cursor, LayerOptions, RepoName, Tag, TagClass, artifactsErrorCodes, artifactsErrorNumericCodes, isArtifactsBinding, isArtifactsRepoBinding, layer, make, makeClient };
5
8
  }
@@ -187,15 +190,15 @@ interface ArtifactsService<Id extends string> {
187
190
  type LayerOptions = {
188
191
  readonly binding: string;
189
192
  };
190
- interface TagClass<Self, Id extends string> extends Context.ServiceClass<Self, Id, ArtifactsClient> {
193
+ interface TagClass<Self, Id extends string> extends Context$1.ServiceClass<Self, Id, ArtifactsClient> {
191
194
  readonly id: Id;
192
195
  readonly layer: (options: LayerOptions) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
193
196
  }
194
197
  declare const isArtifactsRepoBinding: <Candidate>(value: Candidate) => value is Candidate & ArtifactsRepoBinding;
195
198
  declare const isArtifactsBinding: <Candidate>(value: Candidate) => value is Candidate & ArtifactsBinding;
196
199
  declare const makeClient: (definition: ArtifactsDefinition) => (artifacts: ArtifactsBinding) => ArtifactsClient;
197
- declare const layer: <Self>(tag: Context.Service<Self, ArtifactsClient>, definition: ArtifactsDefinition) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
200
+ declare const layer: <Self>(tag: Context$1.Service<Self, ArtifactsClient>, definition: ArtifactsDefinition) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
198
201
  declare const make: <Id extends string>(id: Id) => TagClass<ArtifactsService<Id>, Id>;
199
202
  declare const Tag: <Self>() => <Id extends string>(id: Id) => TagClass<Self, Id>;
200
203
  //#endregion
201
- export { ArtifactsOperationError as a, ArtifactsTokenListResult as c, ArtifactsCreateTokenResult as i, Artifacts_d_exports as l, ArtifactsCreateOptions as n, ArtifactsRepoInfo as o, ArtifactsCreateRepoResult as r, ArtifactsTokenInfo as s, ArtifactsBinding as t, RepoName as u };
204
+ export { ArtifactsBinding, ArtifactsClient, ArtifactsCommit, ArtifactsCommitIdentity, ArtifactsCreateOptions, ArtifactsCreateRepoResult, ArtifactsCreateTokenResult, ArtifactsDefinition, ArtifactsErrorCode, ArtifactsForkOptions, ArtifactsImportParams, ArtifactsImportSource, ArtifactsImportTarget, ArtifactsImportTargetOptions, ArtifactsListOptions, ArtifactsLogOptions, ArtifactsLogResult, ArtifactsOperation, ArtifactsOperationError, ArtifactsRepoBinding, ArtifactsRepoClient, ArtifactsRepoInfo, ArtifactsRepoListEntry, ArtifactsRepoListResult, ArtifactsRepoStatus, ArtifactsService, ArtifactsTokenInfo, ArtifactsTokenListResult, ArtifactsTokenScope, ArtifactsTokenState, ArtifactsTree, Artifacts_d_exports, Cursor, LayerOptions, RepoName, Tag, TagClass, artifactsErrorCodes, artifactsErrorNumericCodes, isArtifactsBinding, isArtifactsRepoBinding, layer, make, makeClient };
@@ -1,7 +1,11 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { t as causeMessage } from "./ErrorMessage-Byx2OgNd.mjs";
3
- import { r as layer$1 } from "./Binding-C82jRhdr.mjs";
4
- import { Context, Data, Effect, Predicate, Schema } from "effect";
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 * as Context from "effect/Context";
5
+ import * as Data from "effect/Data";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Schema from "effect/Schema";
8
+ import * as Predicate from "effect/Predicate";
5
9
  //#region src/Artifacts.ts
6
10
  var Artifacts_exports = /* @__PURE__ */ __exportAll({
7
11
  ArtifactsOperationError: () => ArtifactsOperationError,
@@ -125,4 +129,4 @@ const Tag = () => (id) => {
125
129
  });
126
130
  };
127
131
  //#endregion
128
- export { Artifacts_exports as n, ArtifactsOperationError as t };
132
+ export { ArtifactsOperationError, Artifacts_exports, Tag, artifactsErrorCodes, artifactsErrorNumericCodes, isArtifactsBinding, isArtifactsRepoBinding, layer, make, makeClient };
@@ -0,0 +1,45 @@
1
+ import { WorkerEnvironment } from "./Environment.mjs";
2
+ import * as Context from "effect/Context";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Predicate from "effect/Predicate";
5
+ declare namespace Binding_d_exports {
6
+ export { BindingNotFoundError, BindingService, BindingValidationError, Service, TypeId, ValidationOptions, layer };
7
+ }
8
+ declare const TypeId: "~effect-cf/Binding";
9
+ type TypeId = typeof TypeId;
10
+ declare const BindingNotFoundError_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: "BindingNotFoundError";
12
+ } & Readonly<A>;
13
+ /** Error raised when a configured binding does not exist on `env`. */
14
+ declare class BindingNotFoundError extends BindingNotFoundError_base<{
15
+ readonly binding: string;
16
+ readonly message: string;
17
+ }> {}
18
+ declare const BindingValidationError_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 & {
19
+ readonly _tag: "BindingValidationError";
20
+ } & Readonly<A>;
21
+ /** Error raised when a binding exists but does not match the expected shape. */
22
+ declare class BindingValidationError extends BindingValidationError_base<{
23
+ readonly binding: string;
24
+ readonly expected: string;
25
+ readonly actual: string;
26
+ readonly message: string;
27
+ }> {}
28
+ interface ValidationOptions {
29
+ readonly expected?: string;
30
+ }
31
+ type BindingCandidate = Parameters<typeof Predicate.isUnknown>[0];
32
+ interface BindingService<Self, Id extends string, Service> extends Context.ServiceClass<Self, `effect-cf/Binding/${Id}`, Service> {
33
+ readonly [TypeId]: TypeId;
34
+ readonly id: Id;
35
+ readonly binding: string;
36
+ readonly layer: Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
37
+ }
38
+ declare function layer<Self, Resource>(tag: Context.Service<Self, Resource>, binding: string, isResource: (value: BindingCandidate) => value is Resource, wrap?: undefined, options?: ValidationOptions): Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
39
+ declare function layer<Self, Resource, Service>(tag: Context.Service<Self, Service>, binding: string, isResource: (value: BindingCandidate) => value is Resource, wrap: (resource: Resource) => Service, options?: ValidationOptions): Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
40
+ declare const Service: <Self>() => {
41
+ <Id extends string, Resource>(id: Id, binding: string, isResource: (value: BindingCandidate) => value is Resource, wrap?: undefined, options?: ValidationOptions): BindingService<Self, Id, Resource>;
42
+ <Id extends string, Resource, Service>(id: Id, binding: string, isResource: (value: BindingCandidate) => value is Resource, wrap: (resource: Resource) => Service, options?: ValidationOptions): BindingService<Self, Id, Service>;
43
+ };
44
+ //#endregion
45
+ export { BindingNotFoundError, BindingService, BindingValidationError, Binding_d_exports, Service, TypeId, ValidationOptions, layer };
@@ -1,6 +1,10 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { a as WorkerEnvironment } from "./ErrorMessage-Byx2OgNd.mjs";
3
- import { Context, Data, Effect, Layer, Predicate } from "effect";
1
+ import { __exportAll } from "./_virtual/_rolldown/runtime.mjs";
2
+ import { WorkerEnvironment } from "./Environment.mjs";
3
+ import * as Context from "effect/Context";
4
+ import * as Data from "effect/Data";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Predicate from "effect/Predicate";
4
8
  //#region src/Binding.ts
5
9
  var Binding_exports = /* @__PURE__ */ __exportAll({
6
10
  BindingNotFoundError: () => BindingNotFoundError,
@@ -125,4 +129,4 @@ const Service = () => {
125
129
  return makeService;
126
130
  };
127
131
  //#endregion
128
- export { Service as n, layer as r, Binding_exports as t };
132
+ export { BindingNotFoundError, BindingValidationError, Binding_exports, Service, TypeId, layer };
@@ -0,0 +1,85 @@
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 { Layer } from "effect";
6
+ declare namespace BrowserRendering_d_exports {
7
+ export { BrowserRenderingBinding, BrowserRenderingBrowserClient, BrowserRenderingBrowserLike, BrowserRenderingClient, BrowserRenderingConnect, BrowserRenderingDefinition, BrowserRenderingExternalResult, BrowserRenderingLaunch, BrowserRenderingMethodOptions, BrowserRenderingOperationError, BrowserRenderingPageClient, BrowserRenderingPageFunction, BrowserRenderingPageLike, BrowserRenderingService, LayerOptions, Tag, TagClass, isBrowserRenderingBinding, layer, make, makeClient };
8
+ }
9
+ declare const BrowserRenderingOperationError_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 & {
10
+ readonly _tag: "BrowserRenderingOperationError";
11
+ } & Readonly<A>;
12
+ declare class BrowserRenderingOperationError extends BrowserRenderingOperationError_base<{
13
+ readonly binding: string;
14
+ readonly operation: string;
15
+ readonly cause: unknown;
16
+ }> {
17
+ get message(): string;
18
+ }
19
+ interface BrowserRenderingDefinition {
20
+ readonly binding: string;
21
+ }
22
+ type BrowserRenderingBinding = object;
23
+ interface BrowserRenderingMethodOptions {}
24
+ type BrowserRenderingExternalResult = Awaited<ReturnType<Response["json"]>>;
25
+ type BrowserRenderingPageFunction = string | Function;
26
+ type BrowserRenderingLaunch<RawBinding, Browser, LaunchOptions = unknown> = (binding: RawBinding, options?: LaunchOptions) => Promise<Browser>;
27
+ type BrowserRenderingConnect<RawBinding, Browser, ConnectOptions = unknown> = (binding: RawBinding, options?: ConnectOptions) => Promise<Browser>;
28
+ interface BrowserRenderingBrowserLike<Page = BrowserRenderingPageLike> {
29
+ readonly newPage: () => Promise<Page>;
30
+ readonly close?: () => Promise<void>;
31
+ readonly disconnect?: () => void;
32
+ readonly version?: () => Promise<string>;
33
+ }
34
+ interface BrowserRenderingPageLike {
35
+ readonly goto?: (url: string, options?: BrowserRenderingMethodOptions) => Promise<BrowserRenderingExternalResult>;
36
+ readonly setContent?: (html: string, options?: BrowserRenderingMethodOptions) => Promise<void>;
37
+ readonly content?: () => Promise<string>;
38
+ readonly screenshot?: (options?: BrowserRenderingMethodOptions) => Promise<Uint8Array | string>;
39
+ readonly pdf?: (options?: BrowserRenderingMethodOptions) => Promise<Uint8Array>;
40
+ readonly evaluate?: (pageFunction: BrowserRenderingPageFunction, ...args: ReadonlyArray<unknown>) => Promise<BrowserRenderingExternalResult>;
41
+ readonly close?: (options?: BrowserRenderingMethodOptions) => Promise<void>;
42
+ }
43
+ interface BrowserRenderingPageClient<Page extends BrowserRenderingPageLike> {
44
+ readonly raw: Page;
45
+ readonly goto: (url: string, options?: Parameters<NonNullable<Page["goto"]>>[1]) => Effect.Effect<Awaited<ReturnType<NonNullable<Page["goto"]>>>, BrowserRenderingOperationError>;
46
+ readonly setContent: (html: string, options?: Parameters<NonNullable<Page["setContent"]>>[1]) => Effect.Effect<void, BrowserRenderingOperationError>;
47
+ readonly content: Effect.Effect<string, BrowserRenderingOperationError>;
48
+ readonly screenshot: (options?: Parameters<NonNullable<Page["screenshot"]>>[0]) => Effect.Effect<Awaited<ReturnType<NonNullable<Page["screenshot"]>>>, BrowserRenderingOperationError>;
49
+ readonly pdf: (options?: Parameters<NonNullable<Page["pdf"]>>[0]) => Effect.Effect<Awaited<ReturnType<NonNullable<Page["pdf"]>>>, BrowserRenderingOperationError>;
50
+ readonly evaluate: (pageFunction: Parameters<NonNullable<Page["evaluate"]>>[0], ...args: ReadonlyArray<unknown>) => Effect.Effect<Awaited<ReturnType<NonNullable<Page["evaluate"]>>>, BrowserRenderingOperationError>;
51
+ readonly close: (options?: Parameters<NonNullable<Page["close"]>>[0]) => Effect.Effect<void, BrowserRenderingOperationError>;
52
+ }
53
+ interface BrowserRenderingBrowserClient<Browser extends BrowserRenderingBrowserLike<Page>, Page extends BrowserRenderingPageLike> {
54
+ readonly raw: Browser;
55
+ readonly newPage: Effect.Effect<BrowserRenderingPageClient<Page>, BrowserRenderingOperationError>;
56
+ readonly version: Effect.Effect<string, BrowserRenderingOperationError>;
57
+ readonly close: Effect.Effect<void, BrowserRenderingOperationError>;
58
+ readonly disconnect: Effect.Effect<void, BrowserRenderingOperationError>;
59
+ }
60
+ interface BrowserRenderingClient<RawBinding extends BrowserRenderingBinding = BrowserRenderingBinding> {
61
+ readonly launchWith: <Browser extends BrowserRenderingBrowserLike<Page>, Page extends BrowserRenderingPageLike = BrowserRenderingPageLike, LaunchOptions = unknown>(launch: BrowserRenderingLaunch<RawBinding, Browser, LaunchOptions>, options?: LaunchOptions) => Effect.Effect<BrowserRenderingBrowserClient<Browser, Page>, BrowserRenderingOperationError>;
62
+ readonly connectWith: <Browser extends BrowserRenderingBrowserLike<Page>, Page extends BrowserRenderingPageLike = BrowserRenderingPageLike, ConnectOptions = unknown>(connect: BrowserRenderingConnect<RawBinding, Browser, ConnectOptions>, options?: ConnectOptions) => Effect.Effect<BrowserRenderingBrowserClient<Browser, Page>, BrowserRenderingOperationError>;
63
+ readonly rawUnsafe: Effect.Effect<RawBinding>;
64
+ readonly definition: BrowserRenderingDefinition;
65
+ }
66
+ declare const BrowserRenderingServiceTypeId: unique symbol;
67
+ interface BrowserRenderingService<Id extends string> {
68
+ readonly [BrowserRenderingServiceTypeId]: {
69
+ readonly id: Id;
70
+ };
71
+ }
72
+ type LayerOptions = {
73
+ readonly binding: string;
74
+ };
75
+ interface TagClass<Self, Id extends string> extends Context$1.ServiceClass<Self, Id, BrowserRenderingClient> {
76
+ readonly id: Id;
77
+ readonly layer: (options: LayerOptions) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
78
+ }
79
+ declare const isBrowserRenderingBinding: <Candidate>(value: Candidate) => value is Candidate & BrowserRenderingBinding;
80
+ declare const makeClient: <RawBinding extends BrowserRenderingBinding = BrowserRenderingBinding>(definition: BrowserRenderingDefinition) => (binding: RawBinding) => BrowserRenderingClient<RawBinding>;
81
+ declare const layer: <Self>(tag: Context$1.Service<Self, BrowserRenderingClient>, definition: BrowserRenderingDefinition) => Layer.Layer<Self, BindingNotFoundError | BindingValidationError, WorkerEnvironment>;
82
+ declare const make: <Id extends string>(id: Id) => TagClass<BrowserRenderingService<Id>, Id>;
83
+ declare const Tag: <Self>() => <Id extends string>(id: Id) => TagClass<Self, Id>;
84
+ //#endregion
85
+ export { BrowserRenderingBinding, BrowserRenderingBrowserClient, BrowserRenderingBrowserLike, BrowserRenderingClient, BrowserRenderingConnect, BrowserRenderingDefinition, BrowserRenderingExternalResult, BrowserRenderingLaunch, BrowserRenderingMethodOptions, BrowserRenderingOperationError, BrowserRenderingPageClient, BrowserRenderingPageFunction, BrowserRenderingPageLike, BrowserRenderingService, BrowserRendering_d_exports, LayerOptions, Tag, TagClass, isBrowserRenderingBinding, layer, make, makeClient };
@@ -0,0 +1,81 @@
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 * as Context from "effect/Context";
5
+ import * as Data from "effect/Data";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Predicate from "effect/Predicate";
8
+ //#region src/BrowserRendering.ts
9
+ var BrowserRendering_exports = /* @__PURE__ */ __exportAll({
10
+ BrowserRenderingOperationError: () => BrowserRenderingOperationError,
11
+ Tag: () => Tag,
12
+ isBrowserRenderingBinding: () => isBrowserRenderingBinding,
13
+ layer: () => layer,
14
+ make: () => make,
15
+ makeClient: () => makeClient
16
+ });
17
+ const expectedBrowserRenderingBinding = "Browser Rendering binding resource";
18
+ var BrowserRenderingOperationError = class extends Data.TaggedError("BrowserRenderingOperationError") {
19
+ get message() {
20
+ return `Browser Rendering ${this.operation} failed for binding "${this.binding}": ${causeMessage(this.cause)}`;
21
+ }
22
+ };
23
+ const browserRenderingError = (binding, operation, cause) => new BrowserRenderingOperationError({
24
+ binding,
25
+ operation,
26
+ cause
27
+ });
28
+ const tryBrowserRenderingPromise = (binding, operation, evaluate) => Effect.tryPromise({
29
+ try: evaluate,
30
+ catch: (cause) => browserRenderingError(binding, operation, cause)
31
+ });
32
+ const tryBrowserRenderingSync = (binding, operation, evaluate) => Effect.try({
33
+ try: evaluate,
34
+ catch: (cause) => browserRenderingError(binding, operation, cause)
35
+ });
36
+ const missingMethod = (binding, operation) => Effect.fail(browserRenderingError(binding, operation, /* @__PURE__ */ new TypeError(`Browser Rendering object does not expose ${operation}()`)));
37
+ const wrapPage = (binding, page) => ({
38
+ raw: page,
39
+ goto: (url, options) => page.goto === void 0 ? missingMethod(binding, "goto") : tryBrowserRenderingPromise(binding, "goto", () => page.goto(url, options)),
40
+ setContent: (html, options) => page.setContent === void 0 ? missingMethod(binding, "setContent") : tryBrowserRenderingPromise(binding, "setContent", () => page.setContent(html, options)),
41
+ content: page.content === void 0 ? missingMethod(binding, "content") : tryBrowserRenderingPromise(binding, "content", () => page.content()),
42
+ screenshot: (options) => {
43
+ const screenshot = page.screenshot?.bind(page);
44
+ return screenshot === void 0 ? missingMethod(binding, "screenshot") : tryBrowserRenderingPromise(binding, "screenshot", () => screenshot(options));
45
+ },
46
+ pdf: (options) => {
47
+ const pdf = page.pdf?.bind(page);
48
+ return pdf === void 0 ? missingMethod(binding, "pdf") : tryBrowserRenderingPromise(binding, "pdf", () => pdf(options));
49
+ },
50
+ evaluate: (pageFunction, ...args) => {
51
+ const evaluate = page.evaluate?.bind(page);
52
+ return evaluate === void 0 ? missingMethod(binding, "evaluate") : tryBrowserRenderingPromise(binding, "evaluate", () => evaluate(pageFunction, ...args));
53
+ },
54
+ close: (options) => page.close === void 0 ? Effect.void : tryBrowserRenderingPromise(binding, "closePage", () => page.close(options))
55
+ });
56
+ const wrapBrowser = (binding, browser) => ({
57
+ raw: browser,
58
+ newPage: tryBrowserRenderingPromise(binding, "newPage", () => browser.newPage()).pipe(Effect.map((page) => wrapPage(binding, page))),
59
+ version: browser.version === void 0 ? missingMethod(binding, "version") : tryBrowserRenderingPromise(binding, "version", () => browser.version()),
60
+ close: browser.close === void 0 ? Effect.void : tryBrowserRenderingPromise(binding, "closeBrowser", () => browser.close()),
61
+ disconnect: browser.disconnect === void 0 ? Effect.void : tryBrowserRenderingSync(binding, "disconnect", () => browser.disconnect())
62
+ });
63
+ const isBrowserRenderingBinding = (value) => Predicate.isObjectOrArray(value) || Predicate.isFunction(value);
64
+ const makeClient = (definition) => (binding) => ({
65
+ definition,
66
+ launchWith: (launch, options) => tryBrowserRenderingPromise(definition.binding, "launch", () => launch(binding, options)).pipe(Effect.map((browser) => wrapBrowser(definition.binding, browser)), Effect.withSpan("BrowserRendering.launchWith")),
67
+ connectWith: (connect, options) => tryBrowserRenderingPromise(definition.binding, "connect", () => connect(binding, options)).pipe(Effect.map((browser) => wrapBrowser(definition.binding, browser)), Effect.withSpan("BrowserRendering.connectWith")),
68
+ rawUnsafe: Effect.succeed(binding)
69
+ });
70
+ const layer = (tag, definition) => layer$1(tag, definition.binding, isBrowserRenderingBinding, makeClient(definition), { expected: expectedBrowserRenderingBinding });
71
+ const make = (id) => Tag()(id);
72
+ const Tag = () => (id) => {
73
+ const tag = Context.Service()(id);
74
+ const makeLayer = (definition) => layer(tag, definition);
75
+ return Object.assign(tag, {
76
+ id,
77
+ layer: makeLayer
78
+ });
79
+ };
80
+ //#endregion
81
+ export { BrowserRenderingOperationError, BrowserRendering_exports, Tag, isBrowserRenderingBinding, layer, make, makeClient };
@@ -0,0 +1,40 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Option from "effect/Option";
5
+ declare namespace Cache_d_exports {
6
+ export { CacheClient, CacheOperation, CacheOperationError, CacheQueryOptions, CacheRequest, CacheStorage, CacheStorageClient, layer, layerFrom, makeCacheClient, makeClient };
7
+ }
8
+ type CacheRequest = CloudflareRequestInfo | URL;
9
+ type CacheQueryOptions = CloudflareCacheQueryOptions;
10
+ type CacheOperation = "open" | "match" | "put" | "delete";
11
+ declare const CacheOperationError_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 & {
12
+ readonly _tag: "CacheOperationError";
13
+ } & Readonly<A>;
14
+ declare class CacheOperationError extends CacheOperationError_base<{
15
+ readonly cache: string;
16
+ readonly operation: CacheOperation;
17
+ readonly cause: unknown;
18
+ }> {
19
+ get message(): string;
20
+ }
21
+ interface CacheClient {
22
+ readonly name: string;
23
+ readonly match: (request: CacheRequest, options?: CacheQueryOptions) => Effect.Effect<Option.Option<Response>, CacheOperationError>;
24
+ readonly put: (request: CacheRequest, response: Response) => Effect.Effect<void, CacheOperationError>;
25
+ readonly delete: (request: CacheRequest, options?: CacheQueryOptions) => Effect.Effect<boolean, CacheOperationError>;
26
+ readonly rawUnsafe: Effect.Effect<CloudflareCache>;
27
+ }
28
+ interface CacheStorageClient {
29
+ readonly default: CacheClient;
30
+ readonly open: (name: string) => Effect.Effect<CacheClient, CacheOperationError>;
31
+ readonly rawUnsafe: Effect.Effect<CloudflareCacheStorage>;
32
+ }
33
+ declare const CacheStorage_base: Context.ServiceClass<CacheStorage, "effect-cf/CacheStorage", CacheStorageClient>;
34
+ declare class CacheStorage extends CacheStorage_base {}
35
+ declare const makeCacheClient: (cache: CloudflareCache, name?: string) => CacheClient;
36
+ declare const makeClient: (storage: CloudflareCacheStorage) => CacheStorageClient;
37
+ declare const layerFrom: (storage: CloudflareCacheStorage) => Layer.Layer<CacheStorage>;
38
+ declare const layer: Layer.Layer<CacheStorage>;
39
+ //#endregion
40
+ export { CacheClient, CacheOperation, CacheOperationError, CacheQueryOptions, CacheRequest, CacheStorage, CacheStorageClient, Cache_d_exports, layer, layerFrom, makeCacheClient, makeClient };