@dxos/functions-runtime-cloudflare 0.8.4-main.7ace549 → 0.8.4-main.937b3ca
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 +628 -128
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +628 -128
- 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/index.d.ts +1 -0
- package/dist/types/src/index.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 +1 -0
- 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 +2 -0
- package/dist/types/src/logger.d.ts.map +1 -0
- 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 -15
- package/src/functions-client.ts +8 -1
- package/src/index.ts +1 -0
- package/src/internal/data-service-impl.ts +66 -17
- package/src/internal/query-service-impl.ts +24 -8
- package/src/internal/queue-service-impl.ts +54 -8
- package/src/internal/service-container.ts +25 -6
- package/src/internal/utils.ts +5 -0
- package/src/logger.ts +42 -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,14 +1,85 @@
|
|
|
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";
|
|
8
8
|
import { raise } from "@dxos/debug";
|
|
9
|
+
import { NotImplementedError, RuntimeServiceError } from "@dxos/errors";
|
|
9
10
|
import { invariant } from "@dxos/invariant";
|
|
10
11
|
import { SpaceId } from "@dxos/keys";
|
|
11
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
|
+
}
|
|
12
83
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
|
|
13
84
|
var DataServiceImpl = class {
|
|
14
85
|
_executionContext;
|
|
@@ -22,7 +93,7 @@ var DataServiceImpl = class {
|
|
|
22
93
|
return new Stream(({ next }) => {
|
|
23
94
|
invariant(SpaceId.isValid(spaceId), void 0, {
|
|
24
95
|
F: __dxlog_file,
|
|
25
|
-
L:
|
|
96
|
+
L: 39,
|
|
26
97
|
S: this,
|
|
27
98
|
A: [
|
|
28
99
|
"SpaceId.isValid(spaceId)",
|
|
@@ -38,74 +109,141 @@ var DataServiceImpl = class {
|
|
|
38
109
|
};
|
|
39
110
|
});
|
|
40
111
|
}
|
|
41
|
-
async updateSubscription({ subscriptionId, addIds
|
|
42
|
-
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new
|
|
112
|
+
async updateSubscription({ subscriptionId, addIds }) {
|
|
113
|
+
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new RuntimeServiceError({
|
|
114
|
+
message: "Subscription not found.",
|
|
115
|
+
context: {
|
|
116
|
+
subscriptionId
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
43
119
|
if (addIds) {
|
|
44
120
|
log.info("request documents", {
|
|
45
121
|
count: addIds.length
|
|
46
122
|
}, {
|
|
47
123
|
F: __dxlog_file,
|
|
48
|
-
L:
|
|
124
|
+
L: 59,
|
|
49
125
|
S: this,
|
|
50
126
|
C: (f, a) => f(...a)
|
|
51
127
|
});
|
|
52
128
|
for (const documentId of addIds) {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (!document) {
|
|
65
|
-
log.warn("not found", {
|
|
66
|
-
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
|
|
67
140
|
}, {
|
|
68
141
|
F: __dxlog_file,
|
|
69
|
-
L:
|
|
142
|
+
L: 63,
|
|
70
143
|
S: this,
|
|
71
144
|
C: (f, a) => f(...a)
|
|
72
145
|
});
|
|
73
|
-
|
|
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);
|
|
74
172
|
}
|
|
75
|
-
sub.next({
|
|
76
|
-
updates: [
|
|
77
|
-
{
|
|
78
|
-
documentId,
|
|
79
|
-
mutation: document.data
|
|
80
|
-
}
|
|
81
|
-
]
|
|
82
|
-
});
|
|
83
173
|
}
|
|
84
174
|
}
|
|
85
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
|
+
}
|
|
86
197
|
async update({ updates, subscriptionId }) {
|
|
87
|
-
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new
|
|
88
|
-
|
|
89
|
-
|
|
198
|
+
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new RuntimeServiceError({
|
|
199
|
+
message: "Subscription not found.",
|
|
200
|
+
context: {
|
|
201
|
+
subscriptionId
|
|
202
|
+
}
|
|
203
|
+
}));
|
|
204
|
+
try {
|
|
205
|
+
for (const update of updates ?? []) {
|
|
206
|
+
await this._dataService.changeDocument(this._executionContext, sub.spaceId, update.documentId, update.mutation);
|
|
207
|
+
}
|
|
208
|
+
} catch (error) {
|
|
209
|
+
throw RuntimeServiceError.wrap({
|
|
210
|
+
message: "Failed to apply document updates.",
|
|
211
|
+
context: {
|
|
212
|
+
subscriptionId
|
|
213
|
+
},
|
|
214
|
+
ifTypeDiffers: true
|
|
215
|
+
})(error);
|
|
90
216
|
}
|
|
91
|
-
throw new Error("Method not implemented.");
|
|
92
217
|
}
|
|
93
218
|
async flush() {
|
|
94
219
|
}
|
|
95
|
-
subscribeSpaceSyncState(
|
|
96
|
-
throw new
|
|
220
|
+
subscribeSpaceSyncState(_request, _options) {
|
|
221
|
+
throw new NotImplementedError({
|
|
222
|
+
message: "subscribeSpaceSyncState is not implemented."
|
|
223
|
+
});
|
|
97
224
|
}
|
|
98
|
-
async getDocumentHeads({ documentIds }) {
|
|
99
|
-
throw new
|
|
225
|
+
async getDocumentHeads({ documentIds: _documentIds }) {
|
|
226
|
+
throw new NotImplementedError({
|
|
227
|
+
message: "getDocumentHeads is not implemented."
|
|
228
|
+
});
|
|
100
229
|
}
|
|
101
|
-
async reIndexHeads({ documentIds }) {
|
|
102
|
-
throw new
|
|
230
|
+
async reIndexHeads({ documentIds: _documentIds }) {
|
|
231
|
+
throw new NotImplementedError({
|
|
232
|
+
message: "reIndexHeads is not implemented."
|
|
233
|
+
});
|
|
103
234
|
}
|
|
104
235
|
async updateIndexes() {
|
|
105
|
-
|
|
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)
|
|
241
|
+
});
|
|
106
242
|
}
|
|
107
|
-
async waitUntilHeadsReplicated({ heads }) {
|
|
108
|
-
throw new
|
|
243
|
+
async waitUntilHeadsReplicated({ heads: _heads }) {
|
|
244
|
+
throw new NotImplementedError({
|
|
245
|
+
message: "waitUntilHeadsReplicated is not implemented."
|
|
246
|
+
});
|
|
109
247
|
}
|
|
110
248
|
};
|
|
111
249
|
|
|
@@ -113,6 +251,7 @@ var DataServiceImpl = class {
|
|
|
113
251
|
import * as Schema from "effect/Schema";
|
|
114
252
|
import { Stream as Stream2 } from "@dxos/codec-protobuf/stream";
|
|
115
253
|
import { QueryAST } from "@dxos/echo-protocol";
|
|
254
|
+
import { NotImplementedError as NotImplementedError2, RuntimeServiceError as RuntimeServiceError2 } from "@dxos/errors";
|
|
116
255
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
117
256
|
import { PublicKey } from "@dxos/keys";
|
|
118
257
|
import { SpaceId as SpaceId3 } from "@dxos/keys";
|
|
@@ -186,10 +325,76 @@ var isSimpleSelectionQuery = (query) => {
|
|
|
186
325
|
};
|
|
187
326
|
|
|
188
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
|
+
}
|
|
189
393
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
|
|
190
394
|
var QueryServiceImpl = class {
|
|
191
395
|
_executionContext;
|
|
192
396
|
_dataService;
|
|
397
|
+
_queryCount = 0;
|
|
193
398
|
constructor(_executionContext, _dataService) {
|
|
194
399
|
this._executionContext = _executionContext;
|
|
195
400
|
this._dataService = _dataService;
|
|
@@ -199,7 +404,7 @@ var QueryServiceImpl = class {
|
|
|
199
404
|
request
|
|
200
405
|
}, {
|
|
201
406
|
F: __dxlog_file3,
|
|
202
|
-
L:
|
|
407
|
+
L: 34,
|
|
203
408
|
S: this,
|
|
204
409
|
C: (f, a) => f(...a)
|
|
205
410
|
});
|
|
@@ -207,7 +412,7 @@ var QueryServiceImpl = class {
|
|
|
207
412
|
const requestedSpaceIds = getTargetSpacesForQuery(query);
|
|
208
413
|
invariant3(requestedSpaceIds.length === 1, "Only one space is supported", {
|
|
209
414
|
F: __dxlog_file3,
|
|
210
|
-
L:
|
|
415
|
+
L: 37,
|
|
211
416
|
S: this,
|
|
212
417
|
A: [
|
|
213
418
|
"requestedSpaceIds.length === 1",
|
|
@@ -217,53 +422,81 @@ var QueryServiceImpl = class {
|
|
|
217
422
|
const spaceId = requestedSpaceIds[0];
|
|
218
423
|
return Stream2.fromPromise((async () => {
|
|
219
424
|
try {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
L: 39,
|
|
225
|
-
S: this,
|
|
226
|
-
C: (f, a) => f(...a)
|
|
227
|
-
});
|
|
228
|
-
const queryResponse = await this._dataService.queryDocuments(this._executionContext, queryToDataServiceRequest(query));
|
|
229
|
-
log2.info("query response", {
|
|
230
|
-
spaceId,
|
|
231
|
-
filter: request.filter,
|
|
232
|
-
resultCount: queryResponse.results.length
|
|
233
|
-
}, {
|
|
234
|
-
F: __dxlog_file3,
|
|
235
|
-
L: 44,
|
|
236
|
-
S: this,
|
|
237
|
-
C: (f, a) => f(...a)
|
|
238
|
-
});
|
|
239
|
-
return {
|
|
240
|
-
results: queryResponse.results.map((object) => ({
|
|
241
|
-
id: object.objectId,
|
|
242
|
-
spaceId,
|
|
243
|
-
spaceKey: PublicKey.ZERO,
|
|
244
|
-
documentId: object.document.documentId,
|
|
245
|
-
rank: 0,
|
|
246
|
-
documentAutomerge: object.document.data
|
|
247
|
-
}))
|
|
425
|
+
const env = {
|
|
426
|
+
stack: [],
|
|
427
|
+
error: void 0,
|
|
428
|
+
hasError: false
|
|
248
429
|
};
|
|
249
|
-
|
|
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
|
+
}
|
|
470
|
+
} catch (error) {
|
|
250
471
|
log2.error("query failed", {
|
|
251
|
-
err
|
|
472
|
+
err: error
|
|
252
473
|
}, {
|
|
253
474
|
F: __dxlog_file3,
|
|
254
|
-
L:
|
|
475
|
+
L: 66,
|
|
255
476
|
S: this,
|
|
256
477
|
C: (f, a) => f(...a)
|
|
257
478
|
});
|
|
258
|
-
throw
|
|
479
|
+
throw new RuntimeServiceError2({
|
|
480
|
+
message: `Query execution failed (queryCount=${this._queryCount})`,
|
|
481
|
+
context: {
|
|
482
|
+
spaceId,
|
|
483
|
+
filter: request.filter,
|
|
484
|
+
queryCount: this._queryCount
|
|
485
|
+
},
|
|
486
|
+
cause: error
|
|
487
|
+
});
|
|
259
488
|
}
|
|
260
489
|
})());
|
|
261
490
|
}
|
|
262
491
|
async reindex() {
|
|
263
|
-
throw new
|
|
492
|
+
throw new NotImplementedError2({
|
|
493
|
+
message: "Reindex is not implemented."
|
|
494
|
+
});
|
|
264
495
|
}
|
|
265
496
|
async setConfig() {
|
|
266
|
-
throw new
|
|
497
|
+
throw new NotImplementedError2({
|
|
498
|
+
message: "SetConfig is not implemented."
|
|
499
|
+
});
|
|
267
500
|
}
|
|
268
501
|
};
|
|
269
502
|
var getTargetSpacesForQuery = (query) => {
|
|
@@ -284,6 +517,74 @@ var getTargetSpacesForQuery = (query) => {
|
|
|
284
517
|
};
|
|
285
518
|
|
|
286
519
|
// src/internal/queue-service-impl.ts
|
|
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";
|
|
287
588
|
var QueueServiceImpl = class {
|
|
288
589
|
_ctx;
|
|
289
590
|
_queueService;
|
|
@@ -291,29 +592,177 @@ var QueueServiceImpl = class {
|
|
|
291
592
|
this._ctx = _ctx;
|
|
292
593
|
this._queueService = _queueService;
|
|
293
594
|
}
|
|
294
|
-
queryQueue(
|
|
295
|
-
|
|
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
|
+
});
|
|
609
|
+
try {
|
|
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
|
+
}
|
|
630
|
+
} catch (error) {
|
|
631
|
+
throw RuntimeServiceError3.wrap({
|
|
632
|
+
message: "Queue query failed.",
|
|
633
|
+
context: {
|
|
634
|
+
subspaceTag: request.query.queuesNamespace,
|
|
635
|
+
spaceId,
|
|
636
|
+
queueId
|
|
637
|
+
},
|
|
638
|
+
ifTypeDiffers: true
|
|
639
|
+
})(error);
|
|
640
|
+
}
|
|
296
641
|
}
|
|
297
|
-
insertIntoQueue(
|
|
298
|
-
|
|
642
|
+
async insertIntoQueue(request) {
|
|
643
|
+
const { subspaceTag, spaceId, queueId, objects } = request;
|
|
644
|
+
try {
|
|
645
|
+
await this._queueService.append(this._ctx, `dxn:queue:${subspaceTag}:${spaceId}:${queueId}`, objects ?? []);
|
|
646
|
+
} catch (error) {
|
|
647
|
+
throw RuntimeServiceError3.wrap({
|
|
648
|
+
message: "Queue append failed.",
|
|
649
|
+
context: {
|
|
650
|
+
subspaceTag,
|
|
651
|
+
spaceId,
|
|
652
|
+
queueId
|
|
653
|
+
},
|
|
654
|
+
ifTypeDiffers: true
|
|
655
|
+
})(error);
|
|
656
|
+
}
|
|
299
657
|
}
|
|
300
|
-
deleteFromQueue(
|
|
301
|
-
|
|
658
|
+
deleteFromQueue(request) {
|
|
659
|
+
const { subspaceTag, spaceId, queueId } = request;
|
|
660
|
+
throw new NotImplementedError3({
|
|
661
|
+
message: "Deleting from queue is not supported.",
|
|
662
|
+
context: {
|
|
663
|
+
subspaceTag,
|
|
664
|
+
spaceId,
|
|
665
|
+
queueId
|
|
666
|
+
}
|
|
667
|
+
});
|
|
302
668
|
}
|
|
303
669
|
};
|
|
304
670
|
|
|
305
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
|
+
}
|
|
306
737
|
var ServiceContainer = class {
|
|
307
738
|
_executionContext;
|
|
308
739
|
_dataService;
|
|
309
740
|
_queueService;
|
|
310
|
-
|
|
741
|
+
_functionsService;
|
|
742
|
+
constructor(_executionContext, _dataService, _queueService, _functionsService) {
|
|
311
743
|
this._executionContext = _executionContext;
|
|
312
744
|
this._dataService = _dataService;
|
|
313
745
|
this._queueService = _queueService;
|
|
746
|
+
this._functionsService = _functionsService;
|
|
314
747
|
}
|
|
315
748
|
async getSpaceMeta(spaceId) {
|
|
316
|
-
|
|
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
|
+
}
|
|
317
766
|
}
|
|
318
767
|
async createServices() {
|
|
319
768
|
const dataService = new DataServiceImpl(this._executionContext, this._dataService);
|
|
@@ -322,20 +771,41 @@ var ServiceContainer = class {
|
|
|
322
771
|
return {
|
|
323
772
|
dataService,
|
|
324
773
|
queryService,
|
|
325
|
-
queueService
|
|
774
|
+
queueService,
|
|
775
|
+
functionsAiService: this._functionsService
|
|
326
776
|
};
|
|
327
777
|
}
|
|
328
|
-
queryQueue(queue) {
|
|
329
|
-
|
|
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
|
+
}
|
|
330
800
|
}
|
|
331
|
-
insertIntoQueue(queue, objects) {
|
|
332
|
-
|
|
801
|
+
async insertIntoQueue(queue, objects) {
|
|
802
|
+
await this._queueService.append({}, queue.toString(), objects);
|
|
333
803
|
}
|
|
334
804
|
};
|
|
335
805
|
|
|
336
806
|
// src/space-proxy.ts
|
|
337
807
|
import { Resource } from "@dxos/context";
|
|
338
|
-
import { invariant as
|
|
808
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
339
809
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
340
810
|
|
|
341
811
|
// src/queues-api.ts
|
|
@@ -355,7 +825,7 @@ var QueuesAPIImpl = class {
|
|
|
355
825
|
};
|
|
356
826
|
|
|
357
827
|
// src/space-proxy.ts
|
|
358
|
-
var
|
|
828
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/space-proxy.ts";
|
|
359
829
|
var SpaceProxy = class extends Resource {
|
|
360
830
|
_serviceContainer;
|
|
361
831
|
_echoClient;
|
|
@@ -370,9 +840,9 @@ var SpaceProxy = class extends Resource {
|
|
|
370
840
|
return this._id;
|
|
371
841
|
}
|
|
372
842
|
get db() {
|
|
373
|
-
|
|
374
|
-
F:
|
|
375
|
-
L:
|
|
843
|
+
invariant5(this._db, void 0, {
|
|
844
|
+
F: __dxlog_file5,
|
|
845
|
+
L: 35,
|
|
376
846
|
S: this,
|
|
377
847
|
A: [
|
|
378
848
|
"this._db",
|
|
@@ -385,9 +855,9 @@ var SpaceProxy = class extends Resource {
|
|
|
385
855
|
* @deprecated Use db API.
|
|
386
856
|
*/
|
|
387
857
|
get crud() {
|
|
388
|
-
|
|
389
|
-
F:
|
|
390
|
-
L:
|
|
858
|
+
invariant5(this._db, void 0, {
|
|
859
|
+
F: __dxlog_file5,
|
|
860
|
+
L: 43,
|
|
391
861
|
S: this,
|
|
392
862
|
A: [
|
|
393
863
|
"this._db",
|
|
@@ -417,7 +887,7 @@ var SpaceProxy = class extends Resource {
|
|
|
417
887
|
};
|
|
418
888
|
|
|
419
889
|
// src/functions-client.ts
|
|
420
|
-
var
|
|
890
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/functions-client.ts";
|
|
421
891
|
var FunctionsClient = class extends Resource2 {
|
|
422
892
|
_serviceContainer;
|
|
423
893
|
_echoClient;
|
|
@@ -425,25 +895,25 @@ var FunctionsClient = class extends Resource2 {
|
|
|
425
895
|
_spaces = /* @__PURE__ */ new Map();
|
|
426
896
|
constructor(services) {
|
|
427
897
|
super();
|
|
428
|
-
|
|
429
|
-
F:
|
|
430
|
-
L:
|
|
898
|
+
invariant6(typeof services.dataService !== "undefined", "DataService is required", {
|
|
899
|
+
F: __dxlog_file6,
|
|
900
|
+
L: 33,
|
|
431
901
|
S: this,
|
|
432
902
|
A: [
|
|
433
903
|
"typeof services.dataService !== 'undefined'",
|
|
434
904
|
"'DataService is required'"
|
|
435
905
|
]
|
|
436
906
|
});
|
|
437
|
-
|
|
438
|
-
F:
|
|
439
|
-
L:
|
|
907
|
+
invariant6(typeof services.queueService !== "undefined", "QueueService is required", {
|
|
908
|
+
F: __dxlog_file6,
|
|
909
|
+
L: 34,
|
|
440
910
|
S: this,
|
|
441
911
|
A: [
|
|
442
912
|
"typeof services.queueService !== 'undefined'",
|
|
443
913
|
"'QueueService is required'"
|
|
444
914
|
]
|
|
445
915
|
});
|
|
446
|
-
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService);
|
|
916
|
+
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService, services.functionsAiService);
|
|
447
917
|
this._echoClient = new EchoClient({});
|
|
448
918
|
}
|
|
449
919
|
get echo() {
|
|
@@ -477,7 +947,8 @@ var FunctionsClient = class extends Resource2 {
|
|
|
477
947
|
var createClientFromEnv = async (env) => {
|
|
478
948
|
const client = new FunctionsClient({
|
|
479
949
|
dataService: env.DATA_SERVICE,
|
|
480
|
-
queueService: env.QUEUE_SERVICE
|
|
950
|
+
queueService: env.QUEUE_SERVICE,
|
|
951
|
+
functionsAiService: env.FUNCTIONS_AI_SERVICE
|
|
481
952
|
});
|
|
482
953
|
await client.open();
|
|
483
954
|
return client;
|
|
@@ -491,22 +962,14 @@ var FunctionRouteValue = /* @__PURE__ */ (function(FunctionRouteValue2) {
|
|
|
491
962
|
})({});
|
|
492
963
|
|
|
493
964
|
// src/wrap-handler-for-cloudflare.ts
|
|
494
|
-
import { invariant as
|
|
965
|
+
import { invariant as invariant7 } from "@dxos/invariant";
|
|
495
966
|
import { SpaceId as SpaceId4 } from "@dxos/keys";
|
|
496
967
|
import { log as log3 } from "@dxos/log";
|
|
497
968
|
import { EdgeResponse } from "@dxos/protocols";
|
|
498
|
-
var
|
|
969
|
+
var __dxlog_file7 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
|
|
499
970
|
var wrapHandlerForCloudflare = (func) => {
|
|
500
971
|
return async (request, env) => {
|
|
501
972
|
if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {
|
|
502
|
-
log3.info(">>> meta", {
|
|
503
|
-
func
|
|
504
|
-
}, {
|
|
505
|
-
F: __dxlog_file6,
|
|
506
|
-
L: 25,
|
|
507
|
-
S: void 0,
|
|
508
|
-
C: (f, a) => f(...a)
|
|
509
|
-
});
|
|
510
973
|
return handleFunctionMetaCall(func, request);
|
|
511
974
|
}
|
|
512
975
|
try {
|
|
@@ -518,7 +981,7 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
518
981
|
});
|
|
519
982
|
}
|
|
520
983
|
}
|
|
521
|
-
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);
|
|
522
985
|
const context = await createFunctionContext({
|
|
523
986
|
serviceContainer,
|
|
524
987
|
contextSpaceId: spaceId
|
|
@@ -529,8 +992,8 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
529
992
|
error,
|
|
530
993
|
stack: error.stack
|
|
531
994
|
}, {
|
|
532
|
-
F:
|
|
533
|
-
L:
|
|
995
|
+
F: __dxlog_file7,
|
|
996
|
+
L: 44,
|
|
534
997
|
S: void 0,
|
|
535
998
|
C: (f, a) => f(...a)
|
|
536
999
|
});
|
|
@@ -567,8 +1030,8 @@ var decodeRequest = async (request) => {
|
|
|
567
1030
|
};
|
|
568
1031
|
} catch (err) {
|
|
569
1032
|
log3.catch(err, void 0, {
|
|
570
|
-
F:
|
|
571
|
-
L:
|
|
1033
|
+
F: __dxlog_file7,
|
|
1034
|
+
L: 79,
|
|
572
1035
|
S: void 0,
|
|
573
1036
|
C: (f, a) => f(...a)
|
|
574
1037
|
});
|
|
@@ -595,7 +1058,7 @@ var handleFunctionMetaCall = (functionDefinition, request) => {
|
|
|
595
1058
|
});
|
|
596
1059
|
};
|
|
597
1060
|
var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
598
|
-
const { dataService, queryService, queueService } = await serviceContainer.createServices();
|
|
1061
|
+
const { dataService, queryService, queueService, functionsAiService } = await serviceContainer.createServices();
|
|
599
1062
|
let spaceKey;
|
|
600
1063
|
let rootUrl;
|
|
601
1064
|
if (contextSpaceId) {
|
|
@@ -604,9 +1067,9 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
604
1067
|
throw new Error(`Space not found: ${contextSpaceId}`);
|
|
605
1068
|
}
|
|
606
1069
|
spaceKey = meta.spaceKey;
|
|
607
|
-
|
|
608
|
-
F:
|
|
609
|
-
L:
|
|
1070
|
+
invariant7(!meta.rootDocumentId.startsWith("automerge:"), void 0, {
|
|
1071
|
+
F: __dxlog_file7,
|
|
1072
|
+
L: 117,
|
|
610
1073
|
S: void 0,
|
|
611
1074
|
A: [
|
|
612
1075
|
"!meta.rootDocumentId.startsWith('automerge:')",
|
|
@@ -619,19 +1082,56 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
619
1082
|
services: {
|
|
620
1083
|
dataService,
|
|
621
1084
|
queryService,
|
|
622
|
-
queueService
|
|
1085
|
+
queueService,
|
|
1086
|
+
functionsAiService
|
|
623
1087
|
},
|
|
624
1088
|
spaceId: contextSpaceId,
|
|
625
1089
|
spaceKey,
|
|
626
1090
|
spaceRootUrl: rootUrl
|
|
627
1091
|
};
|
|
628
1092
|
};
|
|
1093
|
+
|
|
1094
|
+
// src/logger.ts
|
|
1095
|
+
import { LogLevel, log as log4, shouldLog } from "@dxos/log";
|
|
1096
|
+
var setupFunctionsLogger = () => {
|
|
1097
|
+
log4.runtimeConfig.processors.length = 0;
|
|
1098
|
+
log4.runtimeConfig.processors.push(functionLogProcessor);
|
|
1099
|
+
};
|
|
1100
|
+
var functionLogProcessor = (config, entry) => {
|
|
1101
|
+
if (!shouldLog(entry, config.filters)) {
|
|
1102
|
+
return;
|
|
1103
|
+
}
|
|
1104
|
+
switch (entry.level) {
|
|
1105
|
+
case LogLevel.DEBUG:
|
|
1106
|
+
console.debug(entry.message, entry.context);
|
|
1107
|
+
break;
|
|
1108
|
+
case LogLevel.TRACE:
|
|
1109
|
+
console.debug(entry.message, entry.context);
|
|
1110
|
+
break;
|
|
1111
|
+
case LogLevel.VERBOSE:
|
|
1112
|
+
console.log(entry.message, entry.context);
|
|
1113
|
+
break;
|
|
1114
|
+
case LogLevel.INFO:
|
|
1115
|
+
console.info(entry.message, entry.context);
|
|
1116
|
+
break;
|
|
1117
|
+
case LogLevel.WARN:
|
|
1118
|
+
console.warn(entry.message, entry.context);
|
|
1119
|
+
break;
|
|
1120
|
+
case LogLevel.ERROR:
|
|
1121
|
+
console.error(entry.message, entry.context);
|
|
1122
|
+
break;
|
|
1123
|
+
default:
|
|
1124
|
+
console.log(entry.message, entry.context);
|
|
1125
|
+
break;
|
|
1126
|
+
}
|
|
1127
|
+
};
|
|
629
1128
|
export {
|
|
630
1129
|
FUNCTION_ROUTE_HEADER,
|
|
631
1130
|
FunctionRouteValue,
|
|
632
1131
|
FunctionsClient,
|
|
633
1132
|
ServiceContainer,
|
|
634
1133
|
createClientFromEnv,
|
|
1134
|
+
setupFunctionsLogger,
|
|
635
1135
|
wrapHandlerForCloudflare
|
|
636
1136
|
};
|
|
637
1137
|
//# sourceMappingURL=index.mjs.map
|