@effect/platform-cloudflare 0.0.0 → 4.1.3
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/AGENTS.md +434 -0
- package/CLAUDE.md +434 -0
- package/LICENSE +21 -0
- package/README.md +506 -0
- package/ai-docs/README.md +44 -0
- package/ai-docs/package.json +36 -0
- package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
- package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +52 -0
- package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
- package/ai-docs/src/01_effect/01_basics/index.md +7 -0
- package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
- package/ai-docs/src/01_effect/02_schema/index.md +7 -0
- package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
- package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
- package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
- package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
- package/ai-docs/src/01_effect/03_services/index.md +5 -0
- package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
- package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
- package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
- package/ai-docs/src/01_effect/04_errors/index.md +1 -0
- package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
- package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
- package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
- package/ai-docs/src/01_effect/05_resources/index.md +3 -0
- package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
- package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
- package/ai-docs/src/01_effect/06_running/index.md +1 -0
- package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
- package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
- package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
- package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
- package/ai-docs/src/03_stream/30_encoding.ts +163 -0
- package/ai-docs/src/03_stream/index.md +4 -0
- package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
- package/ai-docs/src/04_integration/index.md +5 -0
- package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
- package/ai-docs/src/05_batching/index.md +3 -0
- package/ai-docs/src/06_schedule/10_schedules.ts +111 -0
- package/ai-docs/src/06_schedule/index.md +3 -0
- package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
- package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
- package/ai-docs/src/07_datetime/index.md +5 -0
- package/ai-docs/src/08_observability/10_logging.ts +66 -0
- package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
- package/ai-docs/src/08_observability/index.md +7 -0
- package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
- package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
- package/ai-docs/src/09_testing/index.md +1 -0
- package/ai-docs/src/10_predicate/01_basics.ts +14 -0
- package/ai-docs/src/10_predicate/index.md +9 -0
- package/ai-docs/src/40_sql/10_basics.ts +175 -0
- package/ai-docs/src/40_sql/index.md +6 -0
- package/ai-docs/src/50_http-client/10_basics.ts +102 -0
- package/ai-docs/src/50_http-client/index.md +3 -0
- package/ai-docs/src/51_http-server/10_basics.ts +118 -0
- package/ai-docs/src/51_http-server/20_testing.ts +100 -0
- package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
- package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
- package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
- package/ai-docs/src/51_http-server/fixtures/api/Users.ts +107 -0
- package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -0
- package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
- package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +37 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
- package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -0
- package/ai-docs/src/51_http-server/index.md +3 -0
- package/ai-docs/src/52_graphql/10_basics.ts +117 -0
- package/ai-docs/src/52_graphql/20_testing.ts +45 -0
- package/ai-docs/src/52_graphql/30_batching.ts +118 -0
- package/ai-docs/src/52_graphql/40_aliased-batching.ts +124 -0
- package/ai-docs/src/52_graphql/50_errors-and-retries.ts +74 -0
- package/ai-docs/src/52_graphql/index.md +6 -0
- package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
- package/ai-docs/src/60_child-process/index.md +3 -0
- package/ai-docs/src/70_cli/10_basics.ts +162 -0
- package/ai-docs/src/70_cli/index.md +5 -0
- package/ai-docs/src/71_ai/10_language-model.ts +156 -0
- package/ai-docs/src/71_ai/20_tools.ts +226 -0
- package/ai-docs/src/71_ai/30_chat.ts +158 -0
- package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
- package/ai-docs/src/71_ai/index.md +5 -0
- package/ai-docs/src/80_cluster/10_entities.ts +97 -0
- package/ai-docs/src/80_cluster/index.md +4 -0
- package/ai-docs/src/index.md +10 -0
- package/ai-docs/tsconfig.json +28 -0
- package/dist/AlchemyCloudflareCluster.d.ts +134 -0
- package/dist/AlchemyCloudflareCluster.d.ts.map +1 -0
- package/dist/AlchemyCloudflareCluster.js +111 -0
- package/dist/AlchemyCloudflareCluster.js.map +1 -0
- package/dist/CloudflareCluster.d.ts +196 -0
- package/dist/CloudflareCluster.d.ts.map +1 -0
- package/dist/CloudflareCluster.js +533 -0
- package/dist/CloudflareCluster.js.map +1 -0
- package/dist/CloudflareDurableObjectPrograms.d.ts +279 -0
- package/dist/CloudflareDurableObjectPrograms.d.ts.map +1 -0
- package/dist/CloudflareDurableObjectPrograms.js +295 -0
- package/dist/CloudflareDurableObjectPrograms.js.map +1 -0
- package/dist/CloudflareDurableObjects.d.ts +149 -0
- package/dist/CloudflareDurableObjects.d.ts.map +1 -0
- package/dist/CloudflareDurableObjects.js +337 -0
- package/dist/CloudflareDurableObjects.js.map +1 -0
- package/dist/CloudflarePersistedQueue.d.ts +36 -0
- package/dist/CloudflarePersistedQueue.d.ts.map +1 -0
- package/dist/CloudflarePersistedQueue.js +122 -0
- package/dist/CloudflarePersistedQueue.js.map +1 -0
- package/dist/CloudflareWorkflowEngine.d.ts +72 -0
- package/dist/CloudflareWorkflowEngine.d.ts.map +1 -0
- package/dist/CloudflareWorkflowEngine.js +187 -0
- package/dist/CloudflareWorkflowEngine.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/alchemyCluster.d.ts +2 -0
- package/dist/internal/alchemyCluster.d.ts.map +1 -0
- package/dist/internal/alchemyCluster.js +75 -0
- package/dist/internal/alchemyCluster.js.map +1 -0
- package/dist/internal/boundedMap.d.ts +3 -0
- package/dist/internal/boundedMap.d.ts.map +1 -0
- package/dist/internal/boundedMap.js +15 -0
- package/dist/internal/boundedMap.js.map +1 -0
- package/dist/internal/cluster.d.ts +57 -0
- package/dist/internal/cluster.d.ts.map +1 -0
- package/dist/internal/cluster.js +2 -0
- package/dist/internal/cluster.js.map +1 -0
- package/dist/internal/clusterName.d.ts +2 -0
- package/dist/internal/clusterName.d.ts.map +1 -0
- package/dist/internal/clusterName.js +16 -0
- package/dist/internal/clusterName.js.map +1 -0
- package/dist/internal/entityKeepAlive.d.ts +2 -0
- package/dist/internal/entityKeepAlive.d.ts.map +1 -0
- package/dist/internal/entityKeepAlive.js +73 -0
- package/dist/internal/entityKeepAlive.js.map +1 -0
- package/dist/internal/entityMailbox.d.ts +2 -0
- package/dist/internal/entityMailbox.d.ts.map +1 -0
- package/dist/internal/entityMailbox.js +160 -0
- package/dist/internal/entityMailbox.js.map +1 -0
- package/dist/internal/entityRegistry.d.ts +16 -0
- package/dist/internal/entityRegistry.d.ts.map +1 -0
- package/dist/internal/entityRegistry.js +22 -0
- package/dist/internal/entityRegistry.js.map +1 -0
- package/dist/internal/entityReply.d.ts +2 -0
- package/dist/internal/entityReply.d.ts.map +1 -0
- package/dist/internal/entityReply.js +35 -0
- package/dist/internal/entityReply.js.map +1 -0
- package/dist/internal/entityRuntime.d.ts +2 -0
- package/dist/internal/entityRuntime.d.ts.map +1 -0
- package/dist/internal/entityRuntime.js +823 -0
- package/dist/internal/entityRuntime.js.map +1 -0
- package/dist/internal/entitySql.d.ts +2 -0
- package/dist/internal/entitySql.d.ts.map +1 -0
- package/dist/internal/entitySql.js +29 -0
- package/dist/internal/entitySql.js.map +1 -0
- package/dist/internal/entityStorage.d.ts +2 -0
- package/dist/internal/entityStorage.d.ts.map +1 -0
- package/dist/internal/entityStorage.js +98 -0
- package/dist/internal/entityStorage.js.map +1 -0
- package/dist/internal/entityWire.d.ts +2 -0
- package/dist/internal/entityWire.d.ts.map +1 -0
- package/dist/internal/entityWire.js +146 -0
- package/dist/internal/entityWire.js.map +1 -0
- package/dist/internal/queueRuntime.d.ts +2 -0
- package/dist/internal/queueRuntime.d.ts.map +1 -0
- package/dist/internal/queueRuntime.js +88 -0
- package/dist/internal/queueRuntime.js.map +1 -0
- package/dist/internal/queueStorage.d.ts +2 -0
- package/dist/internal/queueStorage.d.ts.map +1 -0
- package/dist/internal/queueStorage.js +129 -0
- package/dist/internal/queueStorage.js.map +1 -0
- package/dist/internal/registry.d.ts +10 -0
- package/dist/internal/registry.d.ts.map +1 -0
- package/dist/internal/registry.js +24 -0
- package/dist/internal/registry.js.map +1 -0
- package/dist/internal/singletonRegistry.d.ts +2 -0
- package/dist/internal/singletonRegistry.d.ts.map +1 -0
- package/dist/internal/singletonRegistry.js +9 -0
- package/dist/internal/singletonRegistry.js.map +1 -0
- package/dist/internal/singletonRuntime.d.ts +2 -0
- package/dist/internal/singletonRuntime.d.ts.map +1 -0
- package/dist/internal/singletonRuntime.js +42 -0
- package/dist/internal/singletonRuntime.js.map +1 -0
- package/dist/internal/singletonStorage.d.ts +2 -0
- package/dist/internal/singletonStorage.d.ts.map +1 -0
- package/dist/internal/singletonStorage.js +34 -0
- package/dist/internal/singletonStorage.js.map +1 -0
- package/dist/internal/transport.d.ts +2 -0
- package/dist/internal/transport.d.ts.map +1 -0
- package/dist/internal/transport.js +49 -0
- package/dist/internal/transport.js.map +1 -0
- package/dist/internal/workflowRegistry.d.ts +2 -0
- package/dist/internal/workflowRegistry.d.ts.map +1 -0
- package/dist/internal/workflowRegistry.js +29 -0
- package/dist/internal/workflowRegistry.js.map +1 -0
- package/dist/internal/workflowRuntime.d.ts +2 -0
- package/dist/internal/workflowRuntime.d.ts.map +1 -0
- package/dist/internal/workflowRuntime.js +322 -0
- package/dist/internal/workflowRuntime.js.map +1 -0
- package/dist/internal/workflowStorage.d.ts +2 -0
- package/dist/internal/workflowStorage.d.ts.map +1 -0
- package/dist/internal/workflowStorage.js +113 -0
- package/dist/internal/workflowStorage.js.map +1 -0
- package/dist/internal/workflowWire.d.ts +2 -0
- package/dist/internal/workflowWire.d.ts.map +1 -0
- package/dist/internal/workflowWire.js +52 -0
- package/dist/internal/workflowWire.js.map +1 -0
- package/package.json +77 -1
- package/src/AlchemyCloudflareCluster.ts +200 -0
- package/src/CloudflareCluster.ts +704 -0
- package/src/CloudflareDurableObjectPrograms.ts +543 -0
- package/src/CloudflareDurableObjects.ts +430 -0
- package/src/CloudflarePersistedQueue.ts +189 -0
- package/src/CloudflareWorkflowEngine.ts +220 -0
- package/src/index.ts +38 -0
- package/src/internal/alchemyCluster.ts +120 -0
- package/src/internal/boundedMap.ts +15 -0
- package/src/internal/cluster.ts +57 -0
- package/src/internal/clusterName.ts +19 -0
- package/src/internal/entityKeepAlive.ts +121 -0
- package/src/internal/entityMailbox.ts +324 -0
- package/src/internal/entityRegistry.ts +46 -0
- package/src/internal/entityReply.ts +54 -0
- package/src/internal/entityRuntime.ts +1318 -0
- package/src/internal/entitySql.ts +60 -0
- package/src/internal/entityStorage.ts +168 -0
- package/src/internal/entityWire.ts +204 -0
- package/src/internal/queueRuntime.ts +174 -0
- package/src/internal/queueStorage.ts +255 -0
- package/src/internal/registry.ts +31 -0
- package/src/internal/singletonRegistry.ts +21 -0
- package/src/internal/singletonRuntime.ts +88 -0
- package/src/internal/singletonStorage.ts +64 -0
- package/src/internal/transport.ts +67 -0
- package/src/internal/workflowRegistry.ts +78 -0
- package/src/internal/workflowRuntime.ts +443 -0
- package/src/internal/workflowStorage.ts +234 -0
- package/src/internal/workflowWire.ts +123 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityKeepAlive.js","names":[],"sources":["../../src/internal/entityKeepAlive.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;AAYA,OAAO,KAAK,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,QAAQ,MAAM,iBAAiB;AA6B3C;AACA,OAAO,MAAM,mBAAmB,GAAI,OAA+B,IAAqB;EACtF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;EACpC,IAAI,OAAO,GAAG,CAAC;EACf,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM;EAC3B,IAAI,IAA4C;EAEhD;EACA,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAC/D,MAAM,CAAC,QAAQ,CAAE,KAAK,IAAK,MAAM,CAAC,UAAU,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC,EAC/F,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAC5B,QAAQ,CAAC,WAAW,CAAC,CAAC;IAAE;EAAQ,CAAE,KAChC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAClF,EACD,QAAQ,CAAC,QAAQ,CAClB,CACF,CACF;EAED,MAAM,OAAO,GAAG,MAAK;IACnB,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;IACnC,KAAK,CAAC,WAAW,EAAE;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACrC,IAAI,GAAG,KAAK;IACZ,KAAK,CAAC,WAAW,CAAC,MAAK;MACrB,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,GAAG,SAAS;IACtC,CAAC,CAAC;EACJ,CAAC;EAED,MAAM,OAAO,GAAG,MAAK;IACnB,IAAI,IAAI,KAAK,SAAS,EAAE;IACxB,IAAI,CAAC,eAAe,EAAE;IACtB,IAAI,GAAG,SAAS;IAChB,KAAK,CAAC,UAAU,EAAE;EACpB,CAAC;EAED,MAAM,SAAS,GAAI,IAAa,IAAI;IAClC,IAAI,MAAM,KAAK,IAAI,EAAE;IACrB,MAAM,GAAG,IAAI;IACb;IACA;IACA,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAK;MAC9B,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;IACjC,CAAC,CAAC,CAAC,EACH,MAAM,CAAC,UAAU,CAAE,KAAK,IAAK,MAAM,CAAC,QAAQ,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC,CAC7F,CACF;EACH,CAAC;EAED,MAAM,MAAM,GAAI,OAAgB,IAC9B,MAAM,CAAC,IAAI,CAAC,MAAK;IACf,IAAI,OAAO,EAAE;MACX,OAAO,EAAE;MACT,SAAS,CAAC,IAAI,CAAC;MACf;MACA,OAAO,EAAE;MACT;IACF;IACA;IACA;IACA,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE;IAC1B,IAAI,OAAO,KAAK,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;EACrC,CAAC,CAAC;EAEJ,OAAO;IACL,MAAM;IACN,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,YAAY,EAAE,MAAK;MACjB,OAAO,GAAG,CAAC;IACb,CAAC;IACD;GACD;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityMailbox.d.ts","sourceRoot":"","sources":["../../src/internal/entityMailbox.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export const mailboxCapacity = 4096;
|
|
4
|
+
/** @internal */
|
|
5
|
+
export const maximumEncodedSize = 2 * 1024 * 1024;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export class MailboxFullError extends Error {
|
|
8
|
+
_tag = "MailboxFull";
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export class EncodedMessageTooLargeError extends Error {
|
|
12
|
+
_tag = "EncodedMessageTooLarge";
|
|
13
|
+
}
|
|
14
|
+
const textEncoder = /*#__PURE__*/new TextEncoder();
|
|
15
|
+
// A UTF-16 code unit encodes to at most 3 UTF-8 bytes, so most strings skip
|
|
16
|
+
// the byte-length copy.
|
|
17
|
+
const exceedsMaximumEncodedSize = text => text.length * 3 > maximumEncodedSize && textEncoder.encode(text).byteLength > maximumEncodedSize;
|
|
18
|
+
/** @internal */
|
|
19
|
+
export const persistRequest = (sql, envelopeText, primaryKey, discard = false, deliverAt = null, replyTo = null) => Effect.suspend(() => {
|
|
20
|
+
if (exceedsMaximumEncodedSize(envelopeText)) {
|
|
21
|
+
return Effect.fail(new EncodedMessageTooLargeError("Encoded entity request exceeds 2 MB"));
|
|
22
|
+
}
|
|
23
|
+
const envelope = JSON.parse(envelopeText);
|
|
24
|
+
if (envelope._tag !== "Request" || typeof envelope.requestId !== "string") {
|
|
25
|
+
throw new TypeError("Expected an encoded Request envelope");
|
|
26
|
+
}
|
|
27
|
+
const existing = sql.exec(`SELECT m.request_id, m.discard, m.processed, m.reply_to
|
|
28
|
+
FROM cluster_messages m
|
|
29
|
+
WHERE m.request_id = ? OR (? IS NOT NULL AND m.message_id = ?)
|
|
30
|
+
LIMIT 1`, envelope.requestId, primaryKey, primaryKey).toArray()[0];
|
|
31
|
+
if (existing !== undefined) {
|
|
32
|
+
if (replyTo !== null && existing.discard === 0 && existing.processed === 0) {
|
|
33
|
+
const replyTos = decodeReplyTargets(existing.reply_to);
|
|
34
|
+
const requestId = envelope.requestId;
|
|
35
|
+
if (!replyTos.some(target => target.replyTo === replyTo && target.requestId === requestId)) {
|
|
36
|
+
replyTos.push({
|
|
37
|
+
replyTo,
|
|
38
|
+
requestId
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
sql.exec("UPDATE cluster_messages SET reply_to = ? WHERE request_id = ?", JSON.stringify(replyTos), existing.request_id);
|
|
42
|
+
}
|
|
43
|
+
return Effect.succeed({
|
|
44
|
+
_tag: "Duplicate",
|
|
45
|
+
originalId: existing.request_id,
|
|
46
|
+
processed: existing.processed === 1
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// A request counts against capacity until it is processed and, for streams,
|
|
50
|
+
// until its chunks are acknowledged. Two indexed counts instead of one
|
|
51
|
+
// `OR EXISTS` scan over the ever-growing dedup history.
|
|
52
|
+
const pending = sql.exec("SELECT COUNT(*) AS count FROM cluster_messages WHERE processed = 0").toArray()[0]?.count ?? 0;
|
|
53
|
+
const unacked = pending >= mailboxCapacity ? 0 : sql.exec(`SELECT COUNT(DISTINCT r.request_id) AS count
|
|
54
|
+
FROM cluster_replies r
|
|
55
|
+
JOIN cluster_messages m ON m.request_id = r.request_id
|
|
56
|
+
WHERE r.kind = 'Chunk' AND r.acked = 0 AND m.processed = 1`).toArray()[0]?.count ?? 0;
|
|
57
|
+
if (pending + unacked >= mailboxCapacity) {
|
|
58
|
+
return Effect.fail(new MailboxFullError("Entity mailbox has reached its 4096 request capacity"));
|
|
59
|
+
}
|
|
60
|
+
sql.exec(`INSERT INTO cluster_messages
|
|
61
|
+
(request_id, message_id, envelope, discard, processed, last_reply_id, deliver_at, reply_to)
|
|
62
|
+
VALUES (?, ?, ?, ?, 0, NULL, ?, ?)`, envelope.requestId, primaryKey, envelopeText, discard ? 1 : 0, deliverAt, replyTo === null ? null : JSON.stringify([{
|
|
63
|
+
replyTo,
|
|
64
|
+
requestId: envelope.requestId
|
|
65
|
+
}]));
|
|
66
|
+
return Effect.succeed({
|
|
67
|
+
_tag: "Success"
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
/** @internal */
|
|
71
|
+
export const saveReply = (sql, replyText) => Effect.suspend(() => {
|
|
72
|
+
if (exceedsMaximumEncodedSize(replyText)) {
|
|
73
|
+
return Effect.fail(new EncodedMessageTooLargeError("Encoded entity reply chunk exceeds 2 MB"));
|
|
74
|
+
}
|
|
75
|
+
const reply = JSON.parse(replyText);
|
|
76
|
+
if (reply._tag !== "Chunk" && reply._tag !== "WithExit" || typeof reply.requestId !== "string" || typeof reply.id !== "string") {
|
|
77
|
+
throw new TypeError("Expected an encoded Chunk or WithExit reply");
|
|
78
|
+
}
|
|
79
|
+
sql.exec(`INSERT OR IGNORE INTO cluster_replies
|
|
80
|
+
(reply_id, request_id, reply, kind, sequence, acked)
|
|
81
|
+
VALUES (?, ?, ?, ?, ?, 0)`, reply.id, reply.requestId, replyText, reply._tag, reply._tag === "Chunk" ? reply.sequence : null);
|
|
82
|
+
sql.exec(`UPDATE cluster_messages
|
|
83
|
+
SET last_reply_id = ?, processed = CASE WHEN ? = 'WithExit' THEN 1 ELSE processed END
|
|
84
|
+
WHERE request_id = ?`, reply.id, reply._tag, reply.requestId);
|
|
85
|
+
return Effect.void;
|
|
86
|
+
});
|
|
87
|
+
const isReplyTarget = item => typeof item === "object" && item !== null && typeof item.replyTo === "string" && typeof item.requestId === "string";
|
|
88
|
+
const decodeReplyTargets = value => {
|
|
89
|
+
if (typeof value !== "string") return [];
|
|
90
|
+
try {
|
|
91
|
+
const decoded = JSON.parse(value);
|
|
92
|
+
if (Array.isArray(decoded) && decoded.every(isReplyTarget)) return decoded;
|
|
93
|
+
} catch {
|
|
94
|
+
// Malformed rows deliver nowhere instead of poisoning the replay.
|
|
95
|
+
}
|
|
96
|
+
return [];
|
|
97
|
+
};
|
|
98
|
+
const rowToMessage = row => {
|
|
99
|
+
const replyTos = decodeReplyTargets(row.reply_to);
|
|
100
|
+
const message = {
|
|
101
|
+
requestId: row.request_id,
|
|
102
|
+
envelope: row.envelope,
|
|
103
|
+
lastSentChunk: row.last_reply ?? undefined,
|
|
104
|
+
discard: row.discard === 1,
|
|
105
|
+
...(row.deliver_at === null ? undefined : {
|
|
106
|
+
deliverAt: row.deliver_at
|
|
107
|
+
}),
|
|
108
|
+
...(replyTos.length === 0 ? undefined : {
|
|
109
|
+
replyTos
|
|
110
|
+
})
|
|
111
|
+
};
|
|
112
|
+
return message;
|
|
113
|
+
};
|
|
114
|
+
/** @internal */
|
|
115
|
+
export const loadUnprocessed = (sql, now) => Effect.sync(() => sql.exec(`SELECT m.request_id, m.envelope, m.discard, m.deliver_at, m.reply_to, r.reply AS last_reply
|
|
116
|
+
FROM cluster_messages m
|
|
117
|
+
LEFT JOIN cluster_replies r ON r.reply_id = m.last_reply_id
|
|
118
|
+
WHERE m.processed = 0 AND (m.deliver_at IS NULL OR m.deliver_at <= ?)
|
|
119
|
+
ORDER BY m.rowid ASC`, now ?? Date.now()).toArray().map(rowToMessage));
|
|
120
|
+
/** @internal */
|
|
121
|
+
export const loadMessage = (sql, requestId) => Effect.sync(() => {
|
|
122
|
+
const row = sql.exec(`SELECT m.request_id, m.envelope, m.discard, m.deliver_at, m.reply_to, r.reply AS last_reply
|
|
123
|
+
FROM cluster_messages m
|
|
124
|
+
LEFT JOIN cluster_replies r ON r.reply_id = m.last_reply_id
|
|
125
|
+
WHERE m.request_id = ?
|
|
126
|
+
LIMIT 1`, requestId).toArray()[0];
|
|
127
|
+
return row === undefined ? undefined : rowToMessage(row);
|
|
128
|
+
});
|
|
129
|
+
/** @internal */
|
|
130
|
+
export const loadNextReply = (sql, requestId) => Effect.sync(() => {
|
|
131
|
+
const row = sql.exec(`SELECT reply, kind
|
|
132
|
+
FROM cluster_replies
|
|
133
|
+
WHERE request_id = ? AND kind = 'Chunk' AND acked = 0
|
|
134
|
+
ORDER BY sequence ASC
|
|
135
|
+
LIMIT 1`, requestId).toArray()[0] ?? sql.exec(`SELECT reply, kind
|
|
136
|
+
FROM cluster_replies
|
|
137
|
+
WHERE request_id = ? AND kind = 'WithExit'
|
|
138
|
+
LIMIT 1`, requestId).toArray()[0];
|
|
139
|
+
return row;
|
|
140
|
+
});
|
|
141
|
+
/** @internal */
|
|
142
|
+
export const completeTell = (sql, requestId) => Effect.sync(() => {
|
|
143
|
+
sql.exec(`UPDATE cluster_messages
|
|
144
|
+
SET processed = 1, last_reply_id = NULL
|
|
145
|
+
WHERE request_id = ?`, requestId);
|
|
146
|
+
});
|
|
147
|
+
/** @internal */
|
|
148
|
+
export const ackChunk = (sql, requestId, replyId) => Effect.sync(() => {
|
|
149
|
+
sql.exec(`UPDATE cluster_replies
|
|
150
|
+
SET acked = 1
|
|
151
|
+
WHERE request_id = ? AND reply_id = ? AND kind = 'Chunk'`, requestId, replyId);
|
|
152
|
+
});
|
|
153
|
+
/** @internal */
|
|
154
|
+
export const clearReplies = (sql, requestId) => Effect.sync(() => {
|
|
155
|
+
sql.exec("DELETE FROM cluster_replies WHERE request_id = ?", requestId);
|
|
156
|
+
sql.exec(`UPDATE cluster_messages
|
|
157
|
+
SET processed = 0, last_reply_id = NULL
|
|
158
|
+
WHERE request_id = ?`, requestId);
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=entityMailbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityMailbox.js","names":[],"sources":["../../src/internal/entityMailbox.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type * as Context from "effect/Context";
|
|
2
|
+
import type * as Effect from "effect/Effect";
|
|
3
|
+
export interface EntityRegistration {
|
|
4
|
+
readonly entity: Entity.Entity<any, any>;
|
|
5
|
+
readonly build: Effect.Effect<Record<string, (request: any) => any>, never, never>;
|
|
6
|
+
readonly options: {
|
|
7
|
+
readonly concurrency?: number | "unbounded" | undefined;
|
|
8
|
+
readonly disableFatalDefects?: boolean | undefined;
|
|
9
|
+
readonly defectRetryPolicy?: unknown;
|
|
10
|
+
readonly spanAttributes?: Record<string, string> | undefined;
|
|
11
|
+
} | undefined;
|
|
12
|
+
readonly context: Context.Context<never>;
|
|
13
|
+
/** Interval of the keep-alive heartbeat alarm, in milliseconds. */
|
|
14
|
+
readonly keepAliveHeartbeat: number;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=entityRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityRegistry.d.ts","sourceRoot":"","sources":["../../src/internal/entityRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAG5C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAA;QACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;QACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAC7D,GAAG,SAAS,CAAA;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACxC,mEAAmE;IACnE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;CACpC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { makeRegistry } from "./registry.js";
|
|
2
|
+
const registry = /*#__PURE__*/makeRegistry();
|
|
3
|
+
/**
|
|
4
|
+
* Default interval of the keep-alive heartbeat alarm.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export const defaultKeepAliveHeartbeatMillis = 30_000;
|
|
9
|
+
/**
|
|
10
|
+
* The heartbeat interval of an entity type. An alarm can wake an object whose
|
|
11
|
+
* type a deploy removed, so a missing registration falls back to the default.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export const keepAliveHeartbeatMillis = entityType => registry.get(entityType)?.keepAliveHeartbeat ?? defaultKeepAliveHeartbeatMillis;
|
|
16
|
+
/** @internal */
|
|
17
|
+
export const getEntityRegistration = registry.get;
|
|
18
|
+
/** @internal */
|
|
19
|
+
export const registerEntity = registry.register;
|
|
20
|
+
/** @internal */
|
|
21
|
+
export const unregisterEntity = registry.unregister;
|
|
22
|
+
//# sourceMappingURL=entityRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityRegistry.js","names":[],"sources":["../../src/internal/entityRegistry.ts"],"sourcesContent":[null],"mappings":"AAIA,SAAS,YAAY,QAAQ,eAAe;AAgB5C,MAAM,QAAQ,gBAAG,YAAY,EAAsB;AAEnD;;;;;AAKA,OAAO,MAAM,+BAA+B,GAAG,MAAM;AAErD;;;;;;AAMA,OAAO,MAAM,wBAAwB,GAAI,UAAkB,IACzD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,kBAAkB,IAAI,+BAA+B;AAEjF;AACA,OAAO,MAAM,qBAAqB,GAAqD,QAAQ,CAAC,GAAG;AAEnG;AACA,OAAO,MAAM,cAAc,GAAgE,QAAQ,CAAC,QAAQ;AAE5G;AACA,OAAO,MAAM,gBAAgB,GAA6D,QAAQ,CAAC,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityReply.d.ts","sourceRoot":"","sources":["../../src/internal/entityReply.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
import * as Context from "effect/Context";
|
|
3
|
+
import * as Deferred from "effect/Deferred";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
/** @internal */
|
|
6
|
+
export class CurrentEntityName extends /*#__PURE__*/Context.Service()("@effect/platform-cloudflare/CurrentEntityName") {}
|
|
7
|
+
/** @internal */
|
|
8
|
+
export const makeReplyRegistry = () => {
|
|
9
|
+
const waiters = new Map();
|
|
10
|
+
return {
|
|
11
|
+
register(requestId, waiter) {
|
|
12
|
+
const registered = waiters.get(requestId) ?? new Set();
|
|
13
|
+
registered.add(waiter);
|
|
14
|
+
waiters.set(requestId, registered);
|
|
15
|
+
},
|
|
16
|
+
unregister(requestId, waiter) {
|
|
17
|
+
const registered = waiters.get(requestId);
|
|
18
|
+
if (registered === undefined) return;
|
|
19
|
+
registered.delete(waiter);
|
|
20
|
+
if (registered.size === 0) waiters.delete(requestId);
|
|
21
|
+
},
|
|
22
|
+
deliver(requestId, reply) {
|
|
23
|
+
const registered = waiters.get(requestId);
|
|
24
|
+
if (registered === undefined) return false;
|
|
25
|
+
waiters.delete(requestId);
|
|
26
|
+
for (const waiter of registered) {
|
|
27
|
+
Deferred.doneUnsafe(waiter, Effect.succeed(reply));
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/** @internal */
|
|
34
|
+
export class CurrentReplyRegistry extends /*#__PURE__*/Context.Service()("@effect/platform-cloudflare/CurrentReplyRegistry") {}
|
|
35
|
+
//# sourceMappingURL=entityReply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityReply.js","names":[],"sources":["../../src/internal/entityReply.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA,OAAO,KAAK,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe;AAEvC;AACA,OAAM,MAAO,iBAAkB,sBAAQ,OAAO,CAAC,OAAO,EAA6B,CACjF,+CAA+C,CAChD;AAeD;AACA,OAAO,MAAM,iBAAiB,GAAG,MAA0B;EACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0C;EACjE,OAAO;IACL,QAAQ,CAAC,SAAS,EAAE,MAAM;MACxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAE;MACtD,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;MACtB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC;IACpC,CAAC;IACD,UAAU,CAAC,SAAS,EAAE,MAAM;MAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;MACzC,IAAI,UAAU,KAAK,SAAS,EAAE;MAC9B,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;MACzB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,KAAK;MACtB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;MACzC,IAAI,UAAU,KAAK,SAAS,EAAE,OAAO,KAAK;MAC1C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;MACzB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;QAC/B,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;MACpD;MACA,OAAO,IAAI;IACb;GACD;AACH,CAAC;AAED;AACA,OAAM,MAAO,oBAAqB,sBAAQ,OAAO,CAAC,OAAO,EAA6C,CACpG,kDAAkD,CACnD","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityRuntime.d.ts","sourceRoot":"","sources":["../../src/internal/entityRuntime.ts"],"names":[],"mappings":""}
|