@dxos/functions-runtime-cloudflare 0.8.4-main.3c1ae3b → 0.8.4-main.40e3dcdf1b
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/dist/lib/browser/index.mjs +523 -233
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +523 -233
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/functions-client.d.ts +1 -0
- package/dist/types/src/functions-client.d.ts.map +1 -1
- package/dist/types/src/internal/data-service-impl.d.ts +8 -7
- package/dist/types/src/internal/data-service-impl.d.ts.map +1 -1
- package/dist/types/src/internal/query-service-impl.d.ts +3 -9
- package/dist/types/src/internal/query-service-impl.d.ts.map +1 -1
- package/dist/types/src/internal/queue-service-impl.d.ts +8 -9
- package/dist/types/src/internal/queue-service-impl.d.ts.map +1 -1
- package/dist/types/src/internal/service-container.d.ts +8 -8
- package/dist/types/src/internal/service-container.d.ts.map +1 -1
- package/dist/types/src/internal/utils.d.ts +2 -0
- package/dist/types/src/internal/utils.d.ts.map +1 -0
- package/dist/types/src/logger.d.ts.map +1 -1
- package/dist/types/src/queues-api.d.ts +6 -6
- package/dist/types/src/queues-api.d.ts.map +1 -1
- package/dist/types/src/space-proxy.d.ts +3 -2
- package/dist/types/src/space-proxy.d.ts.map +1 -1
- package/dist/types/src/wrap-handler-for-cloudflare.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -16
- package/src/functions-client.ts +9 -2
- package/src/internal/data-service-impl.ts +28 -11
- package/src/internal/query-service-impl.ts +8 -58
- package/src/internal/queue-service-impl.ts +37 -22
- package/src/internal/service-container.ts +46 -11
- package/src/internal/utils.ts +5 -0
- package/src/logger.ts +2 -0
- package/src/queues-api.ts +6 -6
- package/src/space-proxy.ts +4 -3
- package/src/wrap-handler-for-cloudflare.ts +3 -3
- package/dist/types/src/internal/adapter.d.ts +0 -12
- package/dist/types/src/internal/adapter.d.ts.map +0 -1
- package/src/internal/adapter.ts +0 -48
|
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
3
3
|
// src/functions-client.ts
|
|
4
4
|
import { Resource as Resource2 } from "@dxos/context";
|
|
5
5
|
import { EchoClient } from "@dxos/echo-db";
|
|
6
|
-
import { invariant as
|
|
6
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
7
7
|
|
|
8
8
|
// src/internal/data-service-impl.ts
|
|
9
9
|
import { Stream } from "@dxos/codec-protobuf/stream";
|
|
@@ -12,6 +12,76 @@ import { NotImplementedError, RuntimeServiceError } from "@dxos/errors";
|
|
|
12
12
|
import { invariant } from "@dxos/invariant";
|
|
13
13
|
import { SpaceId } from "@dxos/keys";
|
|
14
14
|
import { log } from "@dxos/log";
|
|
15
|
+
|
|
16
|
+
// src/internal/utils.ts
|
|
17
|
+
var copyUint8Array = (value) => new Uint8Array(value);
|
|
18
|
+
|
|
19
|
+
// src/internal/data-service-impl.ts
|
|
20
|
+
function _ts_add_disposable_resource(env, value, async) {
|
|
21
|
+
if (value !== null && value !== void 0) {
|
|
22
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
23
|
+
var dispose, inner;
|
|
24
|
+
if (async) {
|
|
25
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
26
|
+
dispose = value[Symbol.asyncDispose];
|
|
27
|
+
}
|
|
28
|
+
if (dispose === void 0) {
|
|
29
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
30
|
+
dispose = value[Symbol.dispose];
|
|
31
|
+
if (async) inner = dispose;
|
|
32
|
+
}
|
|
33
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
34
|
+
if (inner) dispose = function() {
|
|
35
|
+
try {
|
|
36
|
+
inner.call(this);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return Promise.reject(e);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
env.stack.push({
|
|
42
|
+
value,
|
|
43
|
+
dispose,
|
|
44
|
+
async
|
|
45
|
+
});
|
|
46
|
+
} else if (async) {
|
|
47
|
+
env.stack.push({
|
|
48
|
+
async: true
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
function _ts_dispose_resources(env) {
|
|
54
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
55
|
+
var e = new Error(message);
|
|
56
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
57
|
+
};
|
|
58
|
+
return (_ts_dispose_resources = function _ts_dispose_resources5(env2) {
|
|
59
|
+
function fail(e) {
|
|
60
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
61
|
+
env2.hasError = true;
|
|
62
|
+
}
|
|
63
|
+
var r, s = 0;
|
|
64
|
+
function next() {
|
|
65
|
+
while (r = env2.stack.pop()) {
|
|
66
|
+
try {
|
|
67
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
68
|
+
if (r.dispose) {
|
|
69
|
+
var result = r.dispose.call(r.value);
|
|
70
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
71
|
+
fail(e);
|
|
72
|
+
return next();
|
|
73
|
+
});
|
|
74
|
+
} else s |= 1;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
fail(e);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
80
|
+
if (env2.hasError) throw env2.error;
|
|
81
|
+
}
|
|
82
|
+
return next();
|
|
83
|
+
})(env);
|
|
84
|
+
}
|
|
15
85
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
|
|
16
86
|
var DataServiceImpl = class {
|
|
17
87
|
_executionContext;
|
|
@@ -25,7 +95,7 @@ var DataServiceImpl = class {
|
|
|
25
95
|
return new Stream(({ next }) => {
|
|
26
96
|
invariant(SpaceId.isValid(spaceId), void 0, {
|
|
27
97
|
F: __dxlog_file,
|
|
28
|
-
L:
|
|
98
|
+
L: 39,
|
|
29
99
|
S: this,
|
|
30
100
|
A: [
|
|
31
101
|
"SpaceId.isValid(spaceId)",
|
|
@@ -41,7 +111,7 @@ var DataServiceImpl = class {
|
|
|
41
111
|
};
|
|
42
112
|
});
|
|
43
113
|
}
|
|
44
|
-
async updateSubscription({ subscriptionId, addIds
|
|
114
|
+
async updateSubscription({ subscriptionId, addIds }) {
|
|
45
115
|
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new RuntimeServiceError({
|
|
46
116
|
message: "Subscription not found.",
|
|
47
117
|
context: {
|
|
@@ -53,44 +123,79 @@ var DataServiceImpl = class {
|
|
|
53
123
|
count: addIds.length
|
|
54
124
|
}, {
|
|
55
125
|
F: __dxlog_file,
|
|
56
|
-
L:
|
|
126
|
+
L: 59,
|
|
57
127
|
S: this,
|
|
58
128
|
C: (f, a) => f(...a)
|
|
59
129
|
});
|
|
60
130
|
for (const documentId of addIds) {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (!document) {
|
|
73
|
-
log.warn("not found", {
|
|
74
|
-
documentId
|
|
131
|
+
const env = {
|
|
132
|
+
stack: [],
|
|
133
|
+
error: void 0,
|
|
134
|
+
hasError: false
|
|
135
|
+
};
|
|
136
|
+
try {
|
|
137
|
+
const document = _ts_add_disposable_resource(env, await this._dataService.getDocument(this._executionContext, sub.spaceId, documentId), false);
|
|
138
|
+
log.info("document loaded", {
|
|
139
|
+
documentId,
|
|
140
|
+
spaceId: sub.spaceId,
|
|
141
|
+
found: !!document
|
|
75
142
|
}, {
|
|
76
143
|
F: __dxlog_file,
|
|
77
|
-
L:
|
|
144
|
+
L: 63,
|
|
78
145
|
S: this,
|
|
79
146
|
C: (f, a) => f(...a)
|
|
80
147
|
});
|
|
81
|
-
|
|
148
|
+
if (!document) {
|
|
149
|
+
log.warn("not found", {
|
|
150
|
+
documentId
|
|
151
|
+
}, {
|
|
152
|
+
F: __dxlog_file,
|
|
153
|
+
L: 65,
|
|
154
|
+
S: this,
|
|
155
|
+
C: (f, a) => f(...a)
|
|
156
|
+
});
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
sub.next({
|
|
160
|
+
updates: [
|
|
161
|
+
{
|
|
162
|
+
documentId,
|
|
163
|
+
// Copy returned object to avoid hanging RPC stub
|
|
164
|
+
// See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/
|
|
165
|
+
mutation: copyUint8Array(document.data)
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
});
|
|
169
|
+
} catch (e) {
|
|
170
|
+
env.error = e;
|
|
171
|
+
env.hasError = true;
|
|
172
|
+
} finally {
|
|
173
|
+
_ts_dispose_resources(env);
|
|
82
174
|
}
|
|
83
|
-
sub.next({
|
|
84
|
-
updates: [
|
|
85
|
-
{
|
|
86
|
-
documentId,
|
|
87
|
-
mutation: document.data
|
|
88
|
-
}
|
|
89
|
-
]
|
|
90
|
-
});
|
|
91
175
|
}
|
|
92
176
|
}
|
|
93
177
|
}
|
|
178
|
+
async createDocument({ spaceId, initialValue }) {
|
|
179
|
+
const env = {
|
|
180
|
+
stack: [],
|
|
181
|
+
error: void 0,
|
|
182
|
+
hasError: false
|
|
183
|
+
};
|
|
184
|
+
try {
|
|
185
|
+
const response = _ts_add_disposable_resource(env, await this._dataService.createDocument(this._executionContext, {
|
|
186
|
+
spaceId,
|
|
187
|
+
initialValue
|
|
188
|
+
}), false);
|
|
189
|
+
return {
|
|
190
|
+
documentId: response.documentId
|
|
191
|
+
};
|
|
192
|
+
} catch (e) {
|
|
193
|
+
env.error = e;
|
|
194
|
+
env.hasError = true;
|
|
195
|
+
} finally {
|
|
196
|
+
_ts_dispose_resources(env);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
94
199
|
async update({ updates, subscriptionId }) {
|
|
95
200
|
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new RuntimeServiceError({
|
|
96
201
|
message: "Subscription not found.",
|
|
@@ -114,27 +219,30 @@ var DataServiceImpl = class {
|
|
|
114
219
|
}
|
|
115
220
|
async flush() {
|
|
116
221
|
}
|
|
117
|
-
subscribeSpaceSyncState(
|
|
222
|
+
subscribeSpaceSyncState(_request, _options) {
|
|
118
223
|
throw new NotImplementedError({
|
|
119
224
|
message: "subscribeSpaceSyncState is not implemented."
|
|
120
225
|
});
|
|
121
226
|
}
|
|
122
|
-
async getDocumentHeads({ documentIds }) {
|
|
227
|
+
async getDocumentHeads({ documentIds: _documentIds }) {
|
|
123
228
|
throw new NotImplementedError({
|
|
124
229
|
message: "getDocumentHeads is not implemented."
|
|
125
230
|
});
|
|
126
231
|
}
|
|
127
|
-
async reIndexHeads({ documentIds }) {
|
|
232
|
+
async reIndexHeads({ documentIds: _documentIds }) {
|
|
128
233
|
throw new NotImplementedError({
|
|
129
234
|
message: "reIndexHeads is not implemented."
|
|
130
235
|
});
|
|
131
236
|
}
|
|
132
237
|
async updateIndexes() {
|
|
133
|
-
|
|
134
|
-
|
|
238
|
+
log.error("updateIndexes is not available in EDGE env.", void 0, {
|
|
239
|
+
F: __dxlog_file,
|
|
240
|
+
L: 133,
|
|
241
|
+
S: this,
|
|
242
|
+
C: (f, a) => f(...a)
|
|
135
243
|
});
|
|
136
244
|
}
|
|
137
|
-
async waitUntilHeadsReplicated({ heads }) {
|
|
245
|
+
async waitUntilHeadsReplicated({ heads: _heads }) {
|
|
138
246
|
throw new NotImplementedError({
|
|
139
247
|
message: "waitUntilHeadsReplicated is not implemented."
|
|
140
248
|
});
|
|
@@ -142,84 +250,75 @@ var DataServiceImpl = class {
|
|
|
142
250
|
};
|
|
143
251
|
|
|
144
252
|
// src/internal/query-service-impl.ts
|
|
145
|
-
import * as Schema from "effect/Schema";
|
|
146
253
|
import { Stream as Stream2 } from "@dxos/codec-protobuf/stream";
|
|
147
|
-
import { QueryAST } from "@dxos/echo-protocol";
|
|
148
254
|
import { NotImplementedError as NotImplementedError2, RuntimeServiceError as RuntimeServiceError2 } from "@dxos/errors";
|
|
149
|
-
import { invariant as invariant3 } from "@dxos/invariant";
|
|
150
|
-
import { PublicKey } from "@dxos/keys";
|
|
151
|
-
import { SpaceId as SpaceId3 } from "@dxos/keys";
|
|
152
255
|
import { log as log2 } from "@dxos/log";
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const { filter, options } = isSimpleSelectionQuery(query) ?? failUndefined();
|
|
161
|
-
invariant2(options?.spaceIds?.length === 1, "Only one space is supported", {
|
|
162
|
-
F: __dxlog_file2,
|
|
163
|
-
L: 13,
|
|
164
|
-
S: void 0,
|
|
165
|
-
A: [
|
|
166
|
-
"options?.spaceIds?.length === 1",
|
|
167
|
-
"'Only one space is supported'"
|
|
168
|
-
]
|
|
169
|
-
});
|
|
170
|
-
invariant2(filter.type === "object", "Only object filters are supported", {
|
|
171
|
-
F: __dxlog_file2,
|
|
172
|
-
L: 14,
|
|
173
|
-
S: void 0,
|
|
174
|
-
A: [
|
|
175
|
-
"filter.type === 'object'",
|
|
176
|
-
"'Only object filters are supported'"
|
|
177
|
-
]
|
|
178
|
-
});
|
|
179
|
-
const spaceId = options.spaceIds[0];
|
|
180
|
-
invariant2(SpaceId2.isValid(spaceId), void 0, {
|
|
181
|
-
F: __dxlog_file2,
|
|
182
|
-
L: 17,
|
|
183
|
-
S: void 0,
|
|
184
|
-
A: [
|
|
185
|
-
"SpaceId.isValid(spaceId)",
|
|
186
|
-
""
|
|
187
|
-
]
|
|
188
|
-
});
|
|
189
|
-
return {
|
|
190
|
-
spaceId,
|
|
191
|
-
type: filter.typename ?? void 0,
|
|
192
|
-
objectIds: [
|
|
193
|
-
...filter.id ?? []
|
|
194
|
-
]
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
var isSimpleSelectionQuery = (query) => {
|
|
198
|
-
switch (query.type) {
|
|
199
|
-
case "options": {
|
|
200
|
-
const maybeFilter = isSimpleSelectionQuery(query.query);
|
|
201
|
-
if (!maybeFilter) {
|
|
202
|
-
return null;
|
|
203
|
-
}
|
|
204
|
-
return {
|
|
205
|
-
filter: maybeFilter.filter,
|
|
206
|
-
options: query.options
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
case "select": {
|
|
210
|
-
return {
|
|
211
|
-
filter: query.filter,
|
|
212
|
-
options: void 0
|
|
213
|
-
};
|
|
256
|
+
function _ts_add_disposable_resource2(env, value, async) {
|
|
257
|
+
if (value !== null && value !== void 0) {
|
|
258
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
259
|
+
var dispose, inner;
|
|
260
|
+
if (async) {
|
|
261
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
262
|
+
dispose = value[Symbol.asyncDispose];
|
|
214
263
|
}
|
|
215
|
-
|
|
216
|
-
|
|
264
|
+
if (dispose === void 0) {
|
|
265
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
266
|
+
dispose = value[Symbol.dispose];
|
|
267
|
+
if (async) inner = dispose;
|
|
217
268
|
}
|
|
269
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
270
|
+
if (inner) dispose = function() {
|
|
271
|
+
try {
|
|
272
|
+
inner.call(this);
|
|
273
|
+
} catch (e) {
|
|
274
|
+
return Promise.reject(e);
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
env.stack.push({
|
|
278
|
+
value,
|
|
279
|
+
dispose,
|
|
280
|
+
async
|
|
281
|
+
});
|
|
282
|
+
} else if (async) {
|
|
283
|
+
env.stack.push({
|
|
284
|
+
async: true
|
|
285
|
+
});
|
|
218
286
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
var
|
|
287
|
+
return value;
|
|
288
|
+
}
|
|
289
|
+
function _ts_dispose_resources2(env) {
|
|
290
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
291
|
+
var e = new Error(message);
|
|
292
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
293
|
+
};
|
|
294
|
+
return (_ts_dispose_resources2 = function _ts_dispose_resources5(env2) {
|
|
295
|
+
function fail(e) {
|
|
296
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
297
|
+
env2.hasError = true;
|
|
298
|
+
}
|
|
299
|
+
var r, s = 0;
|
|
300
|
+
function next() {
|
|
301
|
+
while (r = env2.stack.pop()) {
|
|
302
|
+
try {
|
|
303
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
304
|
+
if (r.dispose) {
|
|
305
|
+
var result = r.dispose.call(r.value);
|
|
306
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
307
|
+
fail(e);
|
|
308
|
+
return next();
|
|
309
|
+
});
|
|
310
|
+
} else s |= 1;
|
|
311
|
+
} catch (e) {
|
|
312
|
+
fail(e);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
316
|
+
if (env2.hasError) throw env2.error;
|
|
317
|
+
}
|
|
318
|
+
return next();
|
|
319
|
+
})(env);
|
|
320
|
+
}
|
|
321
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
|
|
223
322
|
var QueryServiceImpl = class {
|
|
224
323
|
_executionContext;
|
|
225
324
|
_dataService;
|
|
@@ -232,69 +331,56 @@ var QueryServiceImpl = class {
|
|
|
232
331
|
log2.info("execQuery", {
|
|
233
332
|
request
|
|
234
333
|
}, {
|
|
235
|
-
F:
|
|
236
|
-
L:
|
|
334
|
+
F: __dxlog_file2,
|
|
335
|
+
L: 20,
|
|
237
336
|
S: this,
|
|
238
337
|
C: (f, a) => f(...a)
|
|
239
338
|
});
|
|
240
|
-
const query = QueryAST.Query.pipe(Schema.decodeUnknownSync)(JSON.parse(request.query));
|
|
241
|
-
const requestedSpaceIds = getTargetSpacesForQuery(query);
|
|
242
|
-
invariant3(requestedSpaceIds.length === 1, "Only one space is supported", {
|
|
243
|
-
F: __dxlog_file3,
|
|
244
|
-
L: 36,
|
|
245
|
-
S: this,
|
|
246
|
-
A: [
|
|
247
|
-
"requestedSpaceIds.length === 1",
|
|
248
|
-
"'Only one space is supported'"
|
|
249
|
-
]
|
|
250
|
-
});
|
|
251
|
-
const spaceId = requestedSpaceIds[0];
|
|
252
339
|
return Stream2.fromPromise((async () => {
|
|
253
340
|
try {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
F: __dxlog_file3,
|
|
259
|
-
L: 43,
|
|
260
|
-
S: this,
|
|
261
|
-
C: (f, a) => f(...a)
|
|
262
|
-
});
|
|
263
|
-
const queryResponse = await this._dataService.queryDocuments(this._executionContext, queryToDataServiceRequest(query));
|
|
264
|
-
log2.info("query response", {
|
|
265
|
-
spaceId,
|
|
266
|
-
filter: request.filter,
|
|
267
|
-
resultCount: queryResponse.results.length
|
|
268
|
-
}, {
|
|
269
|
-
F: __dxlog_file3,
|
|
270
|
-
L: 48,
|
|
271
|
-
S: this,
|
|
272
|
-
C: (f, a) => f(...a)
|
|
273
|
-
});
|
|
274
|
-
return {
|
|
275
|
-
results: queryResponse.results.map((object) => ({
|
|
276
|
-
id: object.objectId,
|
|
277
|
-
spaceId,
|
|
278
|
-
spaceKey: PublicKey.ZERO,
|
|
279
|
-
documentId: object.document.documentId,
|
|
280
|
-
rank: 0,
|
|
281
|
-
documentAutomerge: object.document.data
|
|
282
|
-
}))
|
|
341
|
+
const env = {
|
|
342
|
+
stack: [],
|
|
343
|
+
error: void 0,
|
|
344
|
+
hasError: false
|
|
283
345
|
};
|
|
346
|
+
try {
|
|
347
|
+
this._queryCount++;
|
|
348
|
+
log2.info("begin query", {
|
|
349
|
+
request
|
|
350
|
+
}, {
|
|
351
|
+
F: __dxlog_file2,
|
|
352
|
+
L: 26,
|
|
353
|
+
S: this,
|
|
354
|
+
C: (f, a) => f(...a)
|
|
355
|
+
});
|
|
356
|
+
const queryResponse = _ts_add_disposable_resource2(env, await this._dataService.execQuery(this._executionContext, request), false);
|
|
357
|
+
log2.info("query response", {
|
|
358
|
+
resultCount: queryResponse.results?.length
|
|
359
|
+
}, {
|
|
360
|
+
F: __dxlog_file2,
|
|
361
|
+
L: 28,
|
|
362
|
+
S: this,
|
|
363
|
+
C: (f, a) => f(...a)
|
|
364
|
+
});
|
|
365
|
+
return structuredClone(queryResponse);
|
|
366
|
+
} catch (e) {
|
|
367
|
+
env.error = e;
|
|
368
|
+
env.hasError = true;
|
|
369
|
+
} finally {
|
|
370
|
+
_ts_dispose_resources2(env);
|
|
371
|
+
}
|
|
284
372
|
} catch (error) {
|
|
285
373
|
log2.error("query failed", {
|
|
286
374
|
err: error
|
|
287
375
|
}, {
|
|
288
|
-
F:
|
|
289
|
-
L:
|
|
376
|
+
F: __dxlog_file2,
|
|
377
|
+
L: 31,
|
|
290
378
|
S: this,
|
|
291
379
|
C: (f, a) => f(...a)
|
|
292
380
|
});
|
|
293
381
|
throw new RuntimeServiceError2({
|
|
294
382
|
message: `Query execution failed (queryCount=${this._queryCount})`,
|
|
295
383
|
context: {
|
|
296
|
-
spaceId,
|
|
297
|
-
filter: request.filter,
|
|
298
384
|
queryCount: this._queryCount
|
|
299
385
|
},
|
|
300
386
|
cause: error
|
|
@@ -313,25 +399,74 @@ var QueryServiceImpl = class {
|
|
|
313
399
|
});
|
|
314
400
|
}
|
|
315
401
|
};
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
402
|
+
|
|
403
|
+
// src/internal/queue-service-impl.ts
|
|
404
|
+
import { RuntimeServiceError as RuntimeServiceError3 } from "@dxos/errors";
|
|
405
|
+
function _ts_add_disposable_resource3(env, value, async) {
|
|
406
|
+
if (value !== null && value !== void 0) {
|
|
407
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
408
|
+
var dispose, inner;
|
|
409
|
+
if (async) {
|
|
410
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
411
|
+
dispose = value[Symbol.asyncDispose];
|
|
412
|
+
}
|
|
413
|
+
if (dispose === void 0) {
|
|
414
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
415
|
+
dispose = value[Symbol.dispose];
|
|
416
|
+
if (async) inner = dispose;
|
|
417
|
+
}
|
|
418
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
419
|
+
if (inner) dispose = function() {
|
|
420
|
+
try {
|
|
421
|
+
inner.call(this);
|
|
422
|
+
} catch (e) {
|
|
423
|
+
return Promise.reject(e);
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
env.stack.push({
|
|
427
|
+
value,
|
|
428
|
+
dispose,
|
|
429
|
+
async
|
|
430
|
+
});
|
|
431
|
+
} else if (async) {
|
|
432
|
+
env.stack.push({
|
|
433
|
+
async: true
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
return value;
|
|
437
|
+
}
|
|
438
|
+
function _ts_dispose_resources3(env) {
|
|
439
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
440
|
+
var e = new Error(message);
|
|
441
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
442
|
+
};
|
|
443
|
+
return (_ts_dispose_resources3 = function _ts_dispose_resources5(env2) {
|
|
444
|
+
function fail(e) {
|
|
445
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
446
|
+
env2.hasError = true;
|
|
447
|
+
}
|
|
448
|
+
var r, s = 0;
|
|
449
|
+
function next() {
|
|
450
|
+
while (r = env2.stack.pop()) {
|
|
451
|
+
try {
|
|
452
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
453
|
+
if (r.dispose) {
|
|
454
|
+
var result = r.dispose.call(r.value);
|
|
455
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
456
|
+
fail(e);
|
|
457
|
+
return next();
|
|
458
|
+
});
|
|
459
|
+
} else s |= 1;
|
|
460
|
+
} catch (e) {
|
|
461
|
+
fail(e);
|
|
323
462
|
}
|
|
324
463
|
}
|
|
464
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
465
|
+
if (env2.hasError) throw env2.error;
|
|
325
466
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
...spaces
|
|
330
|
-
];
|
|
331
|
-
};
|
|
332
|
-
|
|
333
|
-
// src/internal/queue-service-impl.ts
|
|
334
|
-
import { NotImplementedError as NotImplementedError3, RuntimeServiceError as RuntimeServiceError3 } from "@dxos/errors";
|
|
467
|
+
return next();
|
|
468
|
+
})(env);
|
|
469
|
+
}
|
|
335
470
|
var QueueServiceImpl = class {
|
|
336
471
|
_ctx;
|
|
337
472
|
_queueService;
|
|
@@ -339,13 +474,58 @@ var QueueServiceImpl = class {
|
|
|
339
474
|
this._ctx = _ctx;
|
|
340
475
|
this._queueService = _queueService;
|
|
341
476
|
}
|
|
342
|
-
async queryQueue(
|
|
477
|
+
async queryQueue(request) {
|
|
343
478
|
try {
|
|
344
|
-
const
|
|
345
|
-
|
|
479
|
+
const env = {
|
|
480
|
+
stack: [],
|
|
481
|
+
error: void 0,
|
|
482
|
+
hasError: false
|
|
483
|
+
};
|
|
484
|
+
try {
|
|
485
|
+
const result = _ts_add_disposable_resource3(env, await this._queueService.queryQueue(this._ctx, request), false);
|
|
486
|
+
return {
|
|
487
|
+
objects: structuredClone(result.objects),
|
|
488
|
+
nextCursor: result.nextCursor,
|
|
489
|
+
prevCursor: result.prevCursor
|
|
490
|
+
};
|
|
491
|
+
} catch (e) {
|
|
492
|
+
env.error = e;
|
|
493
|
+
env.hasError = true;
|
|
494
|
+
} finally {
|
|
495
|
+
_ts_dispose_resources3(env);
|
|
496
|
+
}
|
|
346
497
|
} catch (error) {
|
|
498
|
+
const { query } = request;
|
|
347
499
|
throw RuntimeServiceError3.wrap({
|
|
348
500
|
message: "Queue query failed.",
|
|
501
|
+
context: {
|
|
502
|
+
subspaceTag: query?.queuesNamespace,
|
|
503
|
+
spaceId: query?.spaceId,
|
|
504
|
+
queueId: query?.queueIds?.[0]
|
|
505
|
+
},
|
|
506
|
+
ifTypeDiffers: true
|
|
507
|
+
})(error);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
async insertIntoQueue(request) {
|
|
511
|
+
try {
|
|
512
|
+
const env = {
|
|
513
|
+
stack: [],
|
|
514
|
+
error: void 0,
|
|
515
|
+
hasError: false
|
|
516
|
+
};
|
|
517
|
+
try {
|
|
518
|
+
const _ = _ts_add_disposable_resource3(env, await this._queueService.insertIntoQueue(this._ctx, request), false);
|
|
519
|
+
} catch (e) {
|
|
520
|
+
env.error = e;
|
|
521
|
+
env.hasError = true;
|
|
522
|
+
} finally {
|
|
523
|
+
_ts_dispose_resources3(env);
|
|
524
|
+
}
|
|
525
|
+
} catch (error) {
|
|
526
|
+
const { subspaceTag, spaceId, queueId } = request;
|
|
527
|
+
throw RuntimeServiceError3.wrap({
|
|
528
|
+
message: "Queue append failed.",
|
|
349
529
|
context: {
|
|
350
530
|
subspaceTag,
|
|
351
531
|
spaceId,
|
|
@@ -355,13 +535,25 @@ var QueueServiceImpl = class {
|
|
|
355
535
|
})(error);
|
|
356
536
|
}
|
|
357
537
|
}
|
|
358
|
-
async
|
|
538
|
+
async deleteFromQueue(request) {
|
|
359
539
|
try {
|
|
360
|
-
const
|
|
361
|
-
|
|
540
|
+
const env = {
|
|
541
|
+
stack: [],
|
|
542
|
+
error: void 0,
|
|
543
|
+
hasError: false
|
|
544
|
+
};
|
|
545
|
+
try {
|
|
546
|
+
const _ = _ts_add_disposable_resource3(env, await this._queueService.deleteFromQueue(this._ctx, request), false);
|
|
547
|
+
} catch (e) {
|
|
548
|
+
env.error = e;
|
|
549
|
+
env.hasError = true;
|
|
550
|
+
} finally {
|
|
551
|
+
_ts_dispose_resources3(env);
|
|
552
|
+
}
|
|
362
553
|
} catch (error) {
|
|
554
|
+
const { subspaceTag, spaceId, queueId } = request;
|
|
363
555
|
throw RuntimeServiceError3.wrap({
|
|
364
|
-
message: "Queue
|
|
556
|
+
message: "Queue delete failed.",
|
|
365
557
|
context: {
|
|
366
558
|
subspaceTag,
|
|
367
559
|
spaceId,
|
|
@@ -371,30 +563,105 @@ var QueueServiceImpl = class {
|
|
|
371
563
|
})(error);
|
|
372
564
|
}
|
|
373
565
|
}
|
|
374
|
-
|
|
375
|
-
throw new NotImplementedError3({
|
|
376
|
-
message: "Deleting from queue is not supported.",
|
|
377
|
-
context: {
|
|
378
|
-
subspaceTag,
|
|
379
|
-
spaceId,
|
|
380
|
-
queueId
|
|
381
|
-
}
|
|
382
|
-
});
|
|
566
|
+
async syncQueue(_) {
|
|
383
567
|
}
|
|
384
568
|
};
|
|
385
569
|
|
|
386
570
|
// src/internal/service-container.ts
|
|
571
|
+
function _ts_add_disposable_resource4(env, value, async) {
|
|
572
|
+
if (value !== null && value !== void 0) {
|
|
573
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
574
|
+
var dispose, inner;
|
|
575
|
+
if (async) {
|
|
576
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
577
|
+
dispose = value[Symbol.asyncDispose];
|
|
578
|
+
}
|
|
579
|
+
if (dispose === void 0) {
|
|
580
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
581
|
+
dispose = value[Symbol.dispose];
|
|
582
|
+
if (async) inner = dispose;
|
|
583
|
+
}
|
|
584
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
585
|
+
if (inner) dispose = function() {
|
|
586
|
+
try {
|
|
587
|
+
inner.call(this);
|
|
588
|
+
} catch (e) {
|
|
589
|
+
return Promise.reject(e);
|
|
590
|
+
}
|
|
591
|
+
};
|
|
592
|
+
env.stack.push({
|
|
593
|
+
value,
|
|
594
|
+
dispose,
|
|
595
|
+
async
|
|
596
|
+
});
|
|
597
|
+
} else if (async) {
|
|
598
|
+
env.stack.push({
|
|
599
|
+
async: true
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
return value;
|
|
603
|
+
}
|
|
604
|
+
function _ts_dispose_resources4(env) {
|
|
605
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
606
|
+
var e = new Error(message);
|
|
607
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
608
|
+
};
|
|
609
|
+
return (_ts_dispose_resources4 = function _ts_dispose_resources5(env2) {
|
|
610
|
+
function fail(e) {
|
|
611
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
612
|
+
env2.hasError = true;
|
|
613
|
+
}
|
|
614
|
+
var r, s = 0;
|
|
615
|
+
function next() {
|
|
616
|
+
while (r = env2.stack.pop()) {
|
|
617
|
+
try {
|
|
618
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
619
|
+
if (r.dispose) {
|
|
620
|
+
var result = r.dispose.call(r.value);
|
|
621
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
622
|
+
fail(e);
|
|
623
|
+
return next();
|
|
624
|
+
});
|
|
625
|
+
} else s |= 1;
|
|
626
|
+
} catch (e) {
|
|
627
|
+
fail(e);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
631
|
+
if (env2.hasError) throw env2.error;
|
|
632
|
+
}
|
|
633
|
+
return next();
|
|
634
|
+
})(env);
|
|
635
|
+
}
|
|
387
636
|
var ServiceContainer = class {
|
|
388
637
|
_executionContext;
|
|
389
638
|
_dataService;
|
|
390
639
|
_queueService;
|
|
391
|
-
|
|
640
|
+
_functionsService;
|
|
641
|
+
constructor(_executionContext, _dataService, _queueService, _functionsService) {
|
|
392
642
|
this._executionContext = _executionContext;
|
|
393
643
|
this._dataService = _dataService;
|
|
394
644
|
this._queueService = _queueService;
|
|
645
|
+
this._functionsService = _functionsService;
|
|
395
646
|
}
|
|
396
647
|
async getSpaceMeta(spaceId) {
|
|
397
|
-
|
|
648
|
+
const env = {
|
|
649
|
+
stack: [],
|
|
650
|
+
error: void 0,
|
|
651
|
+
hasError: false
|
|
652
|
+
};
|
|
653
|
+
try {
|
|
654
|
+
const result = _ts_add_disposable_resource4(env, await this._dataService.getSpaceMeta(this._executionContext, spaceId), false);
|
|
655
|
+
return result ? {
|
|
656
|
+
spaceKey: result.spaceKey,
|
|
657
|
+
rootDocumentId: result.rootDocumentId
|
|
658
|
+
} : void 0;
|
|
659
|
+
} catch (e) {
|
|
660
|
+
env.error = e;
|
|
661
|
+
env.hasError = true;
|
|
662
|
+
} finally {
|
|
663
|
+
_ts_dispose_resources4(env);
|
|
664
|
+
}
|
|
398
665
|
}
|
|
399
666
|
async createServices() {
|
|
400
667
|
const dataService = new DataServiceImpl(this._executionContext, this._dataService);
|
|
@@ -403,21 +670,50 @@ var ServiceContainer = class {
|
|
|
403
670
|
return {
|
|
404
671
|
dataService,
|
|
405
672
|
queryService,
|
|
406
|
-
queueService
|
|
673
|
+
queueService,
|
|
674
|
+
functionsAiService: this._functionsService
|
|
407
675
|
};
|
|
408
676
|
}
|
|
409
|
-
queryQueue(queue) {
|
|
410
|
-
|
|
677
|
+
async queryQueue(queue) {
|
|
678
|
+
const parts = queue.asQueueDXN();
|
|
679
|
+
if (!parts) {
|
|
680
|
+
throw new Error("Invalid queue DXN");
|
|
681
|
+
}
|
|
682
|
+
const { subspaceTag, spaceId, queueId } = parts;
|
|
683
|
+
const result = await this._queueService.queryQueue(this._executionContext, {
|
|
684
|
+
query: {
|
|
685
|
+
spaceId,
|
|
686
|
+
queuesNamespace: subspaceTag,
|
|
687
|
+
queueIds: [
|
|
688
|
+
queueId
|
|
689
|
+
]
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
return {
|
|
693
|
+
objects: structuredClone(result.objects),
|
|
694
|
+
nextCursor: result.nextCursor ?? null,
|
|
695
|
+
prevCursor: result.prevCursor ?? null
|
|
696
|
+
};
|
|
411
697
|
}
|
|
412
|
-
insertIntoQueue(queue, objects) {
|
|
413
|
-
|
|
698
|
+
async insertIntoQueue(queue, objects) {
|
|
699
|
+
const parts = queue.asQueueDXN();
|
|
700
|
+
if (!parts) {
|
|
701
|
+
throw new Error("Invalid queue DXN");
|
|
702
|
+
}
|
|
703
|
+
const { subspaceTag, spaceId, queueId } = parts;
|
|
704
|
+
await this._queueService.insertIntoQueue(this._executionContext, {
|
|
705
|
+
subspaceTag,
|
|
706
|
+
spaceId,
|
|
707
|
+
queueId,
|
|
708
|
+
objects
|
|
709
|
+
});
|
|
414
710
|
}
|
|
415
711
|
};
|
|
416
712
|
|
|
417
713
|
// src/space-proxy.ts
|
|
418
714
|
import { Resource } from "@dxos/context";
|
|
419
|
-
import { invariant as
|
|
420
|
-
import { PublicKey
|
|
715
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
716
|
+
import { PublicKey } from "@dxos/keys";
|
|
421
717
|
|
|
422
718
|
// src/queues-api.ts
|
|
423
719
|
var QueuesAPIImpl = class {
|
|
@@ -436,7 +732,7 @@ var QueuesAPIImpl = class {
|
|
|
436
732
|
};
|
|
437
733
|
|
|
438
734
|
// src/space-proxy.ts
|
|
439
|
-
var
|
|
735
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/space-proxy.ts";
|
|
440
736
|
var SpaceProxy = class extends Resource {
|
|
441
737
|
_serviceContainer;
|
|
442
738
|
_echoClient;
|
|
@@ -451,9 +747,9 @@ var SpaceProxy = class extends Resource {
|
|
|
451
747
|
return this._id;
|
|
452
748
|
}
|
|
453
749
|
get db() {
|
|
454
|
-
|
|
455
|
-
F:
|
|
456
|
-
L:
|
|
750
|
+
invariant2(this._db, void 0, {
|
|
751
|
+
F: __dxlog_file3,
|
|
752
|
+
L: 35,
|
|
457
753
|
S: this,
|
|
458
754
|
A: [
|
|
459
755
|
"this._db",
|
|
@@ -466,9 +762,9 @@ var SpaceProxy = class extends Resource {
|
|
|
466
762
|
* @deprecated Use db API.
|
|
467
763
|
*/
|
|
468
764
|
get crud() {
|
|
469
|
-
|
|
470
|
-
F:
|
|
471
|
-
L:
|
|
765
|
+
invariant2(this._db, void 0, {
|
|
766
|
+
F: __dxlog_file3,
|
|
767
|
+
L: 43,
|
|
472
768
|
S: this,
|
|
473
769
|
A: [
|
|
474
770
|
"this._db",
|
|
@@ -487,7 +783,7 @@ var SpaceProxy = class extends Resource {
|
|
|
487
783
|
}
|
|
488
784
|
this._db = this._echoClient.constructDatabase({
|
|
489
785
|
spaceId: this._id,
|
|
490
|
-
spaceKey:
|
|
786
|
+
spaceKey: PublicKey.from(meta.spaceKey),
|
|
491
787
|
reactiveSchemaQuery: false,
|
|
492
788
|
owningObject: this
|
|
493
789
|
});
|
|
@@ -498,7 +794,7 @@ var SpaceProxy = class extends Resource {
|
|
|
498
794
|
};
|
|
499
795
|
|
|
500
796
|
// src/functions-client.ts
|
|
501
|
-
var
|
|
797
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/functions-client.ts";
|
|
502
798
|
var FunctionsClient = class extends Resource2 {
|
|
503
799
|
_serviceContainer;
|
|
504
800
|
_echoClient;
|
|
@@ -506,25 +802,25 @@ var FunctionsClient = class extends Resource2 {
|
|
|
506
802
|
_spaces = /* @__PURE__ */ new Map();
|
|
507
803
|
constructor(services) {
|
|
508
804
|
super();
|
|
509
|
-
|
|
510
|
-
F:
|
|
511
|
-
L:
|
|
805
|
+
invariant3(typeof services.dataService !== "undefined", "DataService is required", {
|
|
806
|
+
F: __dxlog_file4,
|
|
807
|
+
L: 33,
|
|
512
808
|
S: this,
|
|
513
809
|
A: [
|
|
514
810
|
"typeof services.dataService !== 'undefined'",
|
|
515
811
|
"'DataService is required'"
|
|
516
812
|
]
|
|
517
813
|
});
|
|
518
|
-
|
|
519
|
-
F:
|
|
520
|
-
L:
|
|
814
|
+
invariant3(typeof services.queueService !== "undefined", "QueueService is required", {
|
|
815
|
+
F: __dxlog_file4,
|
|
816
|
+
L: 34,
|
|
521
817
|
S: this,
|
|
522
818
|
A: [
|
|
523
819
|
"typeof services.queueService !== 'undefined'",
|
|
524
820
|
"'QueueService is required'"
|
|
525
821
|
]
|
|
526
822
|
});
|
|
527
|
-
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService);
|
|
823
|
+
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService, services.functionsAiService);
|
|
528
824
|
this._echoClient = new EchoClient({});
|
|
529
825
|
}
|
|
530
826
|
get echo() {
|
|
@@ -558,7 +854,8 @@ var FunctionsClient = class extends Resource2 {
|
|
|
558
854
|
var createClientFromEnv = async (env) => {
|
|
559
855
|
const client = new FunctionsClient({
|
|
560
856
|
dataService: env.DATA_SERVICE,
|
|
561
|
-
queueService: env.QUEUE_SERVICE
|
|
857
|
+
queueService: env.QUEUE_SERVICE,
|
|
858
|
+
functionsAiService: env.FUNCTIONS_AI_SERVICE
|
|
562
859
|
});
|
|
563
860
|
await client.open();
|
|
564
861
|
return client;
|
|
@@ -572,34 +869,26 @@ var FunctionRouteValue = /* @__PURE__ */ (function(FunctionRouteValue2) {
|
|
|
572
869
|
})({});
|
|
573
870
|
|
|
574
871
|
// src/wrap-handler-for-cloudflare.ts
|
|
575
|
-
import { invariant as
|
|
576
|
-
import { SpaceId as
|
|
872
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
873
|
+
import { SpaceId as SpaceId2 } from "@dxos/keys";
|
|
577
874
|
import { log as log3 } from "@dxos/log";
|
|
578
875
|
import { EdgeResponse } from "@dxos/protocols";
|
|
579
|
-
var
|
|
876
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
|
|
580
877
|
var wrapHandlerForCloudflare = (func) => {
|
|
581
878
|
return async (request, env) => {
|
|
582
879
|
if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {
|
|
583
|
-
log3.info(">>> meta", {
|
|
584
|
-
func
|
|
585
|
-
}, {
|
|
586
|
-
F: __dxlog_file6,
|
|
587
|
-
L: 25,
|
|
588
|
-
S: void 0,
|
|
589
|
-
C: (f, a) => f(...a)
|
|
590
|
-
});
|
|
591
880
|
return handleFunctionMetaCall(func, request);
|
|
592
881
|
}
|
|
593
882
|
try {
|
|
594
883
|
const spaceId = new URL(request.url).searchParams.get("spaceId");
|
|
595
884
|
if (spaceId) {
|
|
596
|
-
if (!
|
|
885
|
+
if (!SpaceId2.isValid(spaceId)) {
|
|
597
886
|
return new Response("Invalid spaceId", {
|
|
598
887
|
status: 400
|
|
599
888
|
});
|
|
600
889
|
}
|
|
601
890
|
}
|
|
602
|
-
const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE);
|
|
891
|
+
const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE, env.FUNCTIONS_AI_SERVICE);
|
|
603
892
|
const context = await createFunctionContext({
|
|
604
893
|
serviceContainer,
|
|
605
894
|
contextSpaceId: spaceId
|
|
@@ -610,8 +899,8 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
610
899
|
error,
|
|
611
900
|
stack: error.stack
|
|
612
901
|
}, {
|
|
613
|
-
F:
|
|
614
|
-
L:
|
|
902
|
+
F: __dxlog_file5,
|
|
903
|
+
L: 44,
|
|
615
904
|
S: void 0,
|
|
616
905
|
C: (f, a) => f(...a)
|
|
617
906
|
});
|
|
@@ -648,8 +937,8 @@ var decodeRequest = async (request) => {
|
|
|
648
937
|
};
|
|
649
938
|
} catch (err) {
|
|
650
939
|
log3.catch(err, void 0, {
|
|
651
|
-
F:
|
|
652
|
-
L:
|
|
940
|
+
F: __dxlog_file5,
|
|
941
|
+
L: 79,
|
|
653
942
|
S: void 0,
|
|
654
943
|
C: (f, a) => f(...a)
|
|
655
944
|
});
|
|
@@ -676,7 +965,7 @@ var handleFunctionMetaCall = (functionDefinition, request) => {
|
|
|
676
965
|
});
|
|
677
966
|
};
|
|
678
967
|
var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
679
|
-
const { dataService, queryService, queueService } = await serviceContainer.createServices();
|
|
968
|
+
const { dataService, queryService, queueService, functionsAiService } = await serviceContainer.createServices();
|
|
680
969
|
let spaceKey;
|
|
681
970
|
let rootUrl;
|
|
682
971
|
if (contextSpaceId) {
|
|
@@ -685,9 +974,9 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
685
974
|
throw new Error(`Space not found: ${contextSpaceId}`);
|
|
686
975
|
}
|
|
687
976
|
spaceKey = meta.spaceKey;
|
|
688
|
-
|
|
689
|
-
F:
|
|
690
|
-
L:
|
|
977
|
+
invariant4(!meta.rootDocumentId.startsWith("automerge:"), void 0, {
|
|
978
|
+
F: __dxlog_file5,
|
|
979
|
+
L: 117,
|
|
691
980
|
S: void 0,
|
|
692
981
|
A: [
|
|
693
982
|
"!meta.rootDocumentId.startsWith('automerge:')",
|
|
@@ -700,7 +989,8 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
700
989
|
services: {
|
|
701
990
|
dataService,
|
|
702
991
|
queryService,
|
|
703
|
-
queueService
|
|
992
|
+
queueService,
|
|
993
|
+
functionsAiService
|
|
704
994
|
},
|
|
705
995
|
spaceId: contextSpaceId,
|
|
706
996
|
spaceKey,
|