@livestore/sync-cf 0.5.0-dev.0 → 0.5.0-dev.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 (101) hide show
  1. package/README.md +5 -5
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cf-worker/do/durable-object.d.ts.map +1 -1
  4. package/dist/cf-worker/do/durable-object.js +34 -30
  5. package/dist/cf-worker/do/durable-object.js.map +1 -1
  6. package/dist/cf-worker/do/layer.d.ts.map +1 -1
  7. package/dist/cf-worker/do/layer.js +2 -2
  8. package/dist/cf-worker/do/observability.d.ts +23 -0
  9. package/dist/cf-worker/do/observability.d.ts.map +1 -0
  10. package/dist/cf-worker/do/observability.js +52 -0
  11. package/dist/cf-worker/do/observability.js.map +1 -0
  12. package/dist/cf-worker/do/observability.test.d.ts +2 -0
  13. package/dist/cf-worker/do/observability.test.d.ts.map +1 -0
  14. package/dist/cf-worker/do/observability.test.js +204 -0
  15. package/dist/cf-worker/do/observability.test.js.map +1 -0
  16. package/dist/cf-worker/do/pull.d.ts.map +1 -1
  17. package/dist/cf-worker/do/pull.js +3 -3
  18. package/dist/cf-worker/do/push.d.ts +2 -2
  19. package/dist/cf-worker/do/push.d.ts.map +1 -1
  20. package/dist/cf-worker/do/push.js +7 -6
  21. package/dist/cf-worker/do/push.js.map +1 -1
  22. package/dist/cf-worker/do/push.test.js +1 -1
  23. package/dist/cf-worker/do/sqlite.js +1 -1
  24. package/dist/cf-worker/do/sync-storage.d.ts.map +1 -1
  25. package/dist/cf-worker/do/sync-storage.js +3 -3
  26. package/dist/cf-worker/do/transport/do-rpc-server.d.ts +15 -0
  27. package/dist/cf-worker/do/transport/do-rpc-server.d.ts.map +1 -1
  28. package/dist/cf-worker/do/transport/do-rpc-server.js +23 -7
  29. package/dist/cf-worker/do/transport/do-rpc-server.js.map +1 -1
  30. package/dist/cf-worker/do/transport/do-rpc-server.test.d.ts +2 -0
  31. package/dist/cf-worker/do/transport/do-rpc-server.test.d.ts.map +1 -0
  32. package/dist/cf-worker/do/transport/do-rpc-server.test.js +28 -0
  33. package/dist/cf-worker/do/transport/do-rpc-server.test.js.map +1 -0
  34. package/dist/cf-worker/do/transport/http-rpc-server.js +6 -6
  35. package/dist/cf-worker/do/transport/ws-rpc-server.d.ts +8 -1
  36. package/dist/cf-worker/do/transport/ws-rpc-server.d.ts.map +1 -1
  37. package/dist/cf-worker/do/transport/ws-rpc-server.js +32 -24
  38. package/dist/cf-worker/do/transport/ws-rpc-server.js.map +1 -1
  39. package/dist/cf-worker/mod.js +3 -3
  40. package/dist/cf-worker/shared.d.ts +17 -12
  41. package/dist/cf-worker/shared.d.ts.map +1 -1
  42. package/dist/cf-worker/shared.js +2 -2
  43. package/dist/cf-worker/shared.js.map +1 -1
  44. package/dist/cf-worker/worker.d.ts +3 -3
  45. package/dist/cf-worker/worker.d.ts.map +1 -1
  46. package/dist/cf-worker/worker.js +2 -2
  47. package/dist/cf-worker/worker.js.map +1 -1
  48. package/dist/client/mod.js +3 -3
  49. package/dist/client/transport/do-rpc-client.d.ts +6 -3
  50. package/dist/client/transport/do-rpc-client.d.ts.map +1 -1
  51. package/dist/client/transport/do-rpc-client.js +65 -20
  52. package/dist/client/transport/do-rpc-client.js.map +1 -1
  53. package/dist/client/transport/do-rpc-client.test.d.ts +2 -0
  54. package/dist/client/transport/do-rpc-client.test.d.ts.map +1 -0
  55. package/dist/client/transport/do-rpc-client.test.js +268 -0
  56. package/dist/client/transport/do-rpc-client.test.js.map +1 -0
  57. package/dist/client/transport/http-rpc-client.d.ts.map +1 -1
  58. package/dist/client/transport/http-rpc-client.js +20 -10
  59. package/dist/client/transport/http-rpc-client.js.map +1 -1
  60. package/dist/client/transport/rpc-client-error.d.ts +5 -0
  61. package/dist/client/transport/rpc-client-error.d.ts.map +1 -0
  62. package/dist/client/transport/rpc-client-error.js +8 -0
  63. package/dist/client/transport/rpc-client-error.js.map +1 -0
  64. package/dist/client/transport/rpc-client-error.test.d.ts +2 -0
  65. package/dist/client/transport/rpc-client-error.test.d.ts.map +1 -0
  66. package/dist/client/transport/rpc-client-error.test.js +33 -0
  67. package/dist/client/transport/rpc-client-error.test.js.map +1 -0
  68. package/dist/client/transport/ws-rpc-client.d.ts.map +1 -1
  69. package/dist/client/transport/ws-rpc-client.js +18 -12
  70. package/dist/client/transport/ws-rpc-client.js.map +1 -1
  71. package/dist/common/do-rpc-schema.d.ts +24 -11
  72. package/dist/common/do-rpc-schema.d.ts.map +1 -1
  73. package/dist/common/do-rpc-schema.js +10 -1
  74. package/dist/common/do-rpc-schema.js.map +1 -1
  75. package/dist/common/http-rpc-schema.d.ts +8 -8
  76. package/dist/common/http-rpc-schema.js +1 -1
  77. package/dist/common/mod.d.ts +1 -0
  78. package/dist/common/mod.d.ts.map +1 -1
  79. package/dist/common/mod.js +4 -3
  80. package/dist/common/mod.js.map +1 -1
  81. package/dist/common/sync-message-types.d.ts.map +1 -1
  82. package/dist/common/ws-rpc-schema.d.ts +1 -1
  83. package/dist/common/ws-rpc-schema.js +1 -1
  84. package/package.json +41 -41
  85. package/src/cf-worker/do/durable-object.ts +42 -45
  86. package/src/cf-worker/do/observability.test.ts +337 -0
  87. package/src/cf-worker/do/observability.ts +121 -0
  88. package/src/cf-worker/do/push.ts +3 -2
  89. package/src/cf-worker/do/transport/do-rpc-server.test.ts +32 -0
  90. package/src/cf-worker/do/transport/do-rpc-server.ts +23 -1
  91. package/src/cf-worker/do/transport/ws-rpc-server.ts +45 -21
  92. package/src/cf-worker/shared.ts +13 -6
  93. package/src/cf-worker/worker.ts +1 -1
  94. package/src/client/transport/do-rpc-client.test.ts +411 -0
  95. package/src/client/transport/do-rpc-client.ts +100 -18
  96. package/src/client/transport/http-rpc-client.ts +20 -9
  97. package/src/client/transport/rpc-client-error.test.ts +41 -0
  98. package/src/client/transport/rpc-client-error.ts +9 -0
  99. package/src/client/transport/ws-rpc-client.ts +15 -10
  100. package/src/common/do-rpc-schema.ts +10 -0
  101. package/src/common/mod.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"durable-object.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/durable-object.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,sBAAsB,CAAA;AAcnF,OAAO,EACL,KAAK,GAAG,EAER,KAAK,6BAA6B,EAElC,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAA;AAmBrB,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAA;AAChD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,CAAA;AAEnD,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,6BAA6B,KAAK;IAChF,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAA;CAChE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAuK/B,CAAA"}
1
+ {"version":3,"file":"durable-object.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/durable-object.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,sBAAsB,CAAA;AAInF,OAAO,EACL,KAAK,GAAG,EAER,KAAK,6BAA6B,EAElC,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAA;AAoBrB,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAA;AAChD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,aAAa,GAAG,CAAC,CAAA;AAEnD,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE,6BAA6B,KAAK;IAChF,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAA;CAChE,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAoJ/B,CAAA"}
@@ -2,12 +2,13 @@
2
2
  import { DurableObject } from 'cloudflare:workers';
3
3
  import { setupDurableObjectWebSocketRpc } from '@livestore/common-cf';
4
4
  import { CfDeclare } from '@livestore/common-cf/declare';
5
- import { Effect, FetchHttpClient, Layer, Logger, Otlp, References, RpcMessage, Schema, } from '@livestore/utils/effect';
6
- import { extractForwardedHeaders, matchSyncRequest, WebSocketAttachmentSchema, } from "../shared.js";
7
- import * as DoCtx from "./layer.js";
8
- import { createDoRpcHandler } from "./transport/do-rpc-server.js";
9
- import { createHttpRpcHandler } from "./transport/http-rpc-server.js";
10
- import { makeRpcServer } from "./transport/ws-rpc-server.js";
5
+ import { Effect, Layer, Logger, References, RpcMessage, Schema } from '@livestore/utils/effect';
6
+ import { extractForwardedHeaders, matchSyncRequest, WebSocketAttachmentSchema, } from '../shared.js';
7
+ import * as DoCtx from './layer.js';
8
+ import { makeObservability } from './observability.js';
9
+ import { createDoRpcHandler } from './transport/do-rpc-server.js';
10
+ import { createHttpRpcHandler } from './transport/http-rpc-server.js';
11
+ import { makeRpcServer } from './transport/ws-rpc-server.js';
11
12
  const Response = CfDeclare.Response;
12
13
  const WebSocketPair = CfDeclare.WebSocketPair;
13
14
  const WebSocketRequestResponsePair = CfDeclare.WebSocketRequestResponsePair;
@@ -52,20 +53,16 @@ const DurableObjectBase = DurableObject;
52
53
  */
53
54
  export const makeDurableObject = (options) => {
54
55
  const enabledTransports = options?.enabledTransports ?? new Set(['http', 'ws', 'do-rpc']);
55
- const Observability = options?.otel?.baseUrl !== undefined
56
- ? Otlp.layerJson({
57
- baseUrl: options.otel.baseUrl,
58
- tracerExportInterval: 50,
59
- resource: {
60
- serviceName: options.otel.serviceName ?? 'sync-cf-do',
61
- },
62
- }).pipe(Layer.provide(FetchHttpClient.layer))
63
- : Layer.empty;
64
56
  return class SyncBackendDOBase extends DurableObjectBase {
65
57
  __DURABLE_OBJECT_BRAND = 'SyncBackendDOBase';
58
+ observability = makeObservability(options?.otel);
66
59
  constructor(ctx, env) {
67
60
  super(ctx, env);
68
- const WebSocketRpcServerLive = makeRpcServer({ doSelf: this, doOptions: options });
61
+ const WebSocketRpcServerLive = makeRpcServer({
62
+ doSelf: this,
63
+ doOptions: options,
64
+ observability: this.observability,
65
+ });
69
66
  // This registers the `webSocketMessage` and `webSocketClose` handlers
70
67
  if (enabledTransports.has('ws') === true) {
71
68
  setupDurableObjectWebSocketRpc({
@@ -76,7 +73,6 @@ export const makeDurableObject = (options) => {
76
73
  // in combination with DO hibernation
77
74
  onMessage: (request, ws) => {
78
75
  if (request._tag === 'Request' && request.tag === 'SyncWsRpc.Pull') {
79
- // Is Pull request: add requestId to pullRequestIds
80
76
  const attachment = ws.deserializeAttachment();
81
77
  const { pullRequestIds, ...rest } = Schema.decodeUnknownSync(WebSocketAttachmentSchema)(attachment);
82
78
  ws.serializeAttachment(Schema.encodeSync(WebSocketAttachmentSchema)({
@@ -84,18 +80,9 @@ export const makeDurableObject = (options) => {
84
80
  pullRequestIds: [...pullRequestIds, request.id],
85
81
  }));
86
82
  }
87
- else if (request._tag === 'Interrupt') {
88
- // Is Interrupt request: remove requestId from pullRequestIds
89
- const attachment = ws.deserializeAttachment();
90
- const { pullRequestIds, ...rest } = Schema.decodeUnknownSync(WebSocketAttachmentSchema)(attachment);
91
- ws.serializeAttachment(Schema.encodeSync(WebSocketAttachmentSchema)({
92
- ...rest,
93
- pullRequestIds: pullRequestIds.filter((id) => id !== request.requestId),
94
- }));
95
- // TODO also emit `Exit` stream RPC message
96
- }
97
83
  },
98
- mainLayer: Observability,
84
+ onRequestExit: (requestId, ws) => removePullRequestId(ws, requestId),
85
+ onProtocolDefect: clearPullRequestIds,
99
86
  });
100
87
  }
101
88
  }
@@ -150,7 +137,11 @@ export const makeDurableObject = (options) => {
150
137
  if (enabledTransports.has('do-rpc') === false) {
151
138
  throw new Error('Do RPC transport is not enabled (based on `options.enabledTransports`)');
152
139
  }
153
- return createDoRpcHandler({ payload, input: { doSelf: this, doOptions: options } }).pipe(Effect.withSpan('@livestore/sync-cf:durable-object:rpc'), this.runEffectAsPromise);
140
+ return createDoRpcHandler({
141
+ payload,
142
+ input: { doSelf: this, doOptions: options },
143
+ observability: this.observability,
144
+ }).pipe(Effect.withSpan('@livestore/sync-cf:durable-object:rpc'), this.runEffectAsPromise);
154
145
  }
155
146
  /**
156
147
  * Handles HTTP RPC calls
@@ -162,7 +153,20 @@ export const makeDurableObject = (options) => {
162
153
  ...(options?.http?.responseHeaders !== undefined ? { responseHeaders: options.http.responseHeaders } : {}),
163
154
  ...(forwardedHeaders !== undefined ? { forwardedHeaders } : {}),
164
155
  }).pipe(Effect.withSpan('@livestore/sync-cf:durable-object:handleHttp'));
165
- runEffectAsPromise = (effect) => effect.pipe(Effect.tapCauseLogPretty, Effect.annotateLogs({ thread: 'SyncDo' }), Effect.provide(Layer.mergeAll(Observability, Logger.layer([Logger.consoleStructured]), Layer.succeed(References.MinimumLogLevel, 'Debug'))), Effect.scoped, Effect.runPromise);
156
+ runEffectAsPromise = (effect) => effect.pipe(Effect.tapCauseLogPretty, Effect.annotateLogs({ thread: 'SyncDo' }), Effect.provide(Layer.mergeAll(Logger.layer([Logger.consoleStructured]), Layer.succeed(References.MinimumLogLevel, 'Debug'))), Effect.scoped, this.observability.effect, Effect.runPromise);
166
157
  };
167
158
  };
159
+ const removePullRequestId = (ws, requestId) => updatePullRequestIds(ws, (pullRequestIds) => pullRequestIds.includes(requestId) === true ? pullRequestIds.filter((id) => id !== requestId) : pullRequestIds);
160
+ const clearPullRequestIds = (ws) => updatePullRequestIds(ws, (pullRequestIds) => (pullRequestIds.length === 0 ? pullRequestIds : []));
161
+ const updatePullRequestIds = (ws, update) => {
162
+ const attachment = ws.deserializeAttachment();
163
+ const { pullRequestIds, ...rest } = Schema.decodeUnknownSync(WebSocketAttachmentSchema)(attachment);
164
+ const nextPullRequestIds = update(pullRequestIds);
165
+ if (nextPullRequestIds === pullRequestIds)
166
+ return;
167
+ ws.serializeAttachment(Schema.encodeSync(WebSocketAttachmentSchema)({
168
+ ...rest,
169
+ pullRequestIds: nextPullRequestIds,
170
+ }));
171
+ };
168
172
  //# sourceMappingURL=durable-object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-object.js","sourceRoot":"","sources":["../../../src/cf-worker/do/durable-object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-object.js","sourceRoot":"","sources":["../../../src/cf-worker/do/durable-object.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAS,MAAM,0BAA0B,CAAA;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAa,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGtF,OAAO,KAAK,EAAE,GAAG,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAA;AAEtE,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAKrF,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC,aAAa,GAAG;QAC9B,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAA;QAC/B,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;IACD,SAAS,EAAE,6BAA6B,GAAG,SAAS,CAAA;IACpD,IAAI,EAAE,OAAO,CAAC,OAAO,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAA;AAEhC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAA;KAAE,CAAA;IACrE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAA;IAClF,+FAA+F;IAC/F,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,6BAA6B,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAA;CACzC;;AAED,qBAAa,KAAM,SAAQ,UAA6D;CAAG;AAO3F,eAAO,MAAM,IAAI,kEAqGhB,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,4CAAuC,CAAA"}
1
+ {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAS,MAAM,0BAA0B,CAAA;AAErE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAa,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGtF,OAAO,KAAK,EAAE,GAAG,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAA;AAEtE,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAKrF,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC,aAAa,GAAG;QAC9B,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAA;QAC/B,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;IACD,SAAS,EAAE,6BAA6B,GAAG,SAAS,CAAA;IACpD,IAAI,EAAE,OAAO,CAAC,OAAO,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAA;AAEhC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAA;KAAE,CAAA;IACrE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAA;IAClF,+FAA+F;IAC/F,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,6BAA6B,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAA;CACzC;;AAED,qBAAa,KAAM,SAAQ,UAA6D;CAAG;AAO3F,eAAO,MAAM,IAAI,kEAqGhB,CAAA;AAED,eAAO,MAAM,KAAK,YAAa,OAAO,4CAAuC,CAAA"}
@@ -3,8 +3,8 @@ import { EventSequenceNumber, State } from '@livestore/common/schema';
3
3
  import { shouldNeverHappen } from '@livestore/utils';
4
4
  import { Context, Effect, Layer, Predicate, Semaphore } from '@livestore/utils/effect';
5
5
  import { nanoid } from '@livestore/utils/nanoid';
6
- import { contextTable, eventlogTable } from "./sqlite.js";
7
- import { makeStorage } from "./sync-storage.js";
6
+ import { contextTable, eventlogTable } from './sqlite.js';
7
+ import { makeStorage } from './sync-storage.js';
8
8
  const CacheSymbol = Symbol('Cache');
9
9
  const InitializationSemaphoreSymbol = Symbol('InitializationSemaphore');
10
10
  export class DoCtx extends Context.Service()('@livestore/sync-cf/DoCtx') {
@@ -0,0 +1,23 @@
1
+ import type { BackendIdMismatchError, ServerAheadError, UnknownError } from '@livestore/common';
2
+ import { Effect, Option, Stream, type Tracer } from '@livestore/utils/effect';
3
+ import type { SyncBackendOtelOptions } from '../shared.ts';
4
+ /** Keep exporter ownership separate from sync scopes: their finalizers must not delay acknowledgments. */
5
+ export declare const makeObservability: (options: SyncBackendOtelOptions | undefined) => {
6
+ effect: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
7
+ stream: <A, E, R>(stream: Stream.Stream<A, E, R>) => Stream.Stream<A, E, R>;
8
+ };
9
+ /**
10
+ * Effect RPC's envelope lives until a live subscription closes and may never be exported.
11
+ * Give finite sync work its own exported boundary, attached to a sampled caller or a new backend root.
12
+ */
13
+ export declare const rpcSpanOptions: Effect.Effect<Tracer.SpanOptions | {
14
+ root: boolean;
15
+ }, never, never>;
16
+ export declare const makeRpcSpanOptions: (parent: Option.Option<Tracer.AnySpan>) => Tracer.SpanOptions;
17
+ /** Keep expected sync-recovery results out of error telemetry while preserving the typed failure for RPC callers. */
18
+ export declare const withRpcSpan: <A, E extends SyncRpcError, R>(effect: Effect.Effect<A, E, R>, name: string, options?: Tracer.SpanOptions) => Effect.Effect<A, E, R>;
19
+ /** Stream equivalent of `withRpcSpan`; expected failures are restored after the boundary span ends successfully. */
20
+ export declare const withRpcStreamSpan: <A, E extends SyncRpcError, R>(stream: Stream.Stream<A, E, R>, name: string, options?: Tracer.SpanOptions) => Stream.Stream<A, E, R>;
21
+ type SyncRpcError = UnknownError | ServerAheadError | BackendIdMismatchError;
22
+ export {};
23
+ //# sourceMappingURL=observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,EACL,MAAM,EAGN,MAAM,EAKN,MAAM,EACN,KAAK,MAAM,EACZ,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE1D,0GAA0G;AAC1G,eAAO,MAAM,iBAAiB,YAAa,sBAAsB,GAAG,SAAS;IAUzE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAGnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;;gBAG1B,CAAA;AAED,eAAO,MAAM,kBAAkB,WAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAG,MAAM,CAAC,WAOhF,CAAA;AAEF,qHAAqH;AACrH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,UAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QACxB,MAAM,YACF,MAAM,CAAC,WAAW,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAMrB,CAAA;AAEH,oHAAoH;AACpH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,SAAS,YAAY,EAAE,CAAC,UACpD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QACxB,MAAM,YACF,MAAM,CAAC,WAAW,KAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAqBrB,CAAA;AAEH,KAAK,YAAY,GAAG,YAAY,GAAG,gBAAgB,GAAG,sBAAsB,CAAA"}
@@ -0,0 +1,52 @@
1
+ import { Effect, FetchHttpClient, Layer, Option, Otlp, Ref, Result, Scope, Stream, } from '@livestore/utils/effect';
2
+ /** Keep exporter ownership separate from sync scopes: their finalizers must not delay acknowledgments. */
3
+ export const makeObservability = (options) => {
4
+ const layer = makeLayer(options);
5
+ const backgroundLayer = Layer.effectContext(Effect.acquireRelease(Scope.make(), (scope, exit) => Scope.close(scope, exit).pipe(runInBackground)).pipe(Effect.flatMap((scope) => Layer.buildWithScope(layer, scope))));
6
+ return {
7
+ effect: (effect) => options === undefined ? effect : effect.pipe(Effect.provide(backgroundLayer, { local: true })),
8
+ stream: (stream) => options === undefined ? stream : stream.pipe(Stream.provide(backgroundLayer, { local: true })),
9
+ };
10
+ };
11
+ /**
12
+ * Effect RPC's envelope lives until a live subscription closes and may never be exported.
13
+ * Give finite sync work its own exported boundary, attached to a sampled caller or a new backend root.
14
+ */
15
+ export const rpcSpanOptions = Effect.currentSpan.pipe(Effect.map((span) => makeRpcSpanOptions(span.parent)), Effect.catchTag('NoSuchElementError', () => Effect.succeed({ root: true })));
16
+ export const makeRpcSpanOptions = (parent) => ({
17
+ // Client runtimes use an unsampled no-op span by default. Parenting to it would suppress backend-only telemetry.
18
+ parent: parent.pipe(Option.filter((span) => span.sampled), Option.getOrUndefined),
19
+ root: true,
20
+ });
21
+ /** Keep expected sync-recovery results out of error telemetry while preserving the typed failure for RPC callers. */
22
+ export const withRpcSpan = (effect, name, options) => effect.pipe(Effect.map(Result.succeed), Effect.catchIf(isExpectedSyncError, (error) => Effect.succeed(Result.fail(error))), Effect.withSpan(name, options), Effect.flatMap(resultToEffect));
23
+ /** Stream equivalent of `withRpcSpan`; expected failures are restored after the boundary span ends successfully. */
24
+ export const withRpcStreamSpan = (stream, name, options) => Stream.unwrap(Effect.gen(function* () {
25
+ const expectedError = yield* Ref.make(Option.none());
26
+ const instrumented = stream.pipe(Stream.catchIf(isExpectedSyncError, (error) => Stream.fromEffect(Ref.set(expectedError, Option.some(error))).pipe(Stream.drain)), Stream.withSpan(name, options));
27
+ const restoreExpectedError = Stream.fromEffect(Ref.get(expectedError)).pipe(Stream.flatMap(Option.match({
28
+ onNone: () => Stream.empty,
29
+ onSome: Stream.fail,
30
+ })));
31
+ return instrumented.pipe(Stream.concat(restoreExpectedError));
32
+ }));
33
+ const makeLayer = (options) => {
34
+ if (isTracerLayer(options) === true)
35
+ return options;
36
+ if (options?.baseUrl !== undefined) {
37
+ return Otlp.layerJson({
38
+ baseUrl: options.baseUrl,
39
+ tracerExportInterval: 50,
40
+ shutdownTimeout: 3000,
41
+ resource: { serviceName: options.serviceName ?? 'sync-cf-do' },
42
+ }).pipe(Layer.provide(FetchHttpClient.layer));
43
+ }
44
+ return Layer.empty;
45
+ };
46
+ /** DOs stay active for pending work; no shutdown hook or connection-wide timer is required. */
47
+ const runInBackground = (effect) => effect.pipe(Effect.ignoreCause, Effect.withTracerEnabled(false), Effect.forkDetach, Effect.asVoid);
48
+ /** Preserve the known Layer requirements when narrowing the configuration union. */
49
+ const isTracerLayer = (options) => Layer.isLayer(options);
50
+ const isExpectedSyncError = (error) => error._tag === 'ServerAheadError' || error._tag === 'BackendIdMismatchError';
51
+ const resultToEffect = (result) => Result.isSuccess(result) === true ? Effect.succeed(result.success) : Effect.fail(result.failure);
52
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/cf-worker/do/observability.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACN,eAAe,EACf,KAAK,EACL,MAAM,EACN,IAAI,EACJ,GAAG,EACH,MAAM,EACN,KAAK,EACL,MAAM,GAEP,MAAM,yBAAyB,CAAA;AAIhC,0GAA0G;AAC1G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA2C,EAAE,EAAE;IAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAEhC,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,CACzC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CACvG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAC9D,CACF,CAAA;IAED,OAAO;QACL,MAAM,EAAE,CAAU,MAA8B,EAA0B,EAAE,CAC1E,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChG,MAAM,EAAE,CAAU,MAA8B,EAAE,EAAE,CAClD,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KACjG,CAAA;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CACnD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACrD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5E,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAqC,EAAsB,EAAE,CAAC,CAAC;IAChG,iHAAiH;IACjH,MAAM,EAAE,MAAM,CAAC,IAAI,CACjB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EACrC,MAAM,CAAC,cAAc,CACtB;IACD,IAAI,EAAE,IAAI;CACX,CAAC,CAAA;AAEF,qHAAqH;AACrH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAA8B,EAC9B,IAAY,EACZ,OAA4B,EACJ,EAAE,CAC1B,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAC1B,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAClF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAC/B,CAAA;AAEH,oHAAoH;AACpH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAA8B,EAC9B,IAAY,EACZ,OAA4B,EACJ,EAAE,CAC1B,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAK,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAC9B,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5C,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACjF,EACD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAC/B,CAAA;IACD,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CACzE,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,KAAK,CAAC;QACX,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK;QAC1B,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAC,CACH,CACF,CAAA;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC/D,CAAC,CAAC,CACH,CAAA;AAIH,MAAM,SAAS,GAAG,CAAC,OAA2C,EAAsB,EAAE;IACpF,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI;QAAE,OAAO,OAAO,CAAA;IACnD,IAAI,OAAO,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,oBAAoB,EAAE,EAAE;YACxB,eAAe,EAAE,IAAI;YACrB,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,YAAY,EAAE;SAC/D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAA;AACpB,CAAC,CAAA;AAED,+FAA+F;AAC/F,MAAM,eAAe,GAAG,CAAC,MAA2B,EAAE,EAAE,CACtD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;AAEpG,oFAAoF;AACpF,MAAM,aAAa,GAAG,CAAC,OAA2C,EAAiC,EAAE,CACnG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAExB,MAAM,mBAAmB,GAAG,CAAC,KAAmB,EAAW,EAAE,CAC3D,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,CAAA;AAE9E,MAAM,cAAc,GAAG,CAAO,MAA2B,EAAuB,EAAE,CAChF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=observability.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.test.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/observability.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,204 @@
1
+ import { ROOT_CONTEXT, SpanStatusCode, trace } from '@opentelemetry/api';
2
+ import { BackendIdMismatchError, UnknownError } from '@livestore/common';
3
+ import { layerProtocolDurableObject, WsContext } from '@livestore/common-cf';
4
+ import { makeNoopSpan, makeNoopTracer } from '@livestore/utils';
5
+ import { Vitest } from '@livestore/utils-dev/node-vitest';
6
+ import { Deferred, Effect, FetchHttpClient, Fiber, Layer, Option, OtelTracer, RpcClient, RpcTest, Schema, Stream, TestClock, Tracer, } from '@livestore/utils/effect';
7
+ import { SyncDoRpc } from '../../common/do-rpc-schema.js';
8
+ import { SyncWsRpc } from '../../common/ws-rpc-schema.js';
9
+ import { WebSocketAttachmentSchema } from '../shared.js';
10
+ import { makeObservability, rpcSpanOptions, withRpcSpan, withRpcStreamSpan } from './observability.js';
11
+ import { createDoRpcHandler } from './transport/do-rpc-server.js';
12
+ import { makeRpcHandlers } from './transport/ws-rpc-server.js';
13
+ Vitest.describe('sync-cf telemetry ownership', () => {
14
+ Vitest.afterEach(() => Vitest.vi.restoreAllMocks());
15
+ Vitest.effect('runs sync effects and streams without exporting when telemetry is omitted', () => Effect.gen(function* () {
16
+ const fetch = Vitest.vi.fn(async () => new Response('{}'));
17
+ const observability = makeObservability(undefined);
18
+ const result = yield* Effect.succeed('ack').pipe(Effect.withSpan('push'), observability.effect, Effect.provideService(FetchHttpClient.Fetch, fetch));
19
+ const history = yield* Stream.make('event').pipe(Stream.withSpan('pull'), observability.stream, Stream.runCollect, Effect.provideService(FetchHttpClient.Fetch, fetch));
20
+ yield* TestClock.adjust('4 seconds');
21
+ Vitest.expect(result).toBe('ack');
22
+ Vitest.expect(history).toEqual(['event']);
23
+ Vitest.expect(fetch).not.toHaveBeenCalled();
24
+ }));
25
+ Vitest.effect('builds and finalizes a supplied layer independently for overlapping operations', () => Effect.gen(function* () {
26
+ const firstStarted = yield* Deferred.make();
27
+ const secondStarted = yield* Deferred.make();
28
+ const firstGate = yield* Deferred.make();
29
+ const secondGate = yield* Deferred.make();
30
+ const firstReleased = yield* Deferred.make();
31
+ const secondReleased = yield* Deferred.make();
32
+ const builds = [];
33
+ const releases = [];
34
+ const layer = Layer.effectDiscard(Effect.acquireRelease(Effect.currentSpan.pipe(Effect.orDie, Effect.tap((span) => Effect.sync(() => builds.push(span.name)))), (span) => Effect.sync(() => releases.push(span.name)).pipe(Effect.andThen(Deferred.succeed(span.name === 'first' ? firstReleased : secondReleased, undefined)))));
35
+ const observability = makeObservability(layer);
36
+ const first = yield* Deferred.succeed(firstStarted, undefined).pipe(Effect.andThen(Deferred.await(firstGate)), observability.effect, Effect.withSpan('first'), Effect.forkChild);
37
+ yield* Deferred.await(firstStarted);
38
+ const second = yield* Deferred.succeed(secondStarted, undefined).pipe(Effect.andThen(Deferred.await(secondGate)), observability.effect, Effect.withSpan('second'), Effect.forkChild);
39
+ yield* Deferred.await(secondStarted);
40
+ Vitest.expect(builds).toEqual(['first', 'second']);
41
+ Vitest.expect(releases).toEqual([]);
42
+ yield* Deferred.succeed(firstGate, undefined);
43
+ yield* Fiber.join(first);
44
+ yield* Deferred.await(firstReleased);
45
+ Vitest.expect(releases).toEqual(['first']);
46
+ Vitest.expect(second.pollUnsafe()).toBeUndefined();
47
+ yield* Deferred.succeed(secondGate, undefined);
48
+ yield* Fiber.join(second);
49
+ yield* Deferred.await(secondReleased);
50
+ Vitest.expect(releases).toEqual(['first', 'second']);
51
+ }));
52
+ Vitest.effect('finalizes finite history while the live subscription is still open', () => Effect.gen(function* () {
53
+ const { layer, ended } = makeRecordingTracer();
54
+ const finalized = yield* Deferred.make();
55
+ const live = yield* Deferred.make();
56
+ const observability = makeObservability(Layer.mergeAll(layer, Layer.effectDiscard(Effect.addFinalizer(() => Deferred.succeed(finalized, [...ended])))));
57
+ const fiber = yield* Stream.make('history').pipe(Stream.withSpan('pull-history'), observability.stream, Stream.concat(Stream.fromEffect(Deferred.succeed(live, undefined)).pipe(Stream.concat(Stream.never))), Stream.runDrain, Effect.forkChild);
58
+ yield* Effect.addFinalizer(() => Fiber.interrupt(fiber));
59
+ yield* Deferred.await(live);
60
+ Vitest.expect(yield* Deferred.await(finalized)).toContain('pull-history');
61
+ Vitest.expect(fiber.pollUnsafe()).toBeUndefined();
62
+ }));
63
+ Vitest.effect('ends WebSocket telemetry before the production handler enters its live tail', () => Effect.gen(function* () {
64
+ const { layer, ended } = makeRecordingTracer();
65
+ const finalized = yield* Deferred.make();
66
+ const observability = makeObservability(Layer.mergeAll(layer, Layer.effectDiscard(Effect.addFinalizer(() => Deferred.succeed(finalized, undefined)))));
67
+ const input = makeDoInput();
68
+ const handlers = makeRpcHandlers({ ...input, observability }).pipe(Layer.provide(Layer.succeed(WsContext, WsContext.of({ ws: makeWebSocket() }))));
69
+ const client = yield* RpcTest.makeClient(SyncWsRpc).pipe(Effect.provide(handlers));
70
+ const pullFiber = yield* client['SyncWsRpc.Pull']({
71
+ storeId: 'store',
72
+ cursor: Option.none(),
73
+ live: true,
74
+ }).pipe(Stream.runDrain, Effect.forkChild);
75
+ yield* Effect.addFinalizer(() => Fiber.interrupt(pullFiber));
76
+ yield* Deferred.await(finalized).pipe(Effect.timeout('1 second'));
77
+ Vitest.expect(ended).toContain('RpcServer.SyncWsRpc.Pull');
78
+ Vitest.expect(pullFiber.pollUnsafe()).toBeUndefined();
79
+ }));
80
+ Vitest.effect('installs telemetry inside the Durable Object RPC stream runtime', () => Effect.gen(function* () {
81
+ const { layer, ended } = makeRecordingTracer();
82
+ const observability = makeObservability(layer);
83
+ const input = makeDoInput();
84
+ const protocol = layerProtocolDurableObject({
85
+ callerContext: { bindingName: 'TEST', durableObjectId: 'client' },
86
+ callRpc: (payload) => createDoRpcHandler({
87
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- Effect RPC owns this ArrayBuffer-backed payload.
88
+ payload: payload,
89
+ input,
90
+ observability,
91
+ }).pipe(Effect.runPromise),
92
+ });
93
+ const responses = yield* Effect.gen(function* () {
94
+ const client = yield* RpcClient.make(SyncDoRpc);
95
+ return yield* client['SyncDoRpc.Pull']({ storeId: 'store', cursor: Option.none() }).pipe(Stream.runCollect);
96
+ }).pipe(Effect.provide(protocol));
97
+ Vitest.expect(responses).toHaveLength(1);
98
+ Vitest.expect(ended).toContain('RpcServer.SyncDoRpc.Pull');
99
+ }));
100
+ Vitest.effect('attaches a finite span to a sampled caller across an unexported RPC envelope', () => Effect.gen(function* () {
101
+ const { layer, spans, ended } = makeRecordingTracer();
102
+ const observability = makeObservability(layer);
103
+ const caller = Tracer.externalSpan({ traceId: '1'.repeat(32), spanId: '2222222222222222', sampled: true });
104
+ yield* Effect.flatMap(rpcSpanOptions, (options) => withRpcSpan(Effect.void.pipe(Effect.withSpan('push')), 'finite-rpc', options)).pipe(observability.effect, Effect.withSpan('unexported-rpc-envelope'), Effect.withParentSpan(caller));
105
+ Vitest.expect(spans.get('finite-rpc')?.parentId).toBe(caller.spanId);
106
+ Vitest.expect(spans.get('push')?.parentId).toBe(spans.get('finite-rpc')?.spanId);
107
+ Vitest.expect(ended).toEqual(['push', 'finite-rpc']);
108
+ }));
109
+ Vitest.effect('starts a backend root when the RPC caller is unsampled', () => Effect.gen(function* () {
110
+ const { layer, spans, ended } = makeRecordingTracer();
111
+ const observability = makeObservability(layer);
112
+ const caller = Tracer.externalSpan({ traceId: '1'.repeat(32), spanId: '2222222222222222', sampled: false });
113
+ yield* Effect.flatMap(rpcSpanOptions, (options) => withRpcSpan(Effect.void, 'finite-rpc', options)).pipe(observability.effect, Effect.withSpan('unexported-rpc-envelope'), Effect.withParentSpan(caller));
114
+ Vitest.expect(spans.get('finite-rpc')?.parentId).toBeUndefined();
115
+ Vitest.expect(ended).toEqual(['finite-rpc']);
116
+ }));
117
+ Vitest.effect('keeps anticipated RPC recovery failures out of boundary error telemetry', () => Effect.gen(function* () {
118
+ const { layer, statuses } = makeRecordingTracer();
119
+ const observability = makeObservability(layer);
120
+ const expected = new BackendIdMismatchError({ expected: 'backend-a', received: 'backend-b' });
121
+ const unexpected = new UnknownError({ cause: new Error('boom') });
122
+ const effectError = yield* withRpcSpan(Effect.fail(expected), 'expected-effect').pipe(observability.effect, Effect.flip);
123
+ const streamError = yield* Stream.fail(expected).pipe((_) => withRpcStreamSpan(_, 'expected-stream'), observability.stream, Stream.runDrain, Effect.flip);
124
+ const unexpectedError = yield* withRpcSpan(Effect.fail(unexpected), 'unexpected-effect').pipe(observability.effect, Effect.flip);
125
+ Vitest.expect(effectError).toBe(expected);
126
+ Vitest.expect(streamError).toBe(expected);
127
+ Vitest.expect(unexpectedError).toBe(unexpected);
128
+ Vitest.expect(statuses.get('expected-effect')).toBe(SpanStatusCode.OK);
129
+ Vitest.expect(statuses.get('expected-stream')).toBe(SpanStatusCode.OK);
130
+ Vitest.expect(statuses.get('unexpected-effect')).toBe(SpanStatusCode.ERROR);
131
+ }));
132
+ Vitest.effect('forwards the operation exit to supplied layer finalizers', () => Effect.gen(function* () {
133
+ const released = yield* Deferred.make();
134
+ const expected = new BackendIdMismatchError({ expected: 'backend-a', received: 'backend-b' });
135
+ const observability = makeObservability(Layer.effectDiscard(Effect.acquireRelease(Effect.void, (_, exit) => Deferred.succeed(released, exit._tag).pipe(Effect.asVoid))));
136
+ const error = yield* Effect.fail(expected).pipe(observability.effect, Effect.flip);
137
+ Vitest.expect(error).toBe(expected);
138
+ Vitest.expect(yield* Deferred.await(released)).toBe('Failure');
139
+ }));
140
+ Vitest.live('acknowledges before the owned OTLP collector responds', () => Effect.gen(function* () {
141
+ const started = Promise.withResolvers();
142
+ const gate = Promise.withResolvers();
143
+ const acknowledged = yield* Deferred.make();
144
+ const fetch = Vitest.vi.fn(() => {
145
+ started.resolve();
146
+ return gate.promise.then(() => new Response('{}', { headers: { 'content-type': 'application/json' } }));
147
+ });
148
+ yield* Effect.addFinalizer(() => Effect.sync(() => gate.resolve()));
149
+ const observability = makeObservability({ baseUrl: 'http://collector.invalid' });
150
+ yield* Effect.void.pipe(Effect.withSpan('push'), observability.effect, Effect.andThen(Deferred.succeed(acknowledged, undefined)), Effect.provideService(FetchHttpClient.Fetch, fetch), Effect.forkChild);
151
+ yield* Effect.promise(() => started.promise);
152
+ yield* Effect.yieldNow;
153
+ Vitest.expect(yield* Deferred.isDone(acknowledged)).toBe(true);
154
+ }));
155
+ });
156
+ /** Record the public OTel boundary; span IDs are compared relationally, not fixed to creation order. */
157
+ const makeRecordingTracer = () => {
158
+ const tracer = makeNoopTracer();
159
+ const ended = [];
160
+ const statuses = new Map();
161
+ const spans = new Map();
162
+ let nextId = 0;
163
+ Vitest.vi.spyOn(tracer, 'startSpan').mockImplementation((name, _options, context) => {
164
+ const spanId = (++nextId).toString(16).padStart(16, '0');
165
+ spans.set(name, { spanId, parentId: trace.getSpanContext(context ?? ROOT_CONTEXT)?.spanId });
166
+ const noopSpan = makeNoopSpan();
167
+ return {
168
+ ...noopSpan,
169
+ spanContext: () => ({ traceId: '1'.repeat(32), spanId, traceFlags: 1 }),
170
+ setStatus: (status) => {
171
+ statuses.set(name, status.code);
172
+ return noopSpan;
173
+ },
174
+ end: () => {
175
+ ended.push(name);
176
+ },
177
+ };
178
+ });
179
+ const layer = OtelTracer.layerWithoutOtelTracer.pipe(Layer.provide(Layer.succeed(OtelTracer.OtelTracer, tracer)));
180
+ return { layer, ended, spans, statuses };
181
+ };
182
+ /** Minimal empty SQLite-backed Durable Object boundary for transport composition tests. */
183
+ const makeDoInput = () => {
184
+ const emptyCursor = Object.assign([], { toArray: () => [] });
185
+ const doSelf = {
186
+ env: {},
187
+ ctx: {
188
+ storage: {
189
+ sql: { exec: () => emptyCursor },
190
+ kv: { get: () => undefined, put: () => undefined, delete: () => undefined },
191
+ deleteAll: async () => undefined,
192
+ },
193
+ },
194
+ };
195
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- The test intentionally stubs the narrow Worker APIs reached by an empty pull.
196
+ return { doSelf: doSelf, doOptions: undefined };
197
+ };
198
+ const makeWebSocket = () => {
199
+ const attachment = Schema.encodeSync(WebSocketAttachmentSchema)({ storeId: 'store', pullRequestIds: [] });
200
+ const ws = { deserializeAttachment: () => attachment, close: Vitest.vi.fn() };
201
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- The handler only reads the attachment and closes invalid sockets.
202
+ return ws;
203
+ };
204
+ //# sourceMappingURL=observability.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.test.js","sourceRoot":"","sources":["../../../src/cf-worker/do/observability.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErF,OAAO,EAAkB,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAanC,eAAO,MAAM,oBAAoB,GAAI,4BAIlC;IACD,GAAG,EAAE,WAAW,CAAC,WAAW,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAA;CACtC,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,sBAAsB,EAAE,KAAK,CAAC,KAAK,CAiE3F,CAAA"}
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErF,OAAO,EAAkB,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAanC,eAAO,MAAM,oBAAoB,+BAI9B;IACD,GAAG,EAAE,WAAW,CAAC,WAAW,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAA;CACtC,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,sBAAsB,EAAE,KAAK,CAAC,KAAK,CAiE3F,CAAA"}
@@ -1,9 +1,9 @@
1
1
  import { BackendIdMismatchError, SyncBackend, UnknownError } from '@livestore/common';
2
2
  import { splitArrayBySize } from '@livestore/common/sync';
3
3
  import { Effect, Option, Schema, Stream } from '@livestore/utils/effect';
4
- import { MAX_PULL_EVENTS_PER_MESSAGE, MAX_WS_MESSAGE_BYTES } from "../../common/constants.js";
5
- import { SyncMessage } from "../../common/mod.js";
6
- import * as DoCtx from "./layer.js";
4
+ import { MAX_PULL_EVENTS_PER_MESSAGE, MAX_WS_MESSAGE_BYTES } from '../../common/constants.js';
5
+ import { SyncMessage } from '../../common/mod.js';
6
+ import * as DoCtx from './layer.js';
7
7
  const encodePullResponse = Schema.encodeSync(SyncMessage.PullResponse);
8
8
  // Notes on stream handling:
9
9
  // We're intentionally closing the stream once we've read all existing events
@@ -11,7 +11,7 @@ export declare const makePush: ({ payload, headers, options, storeId, ctx, env,
11
11
  storeId: StoreId;
12
12
  ctx: CfTypes.DurableObjectState;
13
13
  env: Env;
14
- }) => (pushRequest: Omit<SyncMessage.PushRequest, "_tag">) => Effect.Effect<{}, UnknownError | BackendIdMismatchError | ServerAheadError, DoCtx.DoCtx>;
14
+ }) => (pushRequest: Omit<SyncMessage.PushRequest, '_tag'>) => Effect.Effect<{}, BackendIdMismatchError | ServerAheadError | UnknownError, DoCtx.DoCtx>;
15
15
  /**
16
16
  * Serializes the complete push admission lifecycle, including publication to pull subscribers.
17
17
  *
@@ -24,5 +24,5 @@ export declare const makePush: ({ payload, headers, options, storeId, ctx, env,
24
24
  * matching pull response. Such a gap would make later pushers receive `ServerAhead` while waiting for a
25
25
  * response that was never published.
26
26
  */
27
- export declare const runSerializedPushAdmission: <A, E, R>(semaphore: DoCtx.Service["pushSemaphore"], admission: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
27
+ export declare const runSerializedPushAdmission: <A, E, R>(semaphore: DoCtx.Service['pushSemaphore'], admission: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
28
28
  //# sourceMappingURL=push.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACvG,OAAO,EAAE,KAAK,OAAO,EAAsB,MAAM,sBAAsB,CAAA;AAEvE,OAAO,EAAE,MAAM,EAAyD,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAG/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACL,KAAK,GAAG,EACR,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAGlC,KAAK,OAAO,EAEb,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAQnC,eAAO,MAAM,QAAQ,GAClB,mDAOE;IACD,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,6BAA6B,GAAG,SAAS,CAAA;IAClD,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAA;IAC/B,GAAG,EAAE,GAAG,CAAA;CACT,MACA,aAAa,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,6FA0KhD,CAAA;AAEL;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAChD,WAAW,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EACzC,WAAW,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAChC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAqE,CAAA"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/cf-worker/do/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACvG,OAAO,EAAE,KAAK,OAAO,EAAsB,MAAM,sBAAsB,CAAA;AAEvE,OAAO,EAAE,MAAM,EAAyD,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAG/G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACL,KAAK,GAAG,EACR,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAGlC,KAAK,OAAO,EAEb,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAQnC,eAAO,MAAM,QAAQ,sDAQhB;IACD,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAA;IAChC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,6BAA6B,GAAG,SAAS,CAAA;IAClD,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAC,kBAAkB,CAAA;IAC/B,GAAG,EAAE,GAAG,CAAA;CACT,mBACa,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,6FA2KhD,CAAA;AAEL;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,aACrC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,aAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAChC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAqE,CAAA"}
@@ -2,10 +2,10 @@ import { BackendIdMismatchError, ServerAheadError, SyncBackend, UnknownError } f
2
2
  import { emitStreamResponse } from '@livestore/common-cf';
3
3
  import { splitArrayBySize } from '@livestore/common/sync';
4
4
  import { Effect, Option, ReadonlyArray as EffectArray, Schema } from '@livestore/utils/effect';
5
- import { MAX_PUSH_EVENTS_PER_REQUEST, MAX_WS_MESSAGE_BYTES } from "../../common/constants.js";
6
- import { SyncMessage } from "../../common/mod.js";
7
- import { rpcSubscriptionKeyPrefix, WebSocketAttachmentSchema, } from "../shared.js";
8
- import * as DoCtx from "./layer.js";
5
+ import { MAX_PUSH_EVENTS_PER_REQUEST, MAX_WS_MESSAGE_BYTES } from '../../common/constants.js';
6
+ import { SyncMessage } from '../../common/mod.js';
7
+ import { rpcSubscriptionKeyPrefix, WebSocketAttachmentSchema, } from '../shared.js';
8
+ import * as DoCtx from './layer.js';
9
9
  const pullResponseJsonSchema = Schema.toCodecJson(SyncMessage.PullResponse);
10
10
  const encodePullResponse = Schema.encodeSync(pullResponseJsonSchema);
11
11
  const jsonStringify = Schema.encodeSync(Schema.fromJsonString(Schema.Unknown));
@@ -107,13 +107,14 @@ export const makePush = ({ payload, headers, options, storeId, ctx, env, }) => (
107
107
  const rpcSubscriptions = Array.from(ctx.storage.kv.list({ prefix: rpcSubscriptionKeyPrefix }));
108
108
  if (rpcSubscriptions.length > 0) {
109
109
  for (const [, subscription] of rpcSubscriptions) {
110
- for (const { encoded } of responses) {
110
+ for (const { response } of responses) {
111
111
  yield* emitStreamResponse({
112
112
  callerContext: subscription.callerContext,
113
113
  env,
114
114
  requestId: subscription.requestId,
115
115
  storeId: subscription.storeId,
116
- values: [encoded],
116
+ schema: SyncMessage.PullResponse,
117
+ values: [response],
117
118
  }).pipe(Effect.tapCauseLogPretty, Effect.exit);
118
119
  }
119
120
  }