@dxos/functions-runtime-cloudflare 0.8.4-main.abd8ff62ef → 0.8.4-main.bc2380dfbc

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/LICENSE CHANGED
@@ -1,8 +1,105 @@
1
- MIT License
2
- Copyright (c) 2022 DXOS
1
+ # Functional Source License, Version 1.1, ALv2 Future License
3
2
 
4
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
3
+ ## Abbreviation
5
4
 
6
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
5
+ FSL-1.1-Apache-2.0
7
6
 
8
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7
+ ## Notice
8
+
9
+ Copyright 2026 DXOS
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
22
+
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly display
28
+ and redistribute the Software for any Permitted Purpose identified below.
29
+
30
+ ### Permitted Purpose
31
+
32
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33
+ means making the Software available to others in a commercial product or
34
+ service that:
35
+
36
+ 1. substitutes for the Software;
37
+
38
+ 2. substitutes for any other product or service we offer using the Software
39
+ that exists as of the date we make the Software available; or
40
+
41
+ 3. offers the same or substantially similar functionality as the Software.
42
+
43
+ Permitted Purposes specifically include using the Software:
44
+
45
+ 1. for your internal use and access;
46
+
47
+ 2. for non-commercial education;
48
+
49
+ 3. for non-commercial research; and
50
+
51
+ 4. in connection with professional services that you provide to a licensee
52
+ using the Software in accordance with these Terms and Conditions.
53
+
54
+ ### Patents
55
+
56
+ To the extent your use for a Permitted Purpose would necessarily infringe our
57
+ patents, the license grant above includes a license under our patents. If you
58
+ make a claim against any party that the Software infringes or contributes to
59
+ the infringement of any patent, then your patent license to the Software ends
60
+ immediately.
61
+
62
+ ### Redistribution
63
+
64
+ The Terms and Conditions apply to all copies, modifications and derivatives of
65
+ the Software.
66
+
67
+ If you redistribute any copies, modifications or derivatives of the Software,
68
+ you must include a copy of or a link to these Terms and Conditions and not
69
+ remove any copyright notices provided in or with the Software.
70
+
71
+ ### Disclaimer
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76
+
77
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80
+
81
+ ### Trademarks
82
+
83
+ Except for displaying the License Details and identifying us as the origin of
84
+ the Software, you have no right under these Terms and Conditions to use our
85
+ trademarks, trade names, service marks or product names.
86
+
87
+ ## Grant of Future License
88
+
89
+ We hereby irrevocably grant you an additional license to use the Software under
90
+ the Apache License, Version 2.0 that is effective on the second anniversary of
91
+ the date we make the Software available. On or after that date, you may use the
92
+ Software under the Apache License, Version 2.0, in which case the following
93
+ will apply:
94
+
95
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
96
+ this file except in compliance with the License.
97
+
98
+ You may obtain a copy of the License at
99
+
100
+ http://www.apache.org/licenses/LICENSE-2.0
101
+
102
+ Unless required by applicable law or agreed to in writing, software distributed
103
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
104
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
105
+ specific language governing permissions and limitations under the License.
package/README.md CHANGED
@@ -44,4 +44,4 @@ pnpm i @dxos/functions-runtime-cloudflare
44
44
 
45
45
  Your ideas, issues, and code are most welcome. Please take a look at our [community code of conduct](https://github.com/dxos/dxos/blob/main/CODE_OF_CONDUCT.md), the [issue guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-issues), and the [PR contribution guide](https://github.com/dxos/dxos/blob/main/CONTRIBUTING.md#submitting-prs).
46
46
 
47
- License: [MIT](./LICENSE) Copyright 2022 © DXOS
47
+ License: [FSL-1.1-Apache-2.0](./LICENSE) Copyright 2022 © DXOS
@@ -15,7 +15,7 @@ import { log } from "@dxos/log";
15
15
  var copyUint8Array = (value) => new Uint8Array(value);
16
16
 
17
17
  // src/internal/data-service-impl.ts
18
- var __dxlog_file = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
18
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
19
19
  function _ts_add_disposable_resource(env, value, async) {
20
20
  if (value !== null && value !== void 0) {
21
21
  if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
@@ -178,6 +178,9 @@ var DataServiceImpl = class {
178
178
  }));
179
179
  try {
180
180
  for (const update of updates ?? []) {
181
+ if (!update.mutation) {
182
+ continue;
183
+ }
181
184
  await this._dataService.changeDocument(this._executionContext, sub.spaceId, update.documentId, update.mutation);
182
185
  }
183
186
  } catch (error) {
@@ -208,7 +211,7 @@ var DataServiceImpl = class {
208
211
  });
209
212
  }
210
213
  async updateIndexes() {
211
- log.error("updateIndexes is not available in EDGE env.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 206, S: this });
214
+ log.verbose("updateIndexes called, but it is a no-op in EDGE env.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 211, S: this });
212
215
  }
213
216
  async waitUntilHeadsReplicated({ heads: _heads }) {
214
217
  throw new NotImplementedError({
@@ -221,7 +224,7 @@ var DataServiceImpl = class {
221
224
  import { Stream as Stream2 } from "@dxos/codec-protobuf/stream";
222
225
  import { NotImplementedError as NotImplementedError2, RuntimeServiceError as RuntimeServiceError2 } from "@dxos/errors";
223
226
  import { log as log2 } from "@dxos/log";
224
- var __dxlog_file2 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
227
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
225
228
  function _ts_add_disposable_resource2(env, value, async) {
226
229
  if (value !== null && value !== void 0) {
227
230
  if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
@@ -665,7 +668,7 @@ import { PublicKey } from "@dxos/keys";
665
668
 
666
669
  // src/queues-api.ts
667
670
  import { log as log3 } from "@dxos/log";
668
- var __dxlog_file3 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/queues-api.ts";
671
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/queues-api.ts";
669
672
  var QueuesAPIImpl = class {
670
673
  _serviceContainer;
671
674
  _spaceId;
@@ -700,7 +703,7 @@ var QueuesAPIImpl = class {
700
703
  };
701
704
 
702
705
  // src/space-proxy.ts
703
- var __dxlog_file4 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/space-proxy.ts";
706
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/space-proxy.ts";
704
707
  var SpaceProxy = class extends Resource {
705
708
  _serviceContainer;
706
709
  _echoClient;
@@ -746,7 +749,7 @@ var SpaceProxy = class extends Resource {
746
749
  };
747
750
 
748
751
  // src/functions-client.ts
749
- var __dxlog_file5 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/functions-client.ts";
752
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/functions-client.ts";
750
753
  var FunctionsClient = class extends Resource2 {
751
754
  _serviceContainer;
752
755
  _echoClient;
@@ -809,7 +812,7 @@ import { invariant as invariant4 } from "@dxos/invariant";
809
812
  import { SpaceId as SpaceId2 } from "@dxos/keys";
810
813
  import { log as log4 } from "@dxos/log";
811
814
  import { EdgeResponse } from "@dxos/protocols";
812
- var __dxlog_file6 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
815
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
813
816
  var wrapHandlerForCloudflare = (func) => {
814
817
  return async (request, env) => {
815
818
  if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/functions-client.ts", "../../../src/internal/data-service-impl.ts", "../../../src/internal/utils.ts", "../../../src/internal/query-service-impl.ts", "../../../src/internal/queue-service-impl.ts", "../../../src/internal/service-container.ts", "../../../src/space-proxy.ts", "../../../src/queues-api.ts", "../../../src/types.ts", "../../../src/wrap-handler-for-cloudflare.ts", "../../../src/logger.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Resource } from '@dxos/context';\nimport { EchoClient } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId } from '@dxos/keys';\nimport { type EdgeFunctionEnv } from '@dxos/protocols';\n\nimport { ServiceContainer } from './internal';\nimport { SpaceProxy } from './space-proxy';\n\ntype Services = {\n dataService: EdgeFunctionEnv.DataService;\n queueService: EdgeFunctionEnv.QueueService;\n functionsAiService: EdgeFunctionEnv.FunctionsAiService;\n};\n\n/**\n * API for functions to integrate with ECHO and HALO.\n * @deprecated\n */\nexport class FunctionsClient extends Resource {\n private readonly _serviceContainer;\n private readonly _echoClient;\n private readonly _executionContext: EdgeFunctionEnv.TraceContext = {};\n\n private readonly _spaces = new Map<SpaceId, SpaceProxy>();\n\n constructor(services: Services) {\n super();\n invariant(typeof services.dataService !== 'undefined', 'DataService is required');\n invariant(typeof services.queueService !== 'undefined', 'QueueService is required');\n this._serviceContainer = new ServiceContainer(\n this._executionContext,\n services.dataService,\n services.queueService,\n services.functionsAiService,\n );\n this._echoClient = new EchoClient({});\n }\n\n get echo(): EchoClient {\n return this._echoClient;\n }\n\n protected override async _open() {\n const { dataService, queryService } = await this._serviceContainer.createServices();\n this._echoClient.connectToService({ dataService, queryService });\n await this._echoClient.open();\n }\n\n protected override async _close() {\n for (const space of this._spaces.values()) {\n await space.close();\n }\n this._spaces.clear();\n\n await this._echoClient.close();\n }\n\n async getSpace(spaceId: SpaceId): Promise<SpaceProxy> {\n if (!this._spaces.has(spaceId)) {\n const space = new SpaceProxy(this._serviceContainer, this._echoClient, spaceId);\n this._spaces.set(spaceId, space);\n }\n const space = this._spaces.get(spaceId)!;\n await space.open(); // No-op if already open.\n return space;\n }\n}\n\nexport const createClientFromEnv = async (env: any): Promise<FunctionsClient> => {\n const client = new FunctionsClient({\n dataService: env.DATA_SERVICE,\n queueService: env.QUEUE_SERVICE,\n functionsAiService: env.FUNCTIONS_AI_SERVICE,\n });\n await client.open();\n return client;\n};\n\n/**\n - Provides data access capabilities for user functions.\n - No real-time replication or reactive queries -- function receives a snapshot.\n - Function event contains the metadata but doesn't need to include the data.\n */\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { RequestOptions } from '@dxos/codec-protobuf';\nimport { Stream } from '@dxos/codec-protobuf/stream';\nimport { raise } from '@dxos/debug';\nimport { NotImplementedError, RuntimeServiceError } from '@dxos/errors';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type EdgeFunctionEnv } from '@dxos/protocols';\nimport type {\n BatchedDocumentUpdates,\n CreateDocumentRequest,\n CreateDocumentResponse,\n DataService as DataServiceProto,\n GetDocumentHeadsRequest,\n GetDocumentHeadsResponse,\n GetSpaceSyncStateRequest,\n ReIndexHeadsRequest,\n SpaceSyncState,\n UpdateRequest,\n UpdateSubscriptionRequest,\n} from '@dxos/protocols/proto/dxos/echo/service';\n\nimport { copyUint8Array } from './utils';\n\nexport class DataServiceImpl implements DataServiceProto {\n private dataSubscriptions = new Map<string, { spaceId: SpaceId; next: (msg: BatchedDocumentUpdates) => void }>();\n\n constructor(\n private _executionContext: EdgeFunctionEnv.TraceContext,\n private _dataService: EdgeFunctionEnv.DataService,\n ) {}\n\n subscribe({ subscriptionId, spaceId }: { subscriptionId: string; spaceId: string }): Stream<BatchedDocumentUpdates> {\n return new Stream(({ next }) => {\n invariant(SpaceId.isValid(spaceId));\n this.dataSubscriptions.set(subscriptionId, { spaceId, next });\n\n return () => {\n this.dataSubscriptions.delete(subscriptionId);\n };\n });\n }\n\n async updateSubscription({ subscriptionId, addIds }: UpdateSubscriptionRequest): Promise<void> {\n const sub =\n this.dataSubscriptions.get(subscriptionId) ??\n raise(\n new RuntimeServiceError({\n message: 'Subscription not found.',\n context: { subscriptionId },\n }),\n );\n\n if (addIds) {\n log.info('request documents', { count: addIds.length });\n // TODO(dmaretskyi): Batch.\n for (const documentId of addIds) {\n using document = await this._dataService.getDocument(this._executionContext, sub.spaceId, documentId);\n log.info('document loaded', { documentId, spaceId: sub.spaceId, found: !!document });\n if (!document) {\n log.warn('not found', { documentId });\n continue;\n }\n sub.next({\n updates: [\n {\n documentId,\n // Copy returned object to avoid hanging RPC stub\n // See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/\n mutation: copyUint8Array(document.data),\n },\n ],\n });\n }\n }\n }\n\n async createDocument({ spaceId, initialValue }: CreateDocumentRequest): Promise<CreateDocumentResponse> {\n invariant(SpaceId.isValid(spaceId));\n using response = await this._dataService.createDocument(this._executionContext, spaceId, initialValue);\n return { documentId: response.documentId };\n }\n\n async update({ updates, subscriptionId }: UpdateRequest): Promise<void> {\n const sub =\n this.dataSubscriptions.get(subscriptionId) ??\n raise(\n new RuntimeServiceError({\n message: 'Subscription not found.',\n context: { subscriptionId },\n }),\n );\n // TODO(dmaretskyi): Batch.\n try {\n for (const update of updates ?? []) {\n await this._dataService.changeDocument(this._executionContext, sub.spaceId, update.documentId, update.mutation);\n }\n } catch (error) {\n throw RuntimeServiceError.wrap({\n message: 'Failed to apply document updates.',\n context: { subscriptionId },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async flush(): Promise<void> {\n // No-op.\n }\n\n subscribeSpaceSyncState(_request: GetSpaceSyncStateRequest, _options?: RequestOptions): Stream<SpaceSyncState> {\n throw new NotImplementedError({\n message: 'subscribeSpaceSyncState is not implemented.',\n });\n }\n\n async getDocumentHeads({ documentIds: _documentIds }: GetDocumentHeadsRequest): Promise<GetDocumentHeadsResponse> {\n throw new NotImplementedError({\n message: 'getDocumentHeads is not implemented.',\n });\n }\n\n async reIndexHeads({ documentIds: _documentIds }: ReIndexHeadsRequest): Promise<void> {\n throw new NotImplementedError({\n message: 'reIndexHeads is not implemented.',\n });\n }\n\n async updateIndexes(): Promise<void> {\n log.error('updateIndexes is not available in EDGE env.');\n // No-op.\n }\n\n async waitUntilHeadsReplicated({ heads: _heads }: { heads: any }): Promise<void> {\n throw new NotImplementedError({\n message: 'waitUntilHeadsReplicated is not implemented.',\n });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const copyUint8Array = (value: Uint8Array): Uint8Array => new Uint8Array(value);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Stream } from '@dxos/codec-protobuf/stream';\nimport { NotImplementedError, RuntimeServiceError } from '@dxos/errors';\nimport { log } from '@dxos/log';\nimport { type EdgeFunctionEnv } from '@dxos/protocols';\nimport { type QueryRequest, type QueryResponse, type QueryService } from '@dxos/protocols/proto/dxos/echo/query';\n\nexport class QueryServiceImpl implements QueryService {\n private _queryCount = 0;\n\n constructor(\n private readonly _executionContext: EdgeFunctionEnv.TraceContext,\n private readonly _dataService: EdgeFunctionEnv.DataService,\n ) {}\n\n execQuery(request: QueryRequest): Stream<QueryResponse> {\n log.info('execQuery', { request });\n\n return Stream.fromPromise<QueryResponse>(\n (async () => {\n try {\n this._queryCount++;\n log.info('begin query', { request });\n using queryResponse = await this._dataService.execQuery(this._executionContext, request);\n log.info('query response', { resultCount: queryResponse.results?.length });\n return structuredClone(queryResponse);\n } catch (error) {\n log.error('query failed', { err: error });\n throw new RuntimeServiceError({\n message: `Query execution failed (queryCount=${this._queryCount})`,\n context: { queryCount: this._queryCount },\n cause: error,\n });\n }\n })(),\n );\n }\n\n async reindex() {\n throw new NotImplementedError({\n message: 'Reindex is not implemented.',\n });\n }\n\n async setConfig() {\n throw new NotImplementedError({\n message: 'SetConfig is not implemented.',\n });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RuntimeServiceError } from '@dxos/errors';\nimport { type EdgeFunctionEnv, type FeedProtocol } from '@dxos/protocols';\n\nexport class QueueServiceImpl implements FeedProtocol.QueueService {\n constructor(\n protected _ctx: EdgeFunctionEnv.TraceContext,\n private readonly _queueService: EdgeFunctionEnv.QueueService,\n ) {}\n\n async queryQueue(request: FeedProtocol.QueryQueueRequest): Promise<FeedProtocol.QueryResult> {\n try {\n using result = await this._queueService.queryQueue(this._ctx, request);\n // Copy to avoid hanging RPC stub (Workers RPC lifecycle).\n return {\n objects: structuredClone(result.objects),\n nextCursor: result.nextCursor,\n prevCursor: result.prevCursor,\n };\n } catch (error) {\n const { query } = request;\n throw RuntimeServiceError.wrap({\n message: 'Queue query failed.',\n context: {\n subspaceTag: query?.queuesNamespace,\n spaceId: query?.spaceId,\n queueId: query?.queueIds?.[0],\n },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async insertIntoQueue(request: FeedProtocol.InsertIntoQueueRequest): Promise<void> {\n try {\n using _ = await this._queueService.insertIntoQueue(this._ctx, request);\n } catch (error) {\n const { subspaceTag, spaceId, queueId } = request;\n throw RuntimeServiceError.wrap({\n message: 'Queue append failed.',\n context: { subspaceTag, spaceId, queueId },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async deleteFromQueue(request: FeedProtocol.DeleteFromQueueRequest): Promise<void> {\n try {\n using _ = await this._queueService.deleteFromQueue(this._ctx, request);\n } catch (error) {\n const { subspaceTag, spaceId, queueId } = request;\n throw RuntimeServiceError.wrap({\n message: 'Queue delete failed.',\n context: { subspaceTag, spaceId, queueId },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async syncQueue(_: FeedProtocol.SyncQueueRequest): Promise<void> {\n // No-op in Cloudflare runtime.\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type AnyEntity } from '@dxos/echo/internal';\nimport { type DXN, type SpaceId } from '@dxos/keys';\nimport { type EdgeFunctionEnv, type FeedProtocol } from '@dxos/protocols';\nimport { type QueryService as QueryServiceProto } from '@dxos/protocols/proto/dxos/echo/query';\nimport type { DataService as DataServiceProto } from '@dxos/protocols/proto/dxos/echo/service';\n\nimport { DataServiceImpl } from './data-service-impl';\nimport { QueryServiceImpl } from './query-service-impl';\nimport { QueueServiceImpl } from './queue-service-impl';\n\n/**\n * TODO: make this implement DataService and QueryService to unify API over edge and web backend\n */\nexport class ServiceContainer {\n constructor(\n private readonly _executionContext: EdgeFunctionEnv.TraceContext,\n private readonly _dataService: EdgeFunctionEnv.DataService,\n private readonly _queueService: EdgeFunctionEnv.QueueService,\n private readonly _functionsService: EdgeFunctionEnv.FunctionsAiService,\n ) {}\n\n async getSpaceMeta(spaceId: SpaceId): Promise<EdgeFunctionEnv.SpaceMeta | undefined> {\n using result = await this._dataService.getSpaceMeta(this._executionContext, spaceId);\n // Copy returned object to avoid hanging RPC stub\n // See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/\n return result\n ? {\n spaceKey: result.spaceKey,\n rootDocumentId: result.rootDocumentId,\n }\n : undefined;\n }\n\n async createServices(): Promise<{\n dataService: DataServiceProto;\n queryService: QueryServiceProto;\n queueService: FeedProtocol.QueueService;\n functionsAiService: EdgeFunctionEnv.FunctionsAiService;\n }> {\n const dataService = new DataServiceImpl(this._executionContext, this._dataService);\n const queryService = new QueryServiceImpl(this._executionContext, this._dataService);\n const queueService = new QueueServiceImpl(this._executionContext, this._queueService);\n\n return {\n dataService,\n queryService,\n queueService,\n functionsAiService: this._functionsService,\n };\n }\n\n async queryQueue(queue: DXN): Promise<FeedProtocol.QueryResult> {\n const parts = queue.asQueueDXN();\n if (!parts) {\n throw new Error('Invalid queue DXN');\n }\n const { subspaceTag, spaceId, queueId } = parts;\n const result = await this._queueService.queryQueue(this._executionContext, {\n query: {\n spaceId,\n queuesNamespace: subspaceTag,\n queueIds: [queueId],\n },\n });\n return {\n objects: structuredClone(result.objects),\n nextCursor: result.nextCursor ?? null,\n prevCursor: result.prevCursor ?? null,\n };\n }\n\n async insertIntoQueue(queue: DXN, objects: AnyEntity[]): Promise<void> {\n const parts = queue.asQueueDXN();\n if (!parts) {\n throw new Error('Invalid queue DXN');\n }\n const { subspaceTag, spaceId, queueId } = parts;\n await this._queueService.insertIntoQueue(this._executionContext, {\n subspaceTag,\n spaceId,\n queueId,\n objects: objects.map((obj) => JSON.stringify(obj)),\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Resource } from '@dxos/context';\nimport { type Database } from '@dxos/echo';\nimport { type CoreDatabase, type EchoClient, type EchoDatabaseImpl } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey, type SpaceId } from '@dxos/keys';\n\nimport type { ServiceContainer } from './internal';\nimport { type QueuesAPI, QueuesAPIImpl } from './queues-api';\n\n/**\n * @deprecated\n */\nexport class SpaceProxy extends Resource {\n private _db?: EchoDatabaseImpl = undefined;\n private _queuesApi: QueuesAPIImpl;\n\n constructor(\n private readonly _serviceContainer: ServiceContainer,\n private readonly _echoClient: EchoClient,\n private readonly _id: SpaceId,\n ) {\n super();\n this._queuesApi = new QueuesAPIImpl(this._serviceContainer, this._id);\n }\n\n get id(): SpaceId {\n return this._id;\n }\n\n get db(): Database.Database {\n invariant(this._db);\n return this._db;\n }\n\n /**\n * @deprecated Use db API.\n */\n get crud(): CoreDatabase {\n invariant(this._db);\n return this._db.coreDatabase;\n }\n\n get queues(): QueuesAPI {\n return this._queuesApi;\n }\n\n protected override async _open() {\n const meta = await this._serviceContainer.getSpaceMeta(this._id);\n if (!meta) {\n throw new Error(`Space not found: ${this._id}`);\n }\n\n this._db = this._echoClient.constructDatabase({\n spaceId: this._id,\n spaceKey: PublicKey.from(meta.spaceKey),\n reactiveSchemaQuery: false,\n owningObject: this,\n });\n\n await this._db.coreDatabase.open(this._ctx, { rootUrl: meta.rootDocumentId });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type AnyEntity } from '@dxos/echo/internal';\nimport type { DXN, SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport type { ServiceContainer } from './internal';\n\nexport interface QueuesQueryResult {\n objects: AnyEntity[];\n nextCursor: string | null;\n prevCursor: string | null;\n}\n\n// TODO(dmaretskyi): Temporary API to get the queues working.\n// TODO(dmaretskyi): To be replaced with integrating queues into echo.\n/**\n * @deprecated\n */\nexport interface QueuesAPI {\n queryQueue(queue: DXN, options?: {}): Promise<QueuesQueryResult>;\n insertIntoQueue(queue: DXN, objects: AnyEntity[]): Promise<void>;\n}\n\n/**\n * @deprecated\n */\nexport class QueuesAPIImpl implements QueuesAPI {\n constructor(\n private readonly _serviceContainer: ServiceContainer,\n private readonly _spaceId: SpaceId,\n ) {}\n\n async queryQueue(queue: DXN, options?: {}): Promise<QueuesQueryResult> {\n const result = await this._serviceContainer.queryQueue(queue);\n const objects = (result.objects ?? []).flatMap((encoded): AnyEntity[] => {\n try {\n return [JSON.parse(encoded) as AnyEntity];\n } catch (err) {\n log.verbose('queue object JSON parse failed; object ignored', { encoded, error: err });\n return [];\n }\n });\n return {\n objects,\n nextCursor: result.nextCursor ?? null,\n prevCursor: result.prevCursor ?? null,\n };\n }\n\n insertIntoQueue(queue: DXN, objects: AnyEntity[]): Promise<void> {\n // TODO(dmaretskyi): Ugly.\n return this._serviceContainer.insertIntoQueue(queue, JSON.parse(JSON.stringify(objects)));\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { JsonSchemaType } from '@dxos/echo/internal';\n\n/**\n * Is used for to route the request to the metadata handler instead of the main handler.\n */\nexport const FUNCTION_ROUTE_HEADER = 'X-DXOS-Function-Route';\n\nexport enum FunctionRouteValue {\n Meta = 'meta',\n}\n\nexport type FunctionMetadata = {\n /**\n * FQN.\n */\n key: string;\n /**\n * Human-readable name.\n */\n name?: string;\n\n /**\n * Description.\n */\n description?: string;\n\n /**\n * Input schema.\n */\n inputSchema?: JsonSchemaType;\n\n /**\n * Output schema.\n */\n outputSchema?: JsonSchemaType;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { JsonSchemaType } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { EdgeResponse } from '@dxos/protocols';\nimport type { EdgeFunctionEnv, FunctionProtocol } from '@dxos/protocols';\n\nimport { ServiceContainer } from './internal';\nimport { FUNCTION_ROUTE_HEADER, type FunctionMetadata, FunctionRouteValue } from './types';\n\n/**\n * Wraps a user function in a Cloudflare-compatible handler.\n */\nexport const wrapHandlerForCloudflare = (func: FunctionProtocol.Func): ExportedHandlerFetchHandler<any> => {\n return async (request: Request, env: EdgeFunctionEnv.Env): Promise<Response> => {\n // TODO(dmaretskyi): Should theÓ scope name reflect the function name?\n // TODO(mykola): Wrap in withCleanAutomergeWasmState;\n // TODO(mykola): Wrap in withNewExecutionContext;\n // Meta route is used to get the input schema of the function by the functions service.\n if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {\n return handleFunctionMetaCall(func, request);\n }\n\n try {\n const spaceId = new URL(request.url).searchParams.get('spaceId');\n if (spaceId) {\n if (!SpaceId.isValid(spaceId)) {\n return new Response('Invalid spaceId', { status: 400 });\n }\n }\n\n const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE, env.FUNCTIONS_AI_SERVICE);\n const context = await createFunctionContext({\n serviceContainer,\n contextSpaceId: spaceId as SpaceId | undefined,\n });\n\n return EdgeResponse.success(await invokeFunction(func, context, request));\n } catch (error: any) {\n log.error('error invoking function', { error, stack: error.stack });\n return EdgeResponse.failure({\n message: error?.message ?? 'Internal error',\n error,\n });\n }\n };\n};\n\nconst invokeFunction = async (func: FunctionProtocol.Func, context: FunctionProtocol.Context, request: Request) => {\n // TODO(dmaretskyi): For some reason requests get wrapped like this.\n const { data } = await decodeRequest(request);\n\n return func.handler({\n context,\n data,\n });\n};\n\nconst decodeRequest = async (request: Request) => {\n const {\n data: { bodyText, ...rest },\n trigger,\n } = (await request.json()) as any;\n\n if (!bodyText) {\n return { data: rest, trigger };\n }\n\n // Webhook passed body as bodyText. Use it as function input if a well-formatted JSON\n // TODO: better trigger input mapping\n try {\n const data = JSON.parse(bodyText);\n return { data, trigger: { ...trigger, ...rest } };\n } catch (err) {\n log.catch(err);\n return { data: { bodyText, ...rest } };\n }\n};\n\nconst handleFunctionMetaCall = (functionDefinition: FunctionProtocol.Func, request: Request): Response => {\n const response: FunctionMetadata = {\n key: functionDefinition.meta.key,\n name: functionDefinition.meta.name,\n description: functionDefinition.meta.description,\n inputSchema: functionDefinition.meta.inputSchema as JsonSchemaType | undefined,\n outputSchema: functionDefinition.meta.outputSchema as JsonSchemaType | undefined,\n };\n\n return new Response(JSON.stringify(response), {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n};\n\nexport const createFunctionContext = async ({\n serviceContainer,\n contextSpaceId,\n}: {\n serviceContainer: ServiceContainer;\n contextSpaceId: SpaceId | undefined;\n}): Promise<FunctionProtocol.Context> => {\n const { dataService, queryService, queueService, functionsAiService } = await serviceContainer.createServices();\n\n let spaceKey: string | undefined;\n let rootUrl: string | undefined;\n if (contextSpaceId) {\n const meta = await serviceContainer.getSpaceMeta(contextSpaceId);\n if (!meta) {\n throw new Error(`Space not found: ${contextSpaceId}`);\n }\n spaceKey = meta.spaceKey;\n invariant(!meta.rootDocumentId.startsWith('automerge:'));\n rootUrl = `automerge:${meta.rootDocumentId}`;\n }\n\n return {\n services: {\n dataService,\n queryService,\n queueService,\n functionsAiService,\n },\n spaceId: contextSpaceId,\n spaceKey,\n spaceRootUrl: rootUrl,\n } as any; // TODO(dmaretskyi): Link and fix before merging\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { LogLevel, type LogProcessor, log, shouldLog } from '@dxos/log';\n\nexport const setupFunctionsLogger = () => {\n log.runtimeConfig.processors.length = 0;\n log.runtimeConfig.processors.push(functionLogProcessor);\n};\n\nconst functionLogProcessor: LogProcessor = (config, entry) => {\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n\n const context = entry.computedContext;\n const error = entry.computedError;\n const extras = [Object.keys(context).length > 0 ? context : undefined, error].filter((value) => value !== undefined);\n\n switch (entry.level) {\n case LogLevel.DEBUG:\n case LogLevel.TRACE:\n console.debug(entry.message, ...extras);\n break;\n case LogLevel.VERBOSE:\n console.log(entry.message, ...extras);\n break;\n case LogLevel.INFO:\n console.info(entry.message, ...extras);\n break;\n case LogLevel.WARN:\n console.warn(entry.message, ...extras);\n break;\n case LogLevel.ERROR:\n console.error(entry.message, ...extras);\n break;\n default:\n console.log(entry.message, ...extras);\n break;\n }\n};\n"],
5
- "mappings": "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",
6
- "names": ["Resource", "EchoClient", "invariant", "raise", "NotImplementedError", "invariant", "SpaceId", "log", "copyUint8Array", "copyUint8Array", "value", "Uint8Array", "dataSubscriptions", "_executionContext", "_dataService", "subscribe", "next", "invariant", "SpaceId", "isValid", "spaceId", "subscriptionId", "message", "context", "log", "count", "info", "documentId", "found", "document", "sub", "updates", "response", "createDocument", "initialValue", "get", "changeDocument", "RuntimeServiceError", "ifTypeDiffers", "error", "subscribeSpaceSyncState", "NotImplementedError", "NotImplementedError", "log", "RuntimeServiceError", "QueryServiceImpl", "__dxlog_file", "_queryCount", "_executionContext", "_dataService", "execQuery", "info", "request", "fromPromise", "Stream", "queryResponse", "_ts_add_disposable_resource", "resultCount", "structuredClone", "error", "err", "message", "context", "queryCount", "cause", "RuntimeServiceError", "QueueServiceImpl", "_ctx", "_queueService", "queryQueue", "request", "result", "objects", "structuredClone", "nextCursor", "prevCursor", "error", "query", "wrap", "message", "context", "subspaceTag", "queuesNamespace", "spaceId", "queueId", "queueIds", "ifTypeDiffers", "insertIntoQueue", "_", "deleteFromQueue", "syncQueue", "ServiceContainer", "_executionContext", "_dataService", "_queueService", "_functionsService", "getSpaceMeta", "spaceId", "result", "spaceKey", "rootDocumentId", "undefined", "createServices", "dataService", "DataServiceImpl", "queryService", "QueryServiceImpl", "queueService", "QueueServiceImpl", "functionsAiService", "queryQueue", "queue", "parts", "asQueueDXN", "Error", "subspaceTag", "queueId", "query", "queuesNamespace", "queueIds", "objects", "structuredClone", "nextCursor", "prevCursor", "insertIntoQueue", "map", "obj", "JSON", "stringify", "Resource", "invariant", "PublicKey", "log", "__dxlog_file", "_spaceId", "queryQueue", "queue", "objects", "result", "err", "encoded", "error", "nextCursor", "prevCursor", "insertIntoQueue", "_serviceContainer", "__dxlog_file", "_db", "_queuesApi", "QueuesAPIImpl", "_serviceContainer", "id", "db", "invariant", "queues", "_open", "meta", "Error", "_echoClient", "constructDatabase", "spaceKey", "PublicKey", "reactiveSchemaQuery", "owningObject", "coreDatabase", "__dxlog_file", "_echoClient", "Resource", "_executionContext", "_spaces", "invariant", "services", "_serviceContainer", "ServiceContainer", "dataService", "queueService", "functionsAiService", "EchoClient", "echo", "_open", "queryService", "_close", "space", "clear", "getSpace", "spaceId", "set", "DATA_SERVICE", "env", "FUNCTION_ROUTE_HEADER", "FunctionRouteValue", "invariant", "SpaceId", "log", "EdgeResponse", "__dxlog_file", "SpaceId", "isValid", "spaceId", "status", "serviceContainer", "contextSpaceId", "success", "log", "error", "stack", "EdgeResponse", "message", "decodeRequest", "request", "context", "data", "rest", "trigger", "functionDefinition", "meta", "name", "description", "inputSchema", "outputSchema", "Response", "response", "spaceKey", "rootUrl", "Error", "invariant", "queryService", "queueService", "functionsAiService", "spaceRootUrl", "LogLevel", "log", "shouldLog", "log", "runtimeConfig", "push", "functionLogProcessor", "config", "entry", "extras", "Object", "keys", "context", "error", "filter", "value", "undefined", "LogLevel", "DEBUG", "TRACE", "console", "debug", "VERBOSE", "INFO", "WARN", "ERROR"]
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Resource } from '@dxos/context';\nimport { EchoClient } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { type SpaceId } from '@dxos/keys';\nimport { type EdgeFunctionEnv } from '@dxos/protocols';\n\nimport { ServiceContainer } from './internal';\nimport { SpaceProxy } from './space-proxy';\n\ntype Services = {\n dataService: EdgeFunctionEnv.DataService;\n queueService: EdgeFunctionEnv.QueueService;\n functionsAiService: EdgeFunctionEnv.FunctionsAiService;\n};\n\n/**\n * API for functions to integrate with ECHO and HALO.\n * @deprecated\n */\nexport class FunctionsClient extends Resource {\n private readonly _serviceContainer;\n private readonly _echoClient;\n private readonly _executionContext: EdgeFunctionEnv.TraceContext = {};\n\n private readonly _spaces = new Map<SpaceId, SpaceProxy>();\n\n constructor(services: Services) {\n super();\n invariant(typeof services.dataService !== 'undefined', 'DataService is required');\n invariant(typeof services.queueService !== 'undefined', 'QueueService is required');\n this._serviceContainer = new ServiceContainer(\n this._executionContext,\n services.dataService,\n services.queueService,\n services.functionsAiService,\n );\n this._echoClient = new EchoClient({});\n }\n\n get echo(): EchoClient {\n return this._echoClient;\n }\n\n protected override async _open() {\n const { dataService, queryService } = await this._serviceContainer.createServices();\n this._echoClient.connectToService({ dataService, queryService });\n await this._echoClient.open();\n }\n\n protected override async _close() {\n for (const space of this._spaces.values()) {\n await space.close();\n }\n this._spaces.clear();\n\n await this._echoClient.close();\n }\n\n async getSpace(spaceId: SpaceId): Promise<SpaceProxy> {\n if (!this._spaces.has(spaceId)) {\n const space = new SpaceProxy(this._serviceContainer, this._echoClient, spaceId);\n this._spaces.set(spaceId, space);\n }\n const space = this._spaces.get(spaceId)!;\n await space.open(); // No-op if already open.\n return space;\n }\n}\n\nexport const createClientFromEnv = async (env: any): Promise<FunctionsClient> => {\n const client = new FunctionsClient({\n dataService: env.DATA_SERVICE,\n queueService: env.QUEUE_SERVICE,\n functionsAiService: env.FUNCTIONS_AI_SERVICE,\n });\n await client.open();\n return client;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { RequestOptions } from '@dxos/codec-protobuf';\nimport { Stream } from '@dxos/codec-protobuf/stream';\nimport { raise } from '@dxos/debug';\nimport { NotImplementedError, RuntimeServiceError } from '@dxos/errors';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type EdgeFunctionEnv } from '@dxos/protocols';\nimport type {\n BatchedDocumentUpdates,\n CreateDocumentRequest,\n CreateDocumentResponse,\n DataService as DataServiceProto,\n GetDocumentHeadsRequest,\n GetDocumentHeadsResponse,\n GetSpaceSyncStateRequest,\n ReIndexHeadsRequest,\n SpaceSyncState,\n UpdateRequest,\n UpdateSubscriptionRequest,\n} from '@dxos/protocols/proto/dxos/echo/service';\n\nimport { copyUint8Array } from './utils';\n\nexport class DataServiceImpl implements DataServiceProto {\n private dataSubscriptions = new Map<string, { spaceId: SpaceId; next: (msg: BatchedDocumentUpdates) => void }>();\n\n constructor(\n private _executionContext: EdgeFunctionEnv.TraceContext,\n private _dataService: EdgeFunctionEnv.DataService,\n ) {}\n\n subscribe({ subscriptionId, spaceId }: { subscriptionId: string; spaceId: string }): Stream<BatchedDocumentUpdates> {\n return new Stream(({ next }) => {\n invariant(SpaceId.isValid(spaceId));\n this.dataSubscriptions.set(subscriptionId, { spaceId, next });\n\n return () => {\n this.dataSubscriptions.delete(subscriptionId);\n };\n });\n }\n\n async updateSubscription({ subscriptionId, addIds }: UpdateSubscriptionRequest): Promise<void> {\n const sub =\n this.dataSubscriptions.get(subscriptionId) ??\n raise(\n new RuntimeServiceError({\n message: 'Subscription not found.',\n context: { subscriptionId },\n }),\n );\n\n if (addIds) {\n log.info('request documents', { count: addIds.length });\n // TODO(dmaretskyi): Batch.\n for (const documentId of addIds) {\n using document = await this._dataService.getDocument(this._executionContext, sub.spaceId, documentId);\n log.info('document loaded', { documentId, spaceId: sub.spaceId, found: !!document });\n if (!document) {\n log.warn('not found', { documentId });\n continue;\n }\n sub.next({\n updates: [\n {\n documentId,\n // Copy returned object to avoid hanging RPC stub\n // See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/\n mutation: copyUint8Array(document.data),\n },\n ],\n });\n }\n }\n }\n\n async createDocument({ spaceId, initialValue }: CreateDocumentRequest): Promise<CreateDocumentResponse> {\n invariant(SpaceId.isValid(spaceId));\n using response = await this._dataService.createDocument(this._executionContext, spaceId, initialValue);\n return { documentId: response.documentId };\n }\n\n async update({ updates, subscriptionId }: UpdateRequest): Promise<void> {\n const sub =\n this.dataSubscriptions.get(subscriptionId) ??\n raise(\n new RuntimeServiceError({\n message: 'Subscription not found.',\n context: { subscriptionId },\n }),\n );\n // TODO(dmaretskyi): Batch.\n try {\n for (const update of updates ?? []) {\n // Mutation-less updates (e.g. `requesting: true` transition signals from the worker) carry no\n // bytes to apply; this runtime only forwards real document writes.\n if (!update.mutation) {\n continue;\n }\n await this._dataService.changeDocument(this._executionContext, sub.spaceId, update.documentId, update.mutation);\n }\n } catch (error) {\n throw RuntimeServiceError.wrap({\n message: 'Failed to apply document updates.',\n context: { subscriptionId },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async flush(): Promise<void> {\n // No-op.\n }\n\n subscribeSpaceSyncState(_request: GetSpaceSyncStateRequest, _options?: RequestOptions): Stream<SpaceSyncState> {\n throw new NotImplementedError({\n message: 'subscribeSpaceSyncState is not implemented.',\n });\n }\n\n async getDocumentHeads({ documentIds: _documentIds }: GetDocumentHeadsRequest): Promise<GetDocumentHeadsResponse> {\n throw new NotImplementedError({\n message: 'getDocumentHeads is not implemented.',\n });\n }\n\n async reIndexHeads({ documentIds: _documentIds }: ReIndexHeadsRequest): Promise<void> {\n throw new NotImplementedError({\n message: 'reIndexHeads is not implemented.',\n });\n }\n\n async updateIndexes(): Promise<void> {\n log.verbose('updateIndexes called, but it is a no-op in EDGE env.');\n // No-op.\n }\n\n async waitUntilHeadsReplicated({ heads: _heads }: { heads: any }): Promise<void> {\n throw new NotImplementedError({\n message: 'waitUntilHeadsReplicated is not implemented.',\n });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const copyUint8Array = (value: Uint8Array): Uint8Array => new Uint8Array(value);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Stream } from '@dxos/codec-protobuf/stream';\nimport { NotImplementedError, RuntimeServiceError } from '@dxos/errors';\nimport { log } from '@dxos/log';\nimport { type EdgeFunctionEnv } from '@dxos/protocols';\nimport { type QueryRequest, type QueryResponse, type QueryService } from '@dxos/protocols/proto/dxos/echo/query';\n\nexport class QueryServiceImpl implements QueryService {\n private _queryCount = 0;\n\n constructor(\n private readonly _executionContext: EdgeFunctionEnv.TraceContext,\n private readonly _dataService: EdgeFunctionEnv.DataService,\n ) {}\n\n execQuery(request: QueryRequest): Stream<QueryResponse> {\n log.info('execQuery', { request });\n\n return Stream.fromPromise<QueryResponse>(\n (async () => {\n try {\n this._queryCount++;\n log.info('begin query', { request });\n using queryResponse = await this._dataService.execQuery(this._executionContext, request);\n log.info('query response', { resultCount: queryResponse.results?.length });\n return structuredClone(queryResponse);\n } catch (error) {\n log.error('query failed', { err: error });\n throw new RuntimeServiceError({\n message: `Query execution failed (queryCount=${this._queryCount})`,\n context: { queryCount: this._queryCount },\n cause: error,\n });\n }\n })(),\n );\n }\n\n async reindex() {\n throw new NotImplementedError({\n message: 'Reindex is not implemented.',\n });\n }\n\n async setConfig() {\n throw new NotImplementedError({\n message: 'SetConfig is not implemented.',\n });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { RuntimeServiceError } from '@dxos/errors';\nimport { type EdgeFunctionEnv, type FeedProtocol } from '@dxos/protocols';\n\nexport class QueueServiceImpl implements FeedProtocol.QueueService {\n constructor(\n protected _ctx: EdgeFunctionEnv.TraceContext,\n private readonly _queueService: EdgeFunctionEnv.QueueService,\n ) {}\n\n async queryQueue(request: FeedProtocol.QueryQueueRequest): Promise<FeedProtocol.QueryResult> {\n try {\n using result = await this._queueService.queryQueue(this._ctx, request);\n // Copy to avoid hanging RPC stub (Workers RPC lifecycle).\n return {\n objects: structuredClone(result.objects),\n nextCursor: result.nextCursor,\n prevCursor: result.prevCursor,\n };\n } catch (error) {\n const { query } = request;\n throw RuntimeServiceError.wrap({\n message: 'Queue query failed.',\n context: {\n subspaceTag: query?.queuesNamespace,\n spaceId: query?.spaceId,\n queueId: query?.queueIds?.[0],\n },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async insertIntoQueue(request: FeedProtocol.InsertIntoQueueRequest): Promise<void> {\n try {\n using _ = await this._queueService.insertIntoQueue(this._ctx, request);\n } catch (error) {\n const { subspaceTag, spaceId, queueId } = request;\n throw RuntimeServiceError.wrap({\n message: 'Queue append failed.',\n context: { subspaceTag, spaceId, queueId },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async deleteFromQueue(request: FeedProtocol.DeleteFromQueueRequest): Promise<void> {\n try {\n using _ = await this._queueService.deleteFromQueue(this._ctx, request);\n } catch (error) {\n const { subspaceTag, spaceId, queueId } = request;\n throw RuntimeServiceError.wrap({\n message: 'Queue delete failed.',\n context: { subspaceTag, spaceId, queueId },\n ifTypeDiffers: true,\n })(error);\n }\n }\n\n async syncQueue(_: FeedProtocol.SyncQueueRequest): Promise<void> {\n // No-op in Cloudflare runtime.\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type AnyEntity } from '@dxos/echo/internal';\nimport { type DXN, type SpaceId } from '@dxos/keys';\nimport { type EdgeFunctionEnv, type FeedProtocol } from '@dxos/protocols';\nimport { type QueryService as QueryServiceProto } from '@dxos/protocols/proto/dxos/echo/query';\nimport { type DataService as DataServiceProto } from '@dxos/protocols/proto/dxos/echo/service';\n\nimport { DataServiceImpl } from './data-service-impl';\nimport { QueryServiceImpl } from './query-service-impl';\nimport { QueueServiceImpl } from './queue-service-impl';\n\n/**\n * TODO: make this implement DataService and QueryService to unify API over edge and web backend\n */\nexport class ServiceContainer {\n constructor(\n private readonly _executionContext: EdgeFunctionEnv.TraceContext,\n private readonly _dataService: EdgeFunctionEnv.DataService,\n private readonly _queueService: EdgeFunctionEnv.QueueService,\n private readonly _functionsService: EdgeFunctionEnv.FunctionsAiService,\n ) {}\n\n async getSpaceMeta(spaceId: SpaceId): Promise<EdgeFunctionEnv.SpaceMeta | undefined> {\n using result = await this._dataService.getSpaceMeta(this._executionContext, spaceId);\n // Copy returned object to avoid hanging RPC stub\n // See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/\n return result\n ? {\n spaceKey: result.spaceKey,\n rootDocumentId: result.rootDocumentId,\n }\n : undefined;\n }\n\n async createServices(): Promise<{\n dataService: DataServiceProto;\n queryService: QueryServiceProto;\n queueService: FeedProtocol.QueueService;\n functionsAiService: EdgeFunctionEnv.FunctionsAiService;\n }> {\n const dataService = new DataServiceImpl(this._executionContext, this._dataService);\n const queryService = new QueryServiceImpl(this._executionContext, this._dataService);\n const queueService = new QueueServiceImpl(this._executionContext, this._queueService);\n\n return {\n dataService,\n queryService,\n queueService,\n functionsAiService: this._functionsService,\n };\n }\n\n async queryQueue(queue: DXN): Promise<FeedProtocol.QueryResult> {\n const parts = queue.asQueueDXN();\n if (!parts) {\n throw new Error('Invalid queue DXN');\n }\n\n const { subspaceTag, spaceId, queueId } = parts;\n const result = await this._queueService.queryQueue(this._executionContext, {\n query: {\n spaceId,\n queuesNamespace: subspaceTag,\n queueIds: [queueId],\n },\n });\n\n return {\n objects: structuredClone(result.objects),\n nextCursor: result.nextCursor ?? null,\n prevCursor: result.prevCursor ?? null,\n };\n }\n\n async insertIntoQueue(queue: DXN, objects: AnyEntity[]): Promise<void> {\n const parts = queue.asQueueDXN();\n if (!parts) {\n throw new Error('Invalid queue DXN');\n }\n\n const { subspaceTag, spaceId, queueId } = parts;\n await this._queueService.insertIntoQueue(this._executionContext, {\n subspaceTag,\n spaceId,\n queueId,\n objects: objects.map((obj) => JSON.stringify(obj)),\n });\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Resource } from '@dxos/context';\nimport { type Database } from '@dxos/echo';\nimport { type CoreDatabase, type EchoClient, type EchoDatabaseImpl } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey, type SpaceId } from '@dxos/keys';\n\nimport type { ServiceContainer } from './internal';\nimport { type QueuesAPI, QueuesAPIImpl } from './queues-api';\n\n/**\n * @deprecated\n */\nexport class SpaceProxy extends Resource {\n private _db?: EchoDatabaseImpl = undefined;\n private _queuesApi: QueuesAPIImpl;\n\n constructor(\n private readonly _serviceContainer: ServiceContainer,\n private readonly _echoClient: EchoClient,\n private readonly _id: SpaceId,\n ) {\n super();\n this._queuesApi = new QueuesAPIImpl(this._serviceContainer, this._id);\n }\n\n get id(): SpaceId {\n return this._id;\n }\n\n get db(): Database.Database {\n invariant(this._db);\n return this._db;\n }\n\n /**\n * @deprecated Use db API.\n */\n get crud(): CoreDatabase {\n invariant(this._db);\n return this._db.coreDatabase;\n }\n\n get queues(): QueuesAPI {\n return this._queuesApi;\n }\n\n protected override async _open() {\n const meta = await this._serviceContainer.getSpaceMeta(this._id);\n if (!meta) {\n throw new Error(`Space not found: ${this._id}`);\n }\n\n this._db = this._echoClient.constructDatabase({\n spaceId: this._id,\n spaceKey: PublicKey.from(meta.spaceKey),\n reactiveSchemaQuery: false,\n owningObject: this,\n });\n\n await this._db.coreDatabase.open(this._ctx, { rootUrl: meta.rootDocumentId });\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type AnyEntity } from '@dxos/echo/internal';\nimport type { DXN, SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport type { ServiceContainer } from './internal';\n\nexport interface QueuesQueryResult {\n objects: AnyEntity[];\n nextCursor: string | null;\n prevCursor: string | null;\n}\n\n// TODO(dmaretskyi): Temporary API to get the queues working.\n// TODO(dmaretskyi): To be replaced with integrating queues into echo.\n/**\n * @deprecated\n */\nexport interface QueuesAPI {\n queryQueue(queue: DXN, options?: {}): Promise<QueuesQueryResult>;\n insertIntoQueue(queue: DXN, objects: AnyEntity[]): Promise<void>;\n}\n\n/**\n * @deprecated\n */\nexport class QueuesAPIImpl implements QueuesAPI {\n constructor(\n private readonly _serviceContainer: ServiceContainer,\n private readonly _spaceId: SpaceId,\n ) {}\n\n async queryQueue(queue: DXN, options?: {}): Promise<QueuesQueryResult> {\n const result = await this._serviceContainer.queryQueue(queue);\n const objects = (result.objects ?? []).flatMap((encoded): AnyEntity[] => {\n try {\n return [JSON.parse(encoded) as AnyEntity];\n } catch (err) {\n log.verbose('queue object JSON parse failed; object ignored', { encoded, error: err });\n return [];\n }\n });\n return {\n objects,\n nextCursor: result.nextCursor ?? null,\n prevCursor: result.prevCursor ?? null,\n };\n }\n\n insertIntoQueue(queue: DXN, objects: AnyEntity[]): Promise<void> {\n // TODO(dmaretskyi): Ugly.\n return this._serviceContainer.insertIntoQueue(queue, JSON.parse(JSON.stringify(objects)));\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { JsonSchemaType } from '@dxos/echo/internal';\n\n/**\n * Is used for to route the request to the metadata handler instead of the main handler.\n */\nexport const FUNCTION_ROUTE_HEADER = 'X-DXOS-Function-Route';\n\nexport enum FunctionRouteValue {\n Meta = 'meta',\n}\n\nexport type FunctionMetadata = {\n /**\n * FQN.\n */\n key: string;\n /**\n * Human-readable name.\n */\n name?: string;\n\n /**\n * Description.\n */\n description?: string;\n\n /**\n * Input schema.\n */\n inputSchema?: JsonSchemaType;\n\n /**\n * Output schema.\n */\n outputSchema?: JsonSchemaType;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { JsonSchemaType } from '@dxos/echo/internal';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { EdgeResponse } from '@dxos/protocols';\nimport type { EdgeFunctionEnv, FunctionProtocol } from '@dxos/protocols';\n\nimport { ServiceContainer } from './internal';\nimport { FUNCTION_ROUTE_HEADER, type FunctionMetadata, FunctionRouteValue } from './types';\n\n/**\n * Wraps a user function in a Cloudflare-compatible handler.\n */\nexport const wrapHandlerForCloudflare = (func: FunctionProtocol.Func): ExportedHandlerFetchHandler<any> => {\n return async (request: Request, env: EdgeFunctionEnv.Env): Promise<Response> => {\n // TODO(dmaretskyi): Should theÓ scope name reflect the function name?\n // TODO(mykola): Wrap in withCleanAutomergeWasmState;\n // TODO(mykola): Wrap in withNewExecutionContext;\n // Meta route is used to get the input schema of the function by the functions service.\n if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {\n return handleFunctionMetaCall(func, request);\n }\n\n try {\n const spaceId = new URL(request.url).searchParams.get('spaceId');\n if (spaceId) {\n if (!SpaceId.isValid(spaceId)) {\n return new Response('Invalid spaceId', { status: 400 });\n }\n }\n\n const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE, env.FUNCTIONS_AI_SERVICE);\n const context = await createFunctionContext({\n serviceContainer,\n contextSpaceId: spaceId as SpaceId | undefined,\n });\n\n return EdgeResponse.success(await invokeFunction(func, context, request));\n } catch (error: any) {\n log.error('error invoking function', { error, stack: error.stack });\n return EdgeResponse.failure({\n message: error?.message ?? 'Internal error',\n error,\n });\n }\n };\n};\n\nconst invokeFunction = async (func: FunctionProtocol.Func, context: FunctionProtocol.Context, request: Request) => {\n // TODO(dmaretskyi): For some reason requests get wrapped like this.\n const { data } = await decodeRequest(request);\n\n return func.handler({\n context,\n data,\n });\n};\n\nconst decodeRequest = async (request: Request) => {\n const {\n data: { bodyText, ...rest },\n trigger,\n } = (await request.json()) as any;\n\n if (!bodyText) {\n return { data: rest, trigger };\n }\n\n // Webhook passed body as bodyText. Use it as function input if a well-formatted JSON\n // TODO: better trigger input mapping\n try {\n const data = JSON.parse(bodyText);\n return { data, trigger: { ...trigger, ...rest } };\n } catch (err) {\n log.catch(err);\n return { data: { bodyText, ...rest } };\n }\n};\n\nconst handleFunctionMetaCall = (functionDefinition: FunctionProtocol.Func, request: Request): Response => {\n const response: FunctionMetadata = {\n key: functionDefinition.meta.key,\n name: functionDefinition.meta.name,\n description: functionDefinition.meta.description,\n inputSchema: functionDefinition.meta.inputSchema as JsonSchemaType | undefined,\n outputSchema: functionDefinition.meta.outputSchema as JsonSchemaType | undefined,\n };\n\n return new Response(JSON.stringify(response), {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n};\n\nexport const createFunctionContext = async ({\n serviceContainer,\n contextSpaceId,\n}: {\n serviceContainer: ServiceContainer;\n contextSpaceId: SpaceId | undefined;\n}): Promise<FunctionProtocol.Context> => {\n const { dataService, queryService, queueService, functionsAiService } = await serviceContainer.createServices();\n\n let spaceKey: string | undefined;\n let rootUrl: string | undefined;\n if (contextSpaceId) {\n const meta = await serviceContainer.getSpaceMeta(contextSpaceId);\n if (!meta) {\n throw new Error(`Space not found: ${contextSpaceId}`);\n }\n spaceKey = meta.spaceKey;\n invariant(!meta.rootDocumentId.startsWith('automerge:'));\n rootUrl = `automerge:${meta.rootDocumentId}`;\n }\n\n return {\n services: {\n dataService,\n queryService,\n queueService,\n functionsAiService,\n },\n spaceId: contextSpaceId,\n spaceKey,\n spaceRootUrl: rootUrl,\n } as any; // TODO(dmaretskyi): Link and fix before merging\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/* eslint-disable no-console */\n\nimport { LogLevel, type LogProcessor, log, shouldLog } from '@dxos/log';\n\nexport const setupFunctionsLogger = () => {\n log.runtimeConfig.processors.length = 0;\n log.runtimeConfig.processors.push(functionLogProcessor);\n};\n\nconst functionLogProcessor: LogProcessor = (config, entry) => {\n if (!shouldLog(entry, config.filters)) {\n return;\n }\n\n const context = entry.computedContext;\n const error = entry.computedError;\n const extras = [Object.keys(context).length > 0 ? context : undefined, error].filter((value) => value !== undefined);\n\n switch (entry.level) {\n case LogLevel.DEBUG:\n case LogLevel.TRACE:\n console.debug(entry.message, ...extras);\n break;\n case LogLevel.VERBOSE:\n console.log(entry.message, ...extras);\n break;\n case LogLevel.INFO:\n console.info(entry.message, ...extras);\n break;\n case LogLevel.WARN:\n console.warn(entry.message, ...extras);\n break;\n case LogLevel.ERROR:\n console.error(entry.message, ...extras);\n break;\n default:\n console.log(entry.message, ...extras);\n break;\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Resource", "EchoClient", "invariant", "raise", "NotImplementedError", "invariant", "SpaceId", "log", "copyUint8Array", "copyUint8Array", "value", "Uint8Array", "dataSubscriptions", "_executionContext", "_dataService", "subscribe", "next", "invariant", "SpaceId", "isValid", "spaceId", "subscriptionId", "message", "context", "log", "count", "info", "documentId", "found", "document", "sub", "updates", "response", "createDocument", "initialValue", "get", "RuntimeServiceError", "ifTypeDiffers", "error", "subscribeSpaceSyncState", "NotImplementedError", "NotImplementedError", "log", "RuntimeServiceError", "QueryServiceImpl", "_queryCount", "_executionContext", "_dataService", "execQuery", "info", "request", "fromPromise", "__dxlog_file", "Stream", "queryResponse", "_ts_add_disposable_resource", "resultCount", "structuredClone", "error", "err", "message", "context", "queryCount", "cause", "RuntimeServiceError", "QueueServiceImpl", "_ctx", "_queueService", "queryQueue", "request", "result", "objects", "structuredClone", "nextCursor", "prevCursor", "error", "query", "wrap", "message", "context", "subspaceTag", "queuesNamespace", "spaceId", "queueId", "queueIds", "ifTypeDiffers", "insertIntoQueue", "_", "deleteFromQueue", "syncQueue", "ServiceContainer", "_executionContext", "_dataService", "_queueService", "_functionsService", "getSpaceMeta", "spaceId", "result", "spaceKey", "rootDocumentId", "undefined", "createServices", "dataService", "DataServiceImpl", "queryService", "QueryServiceImpl", "queueService", "QueueServiceImpl", "functionsAiService", "queryQueue", "queue", "parts", "asQueueDXN", "Error", "subspaceTag", "queueId", "query", "queuesNamespace", "queueIds", "objects", "structuredClone", "nextCursor", "prevCursor", "insertIntoQueue", "map", "obj", "JSON", "stringify", "Resource", "invariant", "PublicKey", "log", "__dxlog_file", "_spaceId", "queryQueue", "queue", "objects", "result", "err", "encoded", "error", "nextCursor", "prevCursor", "insertIntoQueue", "_serviceContainer", "__dxlog_file", "_db", "_queuesApi", "QueuesAPIImpl", "_serviceContainer", "id", "db", "invariant", "queues", "_open", "meta", "Error", "_echoClient", "constructDatabase", "spaceKey", "PublicKey", "reactiveSchemaQuery", "owningObject", "coreDatabase", "__dxlog_file", "_echoClient", "Resource", "_executionContext", "_spaces", "invariant", "services", "_serviceContainer", "ServiceContainer", "dataService", "queueService", "functionsAiService", "EchoClient", "echo", "_open", "queryService", "_close", "space", "clear", "getSpace", "spaceId", "set", "DATA_SERVICE", "env", "FUNCTION_ROUTE_HEADER", "FunctionRouteValue", "invariant", "SpaceId", "log", "EdgeResponse", "__dxlog_file", "SpaceId", "isValid", "spaceId", "status", "serviceContainer", "contextSpaceId", "success", "log", "error", "stack", "EdgeResponse", "message", "decodeRequest", "request", "context", "data", "rest", "trigger", "functionDefinition", "meta", "name", "description", "inputSchema", "outputSchema", "Response", "response", "spaceKey", "rootUrl", "Error", "invariant", "queryService", "queueService", "functionsAiService", "spaceRootUrl", "LogLevel", "log", "shouldLog", "log", "runtimeConfig", "push", "functionLogProcessor", "config", "entry", "extras", "Object", "keys", "context", "error", "filter", "value", "undefined", "LogLevel", "DEBUG", "TRACE", "console", "debug", "VERBOSE", "INFO", "WARN", "ERROR"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/internal/utils.ts":{"bytes":590,"imports":[],"format":"esm"},"src/internal/data-service-impl.ts":{"bytes":19256,"imports":[{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/internal/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/internal/query-service-impl.ts":{"bytes":9324,"imports":[{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/internal/queue-service-impl.ts":{"bytes":11248,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}],"format":"esm"},"src/internal/service-container.ts":{"bytes":12950,"imports":[{"path":"src/internal/data-service-impl.ts","kind":"import-statement","original":"./data-service-impl"},{"path":"src/internal/query-service-impl.ts","kind":"import-statement","original":"./query-service-impl"},{"path":"src/internal/queue-service-impl.ts","kind":"import-statement","original":"./queue-service-impl"}],"format":"esm"},"src/internal/index.ts":{"bytes":401,"imports":[{"path":"src/internal/service-container.ts","kind":"import-statement","original":"./service-container"}],"format":"esm"},"src/queues-api.ts":{"bytes":4985,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/space-proxy.ts":{"bytes":6098,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/queues-api.ts","kind":"import-statement","original":"./queues-api"}],"format":"esm"},"src/functions-client.ts":{"bytes":9115,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/internal/index.ts","kind":"import-statement","original":"./internal"},{"path":"src/space-proxy.ts","kind":"import-statement","original":"./space-proxy"}],"format":"esm"},"src/types.ts":{"bytes":1603,"imports":[],"format":"esm"},"src/wrap-handler-for-cloudflare.ts":{"bytes":15140,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/internal/index.ts","kind":"import-statement","original":"./internal"},{"path":"src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/logger.ts":{"bytes":4864,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":786,"imports":[{"path":"src/functions-client.ts","kind":"import-statement","original":"./functions-client"},{"path":"src/internal/index.ts","kind":"import-statement","original":"./internal"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/wrap-handler-for-cloudflare.ts","kind":"import-statement","original":"./wrap-handler-for-cloudflare"},{"path":"src/logger.ts","kind":"import-statement","original":"./logger"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":39599},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["FUNCTION_ROUTE_HEADER","FunctionRouteValue","FunctionsClient","ServiceContainer","createClientFromEnv","createFunctionContext","setupFunctionsLogger","wrapHandlerForCloudflare"],"entryPoint":"src/index.ts","inputs":{"src/functions-client.ts":{"bytesInOutput":2107},"src/internal/data-service-impl.ts":{"bytesInOutput":6995},"src/internal/utils.ts":{"bytesInOutput":55},"src/internal/query-service-impl.ts":{"bytesInOutput":4388},"src/internal/queue-service-impl.ts":{"bytesInOutput":4790},"src/internal/service-container.ts":{"bytesInOutput":4452},"src/space-proxy.ts":{"bytesInOutput":1501},"src/queues-api.ts":{"bytesInOutput":1078},"src/index.ts":{"bytesInOutput":0},"src/types.ts":{"bytesInOutput":205},"src/wrap-handler-for-cloudflare.ts":{"bytesInOutput":3427},"src/logger.ts":{"bytesInOutput":1064}},"bytes":30709}}}
1
+ {"inputs":{"src/internal/utils.ts":{"bytes":590,"imports":[],"format":"esm"},"src/internal/data-service-impl.ts":{"bytes":20010,"imports":[{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/internal/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/internal/query-service-impl.ts":{"bytes":9332,"imports":[{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/internal/queue-service-impl.ts":{"bytes":11248,"imports":[{"path":"@dxos/errors","kind":"import-statement","external":true}],"format":"esm"},"src/internal/service-container.ts":{"bytes":12958,"imports":[{"path":"src/internal/data-service-impl.ts","kind":"import-statement","original":"./data-service-impl"},{"path":"src/internal/query-service-impl.ts","kind":"import-statement","original":"./query-service-impl"},{"path":"src/internal/queue-service-impl.ts","kind":"import-statement","original":"./queue-service-impl"}],"format":"esm"},"src/internal/index.ts":{"bytes":401,"imports":[{"path":"src/internal/service-container.ts","kind":"import-statement","original":"./service-container"}],"format":"esm"},"src/queues-api.ts":{"bytes":4993,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/space-proxy.ts":{"bytes":6106,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"src/queues-api.ts","kind":"import-statement","original":"./queues-api"}],"format":"esm"},"src/functions-client.ts":{"bytes":8574,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"src/internal/index.ts","kind":"import-statement","original":"./internal"},{"path":"src/space-proxy.ts","kind":"import-statement","original":"./space-proxy"}],"format":"esm"},"src/types.ts":{"bytes":1603,"imports":[],"format":"esm"},"src/wrap-handler-for-cloudflare.ts":{"bytes":15148,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/internal/index.ts","kind":"import-statement","original":"./internal"},{"path":"src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/logger.ts":{"bytes":4872,"imports":[{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":786,"imports":[{"path":"src/functions-client.ts","kind":"import-statement","original":"./functions-client"},{"path":"src/internal/index.ts","kind":"import-statement","original":"./internal"},{"path":"src/types.ts","kind":"import-statement","original":"./types"},{"path":"src/wrap-handler-for-cloudflare.ts","kind":"import-statement","original":"./wrap-handler-for-cloudflare"},{"path":"src/logger.ts","kind":"import-statement","original":"./logger"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":39621},"dist/lib/browser/index.mjs":{"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo-db","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/errors","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["FUNCTION_ROUTE_HEADER","FunctionRouteValue","FunctionsClient","ServiceContainer","createClientFromEnv","createFunctionContext","setupFunctionsLogger","wrapHandlerForCloudflare"],"entryPoint":"src/index.ts","inputs":{"src/functions-client.ts":{"bytesInOutput":2115},"src/internal/data-service-impl.ts":{"bytesInOutput":7076},"src/internal/utils.ts":{"bytesInOutput":55},"src/internal/query-service-impl.ts":{"bytesInOutput":4396},"src/internal/queue-service-impl.ts":{"bytesInOutput":4790},"src/internal/service-container.ts":{"bytesInOutput":4452},"src/space-proxy.ts":{"bytesInOutput":1509},"src/queues-api.ts":{"bytesInOutput":1086},"src/index.ts":{"bytesInOutput":0},"src/types.ts":{"bytesInOutput":205},"src/wrap-handler-for-cloudflare.ts":{"bytesInOutput":3435},"src/logger.ts":{"bytesInOutput":1064}},"bytes":30830}}}
@@ -17,7 +17,7 @@ import { log } from "@dxos/log";
17
17
  var copyUint8Array = (value) => new Uint8Array(value);
18
18
 
19
19
  // src/internal/data-service-impl.ts
20
- var __dxlog_file = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
20
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
21
21
  function _ts_add_disposable_resource(env, value, async) {
22
22
  if (value !== null && value !== void 0) {
23
23
  if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
@@ -180,6 +180,9 @@ var DataServiceImpl = class {
180
180
  }));
181
181
  try {
182
182
  for (const update of updates ?? []) {
183
+ if (!update.mutation) {
184
+ continue;
185
+ }
183
186
  await this._dataService.changeDocument(this._executionContext, sub.spaceId, update.documentId, update.mutation);
184
187
  }
185
188
  } catch (error) {
@@ -210,7 +213,7 @@ var DataServiceImpl = class {
210
213
  });
211
214
  }
212
215
  async updateIndexes() {
213
- log.error("updateIndexes is not available in EDGE env.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 206, S: this });
216
+ log.verbose("updateIndexes called, but it is a no-op in EDGE env.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 211, S: this });
214
217
  }
215
218
  async waitUntilHeadsReplicated({ heads: _heads }) {
216
219
  throw new NotImplementedError({
@@ -223,7 +226,7 @@ var DataServiceImpl = class {
223
226
  import { Stream as Stream2 } from "@dxos/codec-protobuf/stream";
224
227
  import { NotImplementedError as NotImplementedError2, RuntimeServiceError as RuntimeServiceError2 } from "@dxos/errors";
225
228
  import { log as log2 } from "@dxos/log";
226
- var __dxlog_file2 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
229
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
227
230
  function _ts_add_disposable_resource2(env, value, async) {
228
231
  if (value !== null && value !== void 0) {
229
232
  if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
@@ -667,7 +670,7 @@ import { PublicKey } from "@dxos/keys";
667
670
 
668
671
  // src/queues-api.ts
669
672
  import { log as log3 } from "@dxos/log";
670
- var __dxlog_file3 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/queues-api.ts";
673
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/queues-api.ts";
671
674
  var QueuesAPIImpl = class {
672
675
  _serviceContainer;
673
676
  _spaceId;
@@ -702,7 +705,7 @@ var QueuesAPIImpl = class {
702
705
  };
703
706
 
704
707
  // src/space-proxy.ts
705
- var __dxlog_file4 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/space-proxy.ts";
708
+ var __dxlog_file4 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/space-proxy.ts";
706
709
  var SpaceProxy = class extends Resource {
707
710
  _serviceContainer;
708
711
  _echoClient;
@@ -748,7 +751,7 @@ var SpaceProxy = class extends Resource {
748
751
  };
749
752
 
750
753
  // src/functions-client.ts
751
- var __dxlog_file5 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/functions-client.ts";
754
+ var __dxlog_file5 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/functions-client.ts";
752
755
  var FunctionsClient = class extends Resource2 {
753
756
  _serviceContainer;
754
757
  _echoClient;
@@ -811,7 +814,7 @@ import { invariant as invariant4 } from "@dxos/invariant";
811
814
  import { SpaceId as SpaceId2 } from "@dxos/keys";
812
815
  import { log as log4 } from "@dxos/log";
813
816
  import { EdgeResponse } from "@dxos/protocols";
814
- var __dxlog_file6 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
817
+ var __dxlog_file6 = "/__w/dxos/dxos/packages/core/compute/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
815
818
  var wrapHandlerForCloudflare = (func) => {
816
819
  return async (request, env) => {
817
820
  if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {