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