@dxos/functions-runtime-cloudflare 0.8.4-main.3c1ae3b → 0.8.4-main.69d29f4
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 +503 -118
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +503 -118
- 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 +7 -6
- package/dist/types/src/internal/data-service-impl.d.ts.map +1 -1
- package/dist/types/src/internal/query-service-impl.d.ts.map +1 -1
- package/dist/types/src/internal/queue-service-impl.d.ts +4 -5
- package/dist/types/src/internal/queue-service-impl.d.ts.map +1 -1
- package/dist/types/src/internal/service-container.d.ts +5 -3
- 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 +3 -3
- 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 +8 -1
- package/src/internal/data-service-impl.ts +27 -10
- package/src/internal/query-service-impl.ts +7 -3
- package/src/internal/queue-service-impl.ts +32 -14
- package/src/internal/service-container.ts +25 -6
- package/src/internal/utils.ts +5 -0
- package/src/logger.ts +2 -0
- package/src/queues-api.ts +3 -3
- package/src/space-proxy.ts +4 -3
- package/src/wrap-handler-for-cloudflare.ts +3 -3
|
@@ -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 invariant6 } 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
|
});
|
|
@@ -217,6 +325,71 @@ var isSimpleSelectionQuery = (query) => {
|
|
|
217
325
|
};
|
|
218
326
|
|
|
219
327
|
// src/internal/query-service-impl.ts
|
|
328
|
+
function _ts_add_disposable_resource2(env, value, async) {
|
|
329
|
+
if (value !== null && value !== void 0) {
|
|
330
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
331
|
+
var dispose, inner;
|
|
332
|
+
if (async) {
|
|
333
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
334
|
+
dispose = value[Symbol.asyncDispose];
|
|
335
|
+
}
|
|
336
|
+
if (dispose === void 0) {
|
|
337
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
338
|
+
dispose = value[Symbol.dispose];
|
|
339
|
+
if (async) inner = dispose;
|
|
340
|
+
}
|
|
341
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
342
|
+
if (inner) dispose = function() {
|
|
343
|
+
try {
|
|
344
|
+
inner.call(this);
|
|
345
|
+
} catch (e) {
|
|
346
|
+
return Promise.reject(e);
|
|
347
|
+
}
|
|
348
|
+
};
|
|
349
|
+
env.stack.push({
|
|
350
|
+
value,
|
|
351
|
+
dispose,
|
|
352
|
+
async
|
|
353
|
+
});
|
|
354
|
+
} else if (async) {
|
|
355
|
+
env.stack.push({
|
|
356
|
+
async: true
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
return value;
|
|
360
|
+
}
|
|
361
|
+
function _ts_dispose_resources2(env) {
|
|
362
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
363
|
+
var e = new Error(message);
|
|
364
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
365
|
+
};
|
|
366
|
+
return (_ts_dispose_resources2 = function _ts_dispose_resources5(env2) {
|
|
367
|
+
function fail(e) {
|
|
368
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
369
|
+
env2.hasError = true;
|
|
370
|
+
}
|
|
371
|
+
var r, s = 0;
|
|
372
|
+
function next() {
|
|
373
|
+
while (r = env2.stack.pop()) {
|
|
374
|
+
try {
|
|
375
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
376
|
+
if (r.dispose) {
|
|
377
|
+
var result = r.dispose.call(r.value);
|
|
378
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
379
|
+
fail(e);
|
|
380
|
+
return next();
|
|
381
|
+
});
|
|
382
|
+
} else s |= 1;
|
|
383
|
+
} catch (e) {
|
|
384
|
+
fail(e);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
388
|
+
if (env2.hasError) throw env2.error;
|
|
389
|
+
}
|
|
390
|
+
return next();
|
|
391
|
+
})(env);
|
|
392
|
+
}
|
|
220
393
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
|
|
221
394
|
var QueryServiceImpl = class {
|
|
222
395
|
_executionContext;
|
|
@@ -231,7 +404,7 @@ var QueryServiceImpl = class {
|
|
|
231
404
|
request
|
|
232
405
|
}, {
|
|
233
406
|
F: __dxlog_file3,
|
|
234
|
-
L:
|
|
407
|
+
L: 34,
|
|
235
408
|
S: this,
|
|
236
409
|
C: (f, a) => f(...a)
|
|
237
410
|
});
|
|
@@ -239,7 +412,7 @@ var QueryServiceImpl = class {
|
|
|
239
412
|
const requestedSpaceIds = getTargetSpacesForQuery(query);
|
|
240
413
|
invariant3(requestedSpaceIds.length === 1, "Only one space is supported", {
|
|
241
414
|
F: __dxlog_file3,
|
|
242
|
-
L:
|
|
415
|
+
L: 37,
|
|
243
416
|
S: this,
|
|
244
417
|
A: [
|
|
245
418
|
"requestedSpaceIds.length === 1",
|
|
@@ -249,42 +422,57 @@ var QueryServiceImpl = class {
|
|
|
249
422
|
const spaceId = requestedSpaceIds[0];
|
|
250
423
|
return Stream2.fromPromise((async () => {
|
|
251
424
|
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
|
-
}))
|
|
425
|
+
const env = {
|
|
426
|
+
stack: [],
|
|
427
|
+
error: void 0,
|
|
428
|
+
hasError: false
|
|
281
429
|
};
|
|
430
|
+
try {
|
|
431
|
+
this._queryCount++;
|
|
432
|
+
log2.info("begin query", {
|
|
433
|
+
spaceId
|
|
434
|
+
}, {
|
|
435
|
+
F: __dxlog_file3,
|
|
436
|
+
L: 44,
|
|
437
|
+
S: this,
|
|
438
|
+
C: (f, a) => f(...a)
|
|
439
|
+
});
|
|
440
|
+
const queryResponse = _ts_add_disposable_resource2(env, await this._dataService.queryDocuments(this._executionContext, queryToDataServiceRequest(query)), false);
|
|
441
|
+
log2.info("query response", {
|
|
442
|
+
spaceId,
|
|
443
|
+
filter: request.filter,
|
|
444
|
+
resultCount: queryResponse.results.length
|
|
445
|
+
}, {
|
|
446
|
+
F: __dxlog_file3,
|
|
447
|
+
L: 49,
|
|
448
|
+
S: this,
|
|
449
|
+
C: (f, a) => f(...a)
|
|
450
|
+
});
|
|
451
|
+
return {
|
|
452
|
+
results: queryResponse.results.map((object) => ({
|
|
453
|
+
id: object.objectId,
|
|
454
|
+
spaceId,
|
|
455
|
+
spaceKey: PublicKey.ZERO,
|
|
456
|
+
documentId: object.document.documentId,
|
|
457
|
+
// Rank 1 for predicate matches where ranking is not determined.
|
|
458
|
+
rank: 1,
|
|
459
|
+
// Copy returned object to avoid hanging RPC stub.
|
|
460
|
+
// See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/
|
|
461
|
+
documentAutomerge: copyUint8Array(object.document.data)
|
|
462
|
+
}))
|
|
463
|
+
};
|
|
464
|
+
} catch (e) {
|
|
465
|
+
env.error = e;
|
|
466
|
+
env.hasError = true;
|
|
467
|
+
} finally {
|
|
468
|
+
_ts_dispose_resources2(env);
|
|
469
|
+
}
|
|
282
470
|
} catch (error) {
|
|
283
471
|
log2.error("query failed", {
|
|
284
472
|
err: error
|
|
285
473
|
}, {
|
|
286
474
|
F: __dxlog_file3,
|
|
287
|
-
L:
|
|
475
|
+
L: 66,
|
|
288
476
|
S: this,
|
|
289
477
|
C: (f, a) => f(...a)
|
|
290
478
|
});
|
|
@@ -330,6 +518,73 @@ var getTargetSpacesForQuery = (query) => {
|
|
|
330
518
|
|
|
331
519
|
// src/internal/queue-service-impl.ts
|
|
332
520
|
import { NotImplementedError as NotImplementedError3, RuntimeServiceError as RuntimeServiceError3 } from "@dxos/errors";
|
|
521
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
522
|
+
function _ts_add_disposable_resource3(env, value, async) {
|
|
523
|
+
if (value !== null && value !== void 0) {
|
|
524
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
525
|
+
var dispose, inner;
|
|
526
|
+
if (async) {
|
|
527
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
528
|
+
dispose = value[Symbol.asyncDispose];
|
|
529
|
+
}
|
|
530
|
+
if (dispose === void 0) {
|
|
531
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
532
|
+
dispose = value[Symbol.dispose];
|
|
533
|
+
if (async) inner = dispose;
|
|
534
|
+
}
|
|
535
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
536
|
+
if (inner) dispose = function() {
|
|
537
|
+
try {
|
|
538
|
+
inner.call(this);
|
|
539
|
+
} catch (e) {
|
|
540
|
+
return Promise.reject(e);
|
|
541
|
+
}
|
|
542
|
+
};
|
|
543
|
+
env.stack.push({
|
|
544
|
+
value,
|
|
545
|
+
dispose,
|
|
546
|
+
async
|
|
547
|
+
});
|
|
548
|
+
} else if (async) {
|
|
549
|
+
env.stack.push({
|
|
550
|
+
async: true
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
return value;
|
|
554
|
+
}
|
|
555
|
+
function _ts_dispose_resources3(env) {
|
|
556
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
557
|
+
var e = new Error(message);
|
|
558
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
559
|
+
};
|
|
560
|
+
return (_ts_dispose_resources3 = function _ts_dispose_resources5(env2) {
|
|
561
|
+
function fail(e) {
|
|
562
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
563
|
+
env2.hasError = true;
|
|
564
|
+
}
|
|
565
|
+
var r, s = 0;
|
|
566
|
+
function next() {
|
|
567
|
+
while (r = env2.stack.pop()) {
|
|
568
|
+
try {
|
|
569
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
570
|
+
if (r.dispose) {
|
|
571
|
+
var result = r.dispose.call(r.value);
|
|
572
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
573
|
+
fail(e);
|
|
574
|
+
return next();
|
|
575
|
+
});
|
|
576
|
+
} else s |= 1;
|
|
577
|
+
} catch (e) {
|
|
578
|
+
fail(e);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
582
|
+
if (env2.hasError) throw env2.error;
|
|
583
|
+
}
|
|
584
|
+
return next();
|
|
585
|
+
})(env);
|
|
586
|
+
}
|
|
587
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/queue-service-impl.ts";
|
|
333
588
|
var QueueServiceImpl = class {
|
|
334
589
|
_ctx;
|
|
335
590
|
_queueService;
|
|
@@ -337,15 +592,46 @@ var QueueServiceImpl = class {
|
|
|
337
592
|
this._ctx = _ctx;
|
|
338
593
|
this._queueService = _queueService;
|
|
339
594
|
}
|
|
340
|
-
async queryQueue(
|
|
595
|
+
async queryQueue(request) {
|
|
596
|
+
const { query } = request;
|
|
597
|
+
const { queueIds, ...filter } = query;
|
|
598
|
+
const spaceId = query.spaceId;
|
|
599
|
+
const queueId = queueIds?.[0];
|
|
600
|
+
invariant4(request.query.queuesNamespace, void 0, {
|
|
601
|
+
F: __dxlog_file4,
|
|
602
|
+
L: 26,
|
|
603
|
+
S: this,
|
|
604
|
+
A: [
|
|
605
|
+
"request.query.queuesNamespace",
|
|
606
|
+
""
|
|
607
|
+
]
|
|
608
|
+
});
|
|
341
609
|
try {
|
|
342
|
-
const
|
|
343
|
-
|
|
610
|
+
const env = {
|
|
611
|
+
stack: [],
|
|
612
|
+
error: void 0,
|
|
613
|
+
hasError: false
|
|
614
|
+
};
|
|
615
|
+
try {
|
|
616
|
+
const result = _ts_add_disposable_resource3(env, await this._queueService.query(this._ctx, `dxn:queue:${request.query.queuesNamespace}:${spaceId}:${queueId}`, filter), false);
|
|
617
|
+
return {
|
|
618
|
+
// Copy returned object to avoid hanging RPC stub
|
|
619
|
+
// See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/
|
|
620
|
+
objects: structuredClone(result.objects),
|
|
621
|
+
nextCursor: result.nextCursor,
|
|
622
|
+
prevCursor: result.prevCursor
|
|
623
|
+
};
|
|
624
|
+
} catch (e) {
|
|
625
|
+
env.error = e;
|
|
626
|
+
env.hasError = true;
|
|
627
|
+
} finally {
|
|
628
|
+
_ts_dispose_resources3(env);
|
|
629
|
+
}
|
|
344
630
|
} catch (error) {
|
|
345
631
|
throw RuntimeServiceError3.wrap({
|
|
346
632
|
message: "Queue query failed.",
|
|
347
633
|
context: {
|
|
348
|
-
subspaceTag,
|
|
634
|
+
subspaceTag: request.query.queuesNamespace,
|
|
349
635
|
spaceId,
|
|
350
636
|
queueId
|
|
351
637
|
},
|
|
@@ -353,10 +639,10 @@ var QueueServiceImpl = class {
|
|
|
353
639
|
})(error);
|
|
354
640
|
}
|
|
355
641
|
}
|
|
356
|
-
async insertIntoQueue(
|
|
642
|
+
async insertIntoQueue(request) {
|
|
643
|
+
const { subspaceTag, spaceId, queueId, objects } = request;
|
|
357
644
|
try {
|
|
358
|
-
|
|
359
|
-
return result;
|
|
645
|
+
await this._queueService.append(this._ctx, `dxn:queue:${subspaceTag}:${spaceId}:${queueId}`, objects ?? []);
|
|
360
646
|
} catch (error) {
|
|
361
647
|
throw RuntimeServiceError3.wrap({
|
|
362
648
|
message: "Queue append failed.",
|
|
@@ -369,7 +655,8 @@ var QueueServiceImpl = class {
|
|
|
369
655
|
})(error);
|
|
370
656
|
}
|
|
371
657
|
}
|
|
372
|
-
deleteFromQueue(
|
|
658
|
+
deleteFromQueue(request) {
|
|
659
|
+
const { subspaceTag, spaceId, queueId } = request;
|
|
373
660
|
throw new NotImplementedError3({
|
|
374
661
|
message: "Deleting from queue is not supported.",
|
|
375
662
|
context: {
|
|
@@ -382,17 +669,100 @@ var QueueServiceImpl = class {
|
|
|
382
669
|
};
|
|
383
670
|
|
|
384
671
|
// src/internal/service-container.ts
|
|
672
|
+
function _ts_add_disposable_resource4(env, value, async) {
|
|
673
|
+
if (value !== null && value !== void 0) {
|
|
674
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
675
|
+
var dispose, inner;
|
|
676
|
+
if (async) {
|
|
677
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
678
|
+
dispose = value[Symbol.asyncDispose];
|
|
679
|
+
}
|
|
680
|
+
if (dispose === void 0) {
|
|
681
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
682
|
+
dispose = value[Symbol.dispose];
|
|
683
|
+
if (async) inner = dispose;
|
|
684
|
+
}
|
|
685
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
686
|
+
if (inner) dispose = function() {
|
|
687
|
+
try {
|
|
688
|
+
inner.call(this);
|
|
689
|
+
} catch (e) {
|
|
690
|
+
return Promise.reject(e);
|
|
691
|
+
}
|
|
692
|
+
};
|
|
693
|
+
env.stack.push({
|
|
694
|
+
value,
|
|
695
|
+
dispose,
|
|
696
|
+
async
|
|
697
|
+
});
|
|
698
|
+
} else if (async) {
|
|
699
|
+
env.stack.push({
|
|
700
|
+
async: true
|
|
701
|
+
});
|
|
702
|
+
}
|
|
703
|
+
return value;
|
|
704
|
+
}
|
|
705
|
+
function _ts_dispose_resources4(env) {
|
|
706
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
707
|
+
var e = new Error(message);
|
|
708
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
709
|
+
};
|
|
710
|
+
return (_ts_dispose_resources4 = function _ts_dispose_resources5(env2) {
|
|
711
|
+
function fail(e) {
|
|
712
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
713
|
+
env2.hasError = true;
|
|
714
|
+
}
|
|
715
|
+
var r, s = 0;
|
|
716
|
+
function next() {
|
|
717
|
+
while (r = env2.stack.pop()) {
|
|
718
|
+
try {
|
|
719
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
720
|
+
if (r.dispose) {
|
|
721
|
+
var result = r.dispose.call(r.value);
|
|
722
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
723
|
+
fail(e);
|
|
724
|
+
return next();
|
|
725
|
+
});
|
|
726
|
+
} else s |= 1;
|
|
727
|
+
} catch (e) {
|
|
728
|
+
fail(e);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
732
|
+
if (env2.hasError) throw env2.error;
|
|
733
|
+
}
|
|
734
|
+
return next();
|
|
735
|
+
})(env);
|
|
736
|
+
}
|
|
385
737
|
var ServiceContainer = class {
|
|
386
738
|
_executionContext;
|
|
387
739
|
_dataService;
|
|
388
740
|
_queueService;
|
|
389
|
-
|
|
741
|
+
_functionsService;
|
|
742
|
+
constructor(_executionContext, _dataService, _queueService, _functionsService) {
|
|
390
743
|
this._executionContext = _executionContext;
|
|
391
744
|
this._dataService = _dataService;
|
|
392
745
|
this._queueService = _queueService;
|
|
746
|
+
this._functionsService = _functionsService;
|
|
393
747
|
}
|
|
394
748
|
async getSpaceMeta(spaceId) {
|
|
395
|
-
|
|
749
|
+
const env = {
|
|
750
|
+
stack: [],
|
|
751
|
+
error: void 0,
|
|
752
|
+
hasError: false
|
|
753
|
+
};
|
|
754
|
+
try {
|
|
755
|
+
const result = _ts_add_disposable_resource4(env, await this._dataService.getSpaceMeta(this._executionContext, spaceId), false);
|
|
756
|
+
return result ? {
|
|
757
|
+
spaceKey: result.spaceKey,
|
|
758
|
+
rootDocumentId: result.rootDocumentId
|
|
759
|
+
} : void 0;
|
|
760
|
+
} catch (e) {
|
|
761
|
+
env.error = e;
|
|
762
|
+
env.hasError = true;
|
|
763
|
+
} finally {
|
|
764
|
+
_ts_dispose_resources4(env);
|
|
765
|
+
}
|
|
396
766
|
}
|
|
397
767
|
async createServices() {
|
|
398
768
|
const dataService = new DataServiceImpl(this._executionContext, this._dataService);
|
|
@@ -401,20 +771,41 @@ var ServiceContainer = class {
|
|
|
401
771
|
return {
|
|
402
772
|
dataService,
|
|
403
773
|
queryService,
|
|
404
|
-
queueService
|
|
774
|
+
queueService,
|
|
775
|
+
functionsAiService: this._functionsService
|
|
405
776
|
};
|
|
406
777
|
}
|
|
407
|
-
queryQueue(queue) {
|
|
408
|
-
|
|
778
|
+
async queryQueue(queue) {
|
|
779
|
+
const env = {
|
|
780
|
+
stack: [],
|
|
781
|
+
error: void 0,
|
|
782
|
+
hasError: false
|
|
783
|
+
};
|
|
784
|
+
try {
|
|
785
|
+
const { spaceId } = queue.asQueueDXN() ?? {};
|
|
786
|
+
const result = _ts_add_disposable_resource4(env, await this._queueService.query({}, queue.toString(), {
|
|
787
|
+
spaceId
|
|
788
|
+
}), false);
|
|
789
|
+
return {
|
|
790
|
+
objects: structuredClone(result.objects),
|
|
791
|
+
nextCursor: result.nextCursor ?? null,
|
|
792
|
+
prevCursor: result.prevCursor ?? null
|
|
793
|
+
};
|
|
794
|
+
} catch (e) {
|
|
795
|
+
env.error = e;
|
|
796
|
+
env.hasError = true;
|
|
797
|
+
} finally {
|
|
798
|
+
_ts_dispose_resources4(env);
|
|
799
|
+
}
|
|
409
800
|
}
|
|
410
|
-
insertIntoQueue(queue, objects) {
|
|
411
|
-
|
|
801
|
+
async insertIntoQueue(queue, objects) {
|
|
802
|
+
await this._queueService.append({}, queue.toString(), objects);
|
|
412
803
|
}
|
|
413
804
|
};
|
|
414
805
|
|
|
415
806
|
// src/space-proxy.ts
|
|
416
807
|
import { Resource } from "@dxos/context";
|
|
417
|
-
import { invariant as
|
|
808
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
418
809
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
419
810
|
|
|
420
811
|
// src/queues-api.ts
|
|
@@ -434,7 +825,7 @@ var QueuesAPIImpl = class {
|
|
|
434
825
|
};
|
|
435
826
|
|
|
436
827
|
// src/space-proxy.ts
|
|
437
|
-
var
|
|
828
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/space-proxy.ts";
|
|
438
829
|
var SpaceProxy = class extends Resource {
|
|
439
830
|
_serviceContainer;
|
|
440
831
|
_echoClient;
|
|
@@ -449,9 +840,9 @@ var SpaceProxy = class extends Resource {
|
|
|
449
840
|
return this._id;
|
|
450
841
|
}
|
|
451
842
|
get db() {
|
|
452
|
-
|
|
453
|
-
F:
|
|
454
|
-
L:
|
|
843
|
+
invariant5(this._db, void 0, {
|
|
844
|
+
F: __dxlog_file5,
|
|
845
|
+
L: 35,
|
|
455
846
|
S: this,
|
|
456
847
|
A: [
|
|
457
848
|
"this._db",
|
|
@@ -464,9 +855,9 @@ var SpaceProxy = class extends Resource {
|
|
|
464
855
|
* @deprecated Use db API.
|
|
465
856
|
*/
|
|
466
857
|
get crud() {
|
|
467
|
-
|
|
468
|
-
F:
|
|
469
|
-
L:
|
|
858
|
+
invariant5(this._db, void 0, {
|
|
859
|
+
F: __dxlog_file5,
|
|
860
|
+
L: 43,
|
|
470
861
|
S: this,
|
|
471
862
|
A: [
|
|
472
863
|
"this._db",
|
|
@@ -496,7 +887,7 @@ var SpaceProxy = class extends Resource {
|
|
|
496
887
|
};
|
|
497
888
|
|
|
498
889
|
// src/functions-client.ts
|
|
499
|
-
var
|
|
890
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/functions-client.ts";
|
|
500
891
|
var FunctionsClient = class extends Resource2 {
|
|
501
892
|
_serviceContainer;
|
|
502
893
|
_echoClient;
|
|
@@ -504,25 +895,25 @@ var FunctionsClient = class extends Resource2 {
|
|
|
504
895
|
_spaces = /* @__PURE__ */ new Map();
|
|
505
896
|
constructor(services) {
|
|
506
897
|
super();
|
|
507
|
-
|
|
508
|
-
F:
|
|
509
|
-
L:
|
|
898
|
+
invariant6(typeof services.dataService !== "undefined", "DataService is required", {
|
|
899
|
+
F: __dxlog_file6,
|
|
900
|
+
L: 33,
|
|
510
901
|
S: this,
|
|
511
902
|
A: [
|
|
512
903
|
"typeof services.dataService !== 'undefined'",
|
|
513
904
|
"'DataService is required'"
|
|
514
905
|
]
|
|
515
906
|
});
|
|
516
|
-
|
|
517
|
-
F:
|
|
518
|
-
L:
|
|
907
|
+
invariant6(typeof services.queueService !== "undefined", "QueueService is required", {
|
|
908
|
+
F: __dxlog_file6,
|
|
909
|
+
L: 34,
|
|
519
910
|
S: this,
|
|
520
911
|
A: [
|
|
521
912
|
"typeof services.queueService !== 'undefined'",
|
|
522
913
|
"'QueueService is required'"
|
|
523
914
|
]
|
|
524
915
|
});
|
|
525
|
-
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService);
|
|
916
|
+
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService, services.functionsAiService);
|
|
526
917
|
this._echoClient = new EchoClient({});
|
|
527
918
|
}
|
|
528
919
|
get echo() {
|
|
@@ -556,7 +947,8 @@ var FunctionsClient = class extends Resource2 {
|
|
|
556
947
|
var createClientFromEnv = async (env) => {
|
|
557
948
|
const client = new FunctionsClient({
|
|
558
949
|
dataService: env.DATA_SERVICE,
|
|
559
|
-
queueService: env.QUEUE_SERVICE
|
|
950
|
+
queueService: env.QUEUE_SERVICE,
|
|
951
|
+
functionsAiService: env.FUNCTIONS_AI_SERVICE
|
|
560
952
|
});
|
|
561
953
|
await client.open();
|
|
562
954
|
return client;
|
|
@@ -570,22 +962,14 @@ var FunctionRouteValue = /* @__PURE__ */ (function(FunctionRouteValue2) {
|
|
|
570
962
|
})({});
|
|
571
963
|
|
|
572
964
|
// src/wrap-handler-for-cloudflare.ts
|
|
573
|
-
import { invariant as
|
|
965
|
+
import { invariant as invariant7 } from "@dxos/invariant";
|
|
574
966
|
import { SpaceId as SpaceId4 } from "@dxos/keys";
|
|
575
967
|
import { log as log3 } from "@dxos/log";
|
|
576
968
|
import { EdgeResponse } from "@dxos/protocols";
|
|
577
|
-
var
|
|
969
|
+
var __dxlog_file7 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
|
|
578
970
|
var wrapHandlerForCloudflare = (func) => {
|
|
579
971
|
return async (request, env) => {
|
|
580
972
|
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
973
|
return handleFunctionMetaCall(func, request);
|
|
590
974
|
}
|
|
591
975
|
try {
|
|
@@ -597,7 +981,7 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
597
981
|
});
|
|
598
982
|
}
|
|
599
983
|
}
|
|
600
|
-
const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE);
|
|
984
|
+
const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE, env.FUNCTIONS_AI_SERVICE);
|
|
601
985
|
const context = await createFunctionContext({
|
|
602
986
|
serviceContainer,
|
|
603
987
|
contextSpaceId: spaceId
|
|
@@ -608,8 +992,8 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
608
992
|
error,
|
|
609
993
|
stack: error.stack
|
|
610
994
|
}, {
|
|
611
|
-
F:
|
|
612
|
-
L:
|
|
995
|
+
F: __dxlog_file7,
|
|
996
|
+
L: 44,
|
|
613
997
|
S: void 0,
|
|
614
998
|
C: (f, a) => f(...a)
|
|
615
999
|
});
|
|
@@ -646,8 +1030,8 @@ var decodeRequest = async (request) => {
|
|
|
646
1030
|
};
|
|
647
1031
|
} catch (err) {
|
|
648
1032
|
log3.catch(err, void 0, {
|
|
649
|
-
F:
|
|
650
|
-
L:
|
|
1033
|
+
F: __dxlog_file7,
|
|
1034
|
+
L: 79,
|
|
651
1035
|
S: void 0,
|
|
652
1036
|
C: (f, a) => f(...a)
|
|
653
1037
|
});
|
|
@@ -674,7 +1058,7 @@ var handleFunctionMetaCall = (functionDefinition, request) => {
|
|
|
674
1058
|
});
|
|
675
1059
|
};
|
|
676
1060
|
var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
677
|
-
const { dataService, queryService, queueService } = await serviceContainer.createServices();
|
|
1061
|
+
const { dataService, queryService, queueService, functionsAiService } = await serviceContainer.createServices();
|
|
678
1062
|
let spaceKey;
|
|
679
1063
|
let rootUrl;
|
|
680
1064
|
if (contextSpaceId) {
|
|
@@ -683,9 +1067,9 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
683
1067
|
throw new Error(`Space not found: ${contextSpaceId}`);
|
|
684
1068
|
}
|
|
685
1069
|
spaceKey = meta.spaceKey;
|
|
686
|
-
|
|
687
|
-
F:
|
|
688
|
-
L:
|
|
1070
|
+
invariant7(!meta.rootDocumentId.startsWith("automerge:"), void 0, {
|
|
1071
|
+
F: __dxlog_file7,
|
|
1072
|
+
L: 117,
|
|
689
1073
|
S: void 0,
|
|
690
1074
|
A: [
|
|
691
1075
|
"!meta.rootDocumentId.startsWith('automerge:')",
|
|
@@ -698,7 +1082,8 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
698
1082
|
services: {
|
|
699
1083
|
dataService,
|
|
700
1084
|
queryService,
|
|
701
|
-
queueService
|
|
1085
|
+
queueService,
|
|
1086
|
+
functionsAiService
|
|
702
1087
|
},
|
|
703
1088
|
spaceId: contextSpaceId,
|
|
704
1089
|
spaceKey,
|