@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
|
@@ -3,14 +3,85 @@ import { createRequire } from 'node:module';const require = createRequire(import
|
|
|
3
3
|
// src/functions-client.ts
|
|
4
4
|
import { Resource as Resource2 } from "@dxos/context";
|
|
5
5
|
import { EchoClient } from "@dxos/echo-db";
|
|
6
|
-
import { invariant as
|
|
6
|
+
import { invariant as invariant6 } from "@dxos/invariant";
|
|
7
7
|
|
|
8
8
|
// src/internal/data-service-impl.ts
|
|
9
9
|
import { Stream } from "@dxos/codec-protobuf/stream";
|
|
10
10
|
import { raise } from "@dxos/debug";
|
|
11
|
+
import { NotImplementedError, RuntimeServiceError } from "@dxos/errors";
|
|
11
12
|
import { invariant } from "@dxos/invariant";
|
|
12
13
|
import { SpaceId } from "@dxos/keys";
|
|
13
14
|
import { log } from "@dxos/log";
|
|
15
|
+
|
|
16
|
+
// src/internal/utils.ts
|
|
17
|
+
var copyUint8Array = (value) => new Uint8Array(value);
|
|
18
|
+
|
|
19
|
+
// src/internal/data-service-impl.ts
|
|
20
|
+
function _ts_add_disposable_resource(env, value, async) {
|
|
21
|
+
if (value !== null && value !== void 0) {
|
|
22
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
23
|
+
var dispose, inner;
|
|
24
|
+
if (async) {
|
|
25
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
26
|
+
dispose = value[Symbol.asyncDispose];
|
|
27
|
+
}
|
|
28
|
+
if (dispose === void 0) {
|
|
29
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
30
|
+
dispose = value[Symbol.dispose];
|
|
31
|
+
if (async) inner = dispose;
|
|
32
|
+
}
|
|
33
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
34
|
+
if (inner) dispose = function() {
|
|
35
|
+
try {
|
|
36
|
+
inner.call(this);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return Promise.reject(e);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
env.stack.push({
|
|
42
|
+
value,
|
|
43
|
+
dispose,
|
|
44
|
+
async
|
|
45
|
+
});
|
|
46
|
+
} else if (async) {
|
|
47
|
+
env.stack.push({
|
|
48
|
+
async: true
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
function _ts_dispose_resources(env) {
|
|
54
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
55
|
+
var e = new Error(message);
|
|
56
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
57
|
+
};
|
|
58
|
+
return (_ts_dispose_resources = function _ts_dispose_resources5(env2) {
|
|
59
|
+
function fail(e) {
|
|
60
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
61
|
+
env2.hasError = true;
|
|
62
|
+
}
|
|
63
|
+
var r, s = 0;
|
|
64
|
+
function next() {
|
|
65
|
+
while (r = env2.stack.pop()) {
|
|
66
|
+
try {
|
|
67
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
68
|
+
if (r.dispose) {
|
|
69
|
+
var result = r.dispose.call(r.value);
|
|
70
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
71
|
+
fail(e);
|
|
72
|
+
return next();
|
|
73
|
+
});
|
|
74
|
+
} else s |= 1;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
fail(e);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
80
|
+
if (env2.hasError) throw env2.error;
|
|
81
|
+
}
|
|
82
|
+
return next();
|
|
83
|
+
})(env);
|
|
84
|
+
}
|
|
14
85
|
var __dxlog_file = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/data-service-impl.ts";
|
|
15
86
|
var DataServiceImpl = class {
|
|
16
87
|
_executionContext;
|
|
@@ -24,7 +95,7 @@ var DataServiceImpl = class {
|
|
|
24
95
|
return new Stream(({ next }) => {
|
|
25
96
|
invariant(SpaceId.isValid(spaceId), void 0, {
|
|
26
97
|
F: __dxlog_file,
|
|
27
|
-
L:
|
|
98
|
+
L: 39,
|
|
28
99
|
S: this,
|
|
29
100
|
A: [
|
|
30
101
|
"SpaceId.isValid(spaceId)",
|
|
@@ -40,74 +111,141 @@ var DataServiceImpl = class {
|
|
|
40
111
|
};
|
|
41
112
|
});
|
|
42
113
|
}
|
|
43
|
-
async updateSubscription({ subscriptionId, addIds
|
|
44
|
-
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new
|
|
114
|
+
async updateSubscription({ subscriptionId, addIds }) {
|
|
115
|
+
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new RuntimeServiceError({
|
|
116
|
+
message: "Subscription not found.",
|
|
117
|
+
context: {
|
|
118
|
+
subscriptionId
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
45
121
|
if (addIds) {
|
|
46
122
|
log.info("request documents", {
|
|
47
123
|
count: addIds.length
|
|
48
124
|
}, {
|
|
49
125
|
F: __dxlog_file,
|
|
50
|
-
L:
|
|
126
|
+
L: 59,
|
|
51
127
|
S: this,
|
|
52
128
|
C: (f, a) => f(...a)
|
|
53
129
|
});
|
|
54
130
|
for (const documentId of addIds) {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (!document) {
|
|
67
|
-
log.warn("not found", {
|
|
68
|
-
documentId
|
|
131
|
+
const env = {
|
|
132
|
+
stack: [],
|
|
133
|
+
error: void 0,
|
|
134
|
+
hasError: false
|
|
135
|
+
};
|
|
136
|
+
try {
|
|
137
|
+
const document = _ts_add_disposable_resource(env, await this._dataService.getDocument(this._executionContext, sub.spaceId, documentId), false);
|
|
138
|
+
log.info("document loaded", {
|
|
139
|
+
documentId,
|
|
140
|
+
spaceId: sub.spaceId,
|
|
141
|
+
found: !!document
|
|
69
142
|
}, {
|
|
70
143
|
F: __dxlog_file,
|
|
71
|
-
L:
|
|
144
|
+
L: 63,
|
|
72
145
|
S: this,
|
|
73
146
|
C: (f, a) => f(...a)
|
|
74
147
|
});
|
|
75
|
-
|
|
148
|
+
if (!document) {
|
|
149
|
+
log.warn("not found", {
|
|
150
|
+
documentId
|
|
151
|
+
}, {
|
|
152
|
+
F: __dxlog_file,
|
|
153
|
+
L: 65,
|
|
154
|
+
S: this,
|
|
155
|
+
C: (f, a) => f(...a)
|
|
156
|
+
});
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
sub.next({
|
|
160
|
+
updates: [
|
|
161
|
+
{
|
|
162
|
+
documentId,
|
|
163
|
+
// Copy returned object to avoid hanging RPC stub
|
|
164
|
+
// See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/
|
|
165
|
+
mutation: copyUint8Array(document.data)
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
});
|
|
169
|
+
} catch (e) {
|
|
170
|
+
env.error = e;
|
|
171
|
+
env.hasError = true;
|
|
172
|
+
} finally {
|
|
173
|
+
_ts_dispose_resources(env);
|
|
76
174
|
}
|
|
77
|
-
sub.next({
|
|
78
|
-
updates: [
|
|
79
|
-
{
|
|
80
|
-
documentId,
|
|
81
|
-
mutation: document.data
|
|
82
|
-
}
|
|
83
|
-
]
|
|
84
|
-
});
|
|
85
175
|
}
|
|
86
176
|
}
|
|
87
177
|
}
|
|
178
|
+
async createDocument({ spaceId, initialValue }) {
|
|
179
|
+
const env = {
|
|
180
|
+
stack: [],
|
|
181
|
+
error: void 0,
|
|
182
|
+
hasError: false
|
|
183
|
+
};
|
|
184
|
+
try {
|
|
185
|
+
const response = _ts_add_disposable_resource(env, await this._dataService.createDocument(this._executionContext, {
|
|
186
|
+
spaceId,
|
|
187
|
+
initialValue
|
|
188
|
+
}), false);
|
|
189
|
+
return {
|
|
190
|
+
documentId: response.documentId
|
|
191
|
+
};
|
|
192
|
+
} catch (e) {
|
|
193
|
+
env.error = e;
|
|
194
|
+
env.hasError = true;
|
|
195
|
+
} finally {
|
|
196
|
+
_ts_dispose_resources(env);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
88
199
|
async update({ updates, subscriptionId }) {
|
|
89
|
-
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new
|
|
90
|
-
|
|
91
|
-
|
|
200
|
+
const sub = this.dataSubscriptions.get(subscriptionId) ?? raise(new RuntimeServiceError({
|
|
201
|
+
message: "Subscription not found.",
|
|
202
|
+
context: {
|
|
203
|
+
subscriptionId
|
|
204
|
+
}
|
|
205
|
+
}));
|
|
206
|
+
try {
|
|
207
|
+
for (const update of updates ?? []) {
|
|
208
|
+
await this._dataService.changeDocument(this._executionContext, sub.spaceId, update.documentId, update.mutation);
|
|
209
|
+
}
|
|
210
|
+
} catch (error) {
|
|
211
|
+
throw RuntimeServiceError.wrap({
|
|
212
|
+
message: "Failed to apply document updates.",
|
|
213
|
+
context: {
|
|
214
|
+
subscriptionId
|
|
215
|
+
},
|
|
216
|
+
ifTypeDiffers: true
|
|
217
|
+
})(error);
|
|
92
218
|
}
|
|
93
|
-
throw new Error("Method not implemented.");
|
|
94
219
|
}
|
|
95
220
|
async flush() {
|
|
96
221
|
}
|
|
97
|
-
subscribeSpaceSyncState(
|
|
98
|
-
throw new
|
|
222
|
+
subscribeSpaceSyncState(_request, _options) {
|
|
223
|
+
throw new NotImplementedError({
|
|
224
|
+
message: "subscribeSpaceSyncState is not implemented."
|
|
225
|
+
});
|
|
99
226
|
}
|
|
100
|
-
async getDocumentHeads({ documentIds }) {
|
|
101
|
-
throw new
|
|
227
|
+
async getDocumentHeads({ documentIds: _documentIds }) {
|
|
228
|
+
throw new NotImplementedError({
|
|
229
|
+
message: "getDocumentHeads is not implemented."
|
|
230
|
+
});
|
|
102
231
|
}
|
|
103
|
-
async reIndexHeads({ documentIds }) {
|
|
104
|
-
throw new
|
|
232
|
+
async reIndexHeads({ documentIds: _documentIds }) {
|
|
233
|
+
throw new NotImplementedError({
|
|
234
|
+
message: "reIndexHeads is not implemented."
|
|
235
|
+
});
|
|
105
236
|
}
|
|
106
237
|
async updateIndexes() {
|
|
107
|
-
|
|
238
|
+
log.error("updateIndexes is not available in EDGE env.", void 0, {
|
|
239
|
+
F: __dxlog_file,
|
|
240
|
+
L: 133,
|
|
241
|
+
S: this,
|
|
242
|
+
C: (f, a) => f(...a)
|
|
243
|
+
});
|
|
108
244
|
}
|
|
109
|
-
async waitUntilHeadsReplicated({ heads }) {
|
|
110
|
-
throw new
|
|
245
|
+
async waitUntilHeadsReplicated({ heads: _heads }) {
|
|
246
|
+
throw new NotImplementedError({
|
|
247
|
+
message: "waitUntilHeadsReplicated is not implemented."
|
|
248
|
+
});
|
|
111
249
|
}
|
|
112
250
|
};
|
|
113
251
|
|
|
@@ -115,6 +253,7 @@ var DataServiceImpl = class {
|
|
|
115
253
|
import * as Schema from "effect/Schema";
|
|
116
254
|
import { Stream as Stream2 } from "@dxos/codec-protobuf/stream";
|
|
117
255
|
import { QueryAST } from "@dxos/echo-protocol";
|
|
256
|
+
import { NotImplementedError as NotImplementedError2, RuntimeServiceError as RuntimeServiceError2 } from "@dxos/errors";
|
|
118
257
|
import { invariant as invariant3 } from "@dxos/invariant";
|
|
119
258
|
import { PublicKey } from "@dxos/keys";
|
|
120
259
|
import { SpaceId as SpaceId3 } from "@dxos/keys";
|
|
@@ -188,10 +327,76 @@ var isSimpleSelectionQuery = (query) => {
|
|
|
188
327
|
};
|
|
189
328
|
|
|
190
329
|
// src/internal/query-service-impl.ts
|
|
330
|
+
function _ts_add_disposable_resource2(env, value, async) {
|
|
331
|
+
if (value !== null && value !== void 0) {
|
|
332
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
333
|
+
var dispose, inner;
|
|
334
|
+
if (async) {
|
|
335
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
336
|
+
dispose = value[Symbol.asyncDispose];
|
|
337
|
+
}
|
|
338
|
+
if (dispose === void 0) {
|
|
339
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
340
|
+
dispose = value[Symbol.dispose];
|
|
341
|
+
if (async) inner = dispose;
|
|
342
|
+
}
|
|
343
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
344
|
+
if (inner) dispose = function() {
|
|
345
|
+
try {
|
|
346
|
+
inner.call(this);
|
|
347
|
+
} catch (e) {
|
|
348
|
+
return Promise.reject(e);
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
env.stack.push({
|
|
352
|
+
value,
|
|
353
|
+
dispose,
|
|
354
|
+
async
|
|
355
|
+
});
|
|
356
|
+
} else if (async) {
|
|
357
|
+
env.stack.push({
|
|
358
|
+
async: true
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
return value;
|
|
362
|
+
}
|
|
363
|
+
function _ts_dispose_resources2(env) {
|
|
364
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
365
|
+
var e = new Error(message);
|
|
366
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
367
|
+
};
|
|
368
|
+
return (_ts_dispose_resources2 = function _ts_dispose_resources5(env2) {
|
|
369
|
+
function fail(e) {
|
|
370
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
371
|
+
env2.hasError = true;
|
|
372
|
+
}
|
|
373
|
+
var r, s = 0;
|
|
374
|
+
function next() {
|
|
375
|
+
while (r = env2.stack.pop()) {
|
|
376
|
+
try {
|
|
377
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
378
|
+
if (r.dispose) {
|
|
379
|
+
var result = r.dispose.call(r.value);
|
|
380
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
381
|
+
fail(e);
|
|
382
|
+
return next();
|
|
383
|
+
});
|
|
384
|
+
} else s |= 1;
|
|
385
|
+
} catch (e) {
|
|
386
|
+
fail(e);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
390
|
+
if (env2.hasError) throw env2.error;
|
|
391
|
+
}
|
|
392
|
+
return next();
|
|
393
|
+
})(env);
|
|
394
|
+
}
|
|
191
395
|
var __dxlog_file3 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/query-service-impl.ts";
|
|
192
396
|
var QueryServiceImpl = class {
|
|
193
397
|
_executionContext;
|
|
194
398
|
_dataService;
|
|
399
|
+
_queryCount = 0;
|
|
195
400
|
constructor(_executionContext, _dataService) {
|
|
196
401
|
this._executionContext = _executionContext;
|
|
197
402
|
this._dataService = _dataService;
|
|
@@ -201,7 +406,7 @@ var QueryServiceImpl = class {
|
|
|
201
406
|
request
|
|
202
407
|
}, {
|
|
203
408
|
F: __dxlog_file3,
|
|
204
|
-
L:
|
|
409
|
+
L: 34,
|
|
205
410
|
S: this,
|
|
206
411
|
C: (f, a) => f(...a)
|
|
207
412
|
});
|
|
@@ -209,7 +414,7 @@ var QueryServiceImpl = class {
|
|
|
209
414
|
const requestedSpaceIds = getTargetSpacesForQuery(query);
|
|
210
415
|
invariant3(requestedSpaceIds.length === 1, "Only one space is supported", {
|
|
211
416
|
F: __dxlog_file3,
|
|
212
|
-
L:
|
|
417
|
+
L: 37,
|
|
213
418
|
S: this,
|
|
214
419
|
A: [
|
|
215
420
|
"requestedSpaceIds.length === 1",
|
|
@@ -219,53 +424,81 @@ var QueryServiceImpl = class {
|
|
|
219
424
|
const spaceId = requestedSpaceIds[0];
|
|
220
425
|
return Stream2.fromPromise((async () => {
|
|
221
426
|
try {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
L: 39,
|
|
227
|
-
S: this,
|
|
228
|
-
C: (f, a) => f(...a)
|
|
229
|
-
});
|
|
230
|
-
const queryResponse = await this._dataService.queryDocuments(this._executionContext, queryToDataServiceRequest(query));
|
|
231
|
-
log2.info("query response", {
|
|
232
|
-
spaceId,
|
|
233
|
-
filter: request.filter,
|
|
234
|
-
resultCount: queryResponse.results.length
|
|
235
|
-
}, {
|
|
236
|
-
F: __dxlog_file3,
|
|
237
|
-
L: 44,
|
|
238
|
-
S: this,
|
|
239
|
-
C: (f, a) => f(...a)
|
|
240
|
-
});
|
|
241
|
-
return {
|
|
242
|
-
results: queryResponse.results.map((object) => ({
|
|
243
|
-
id: object.objectId,
|
|
244
|
-
spaceId,
|
|
245
|
-
spaceKey: PublicKey.ZERO,
|
|
246
|
-
documentId: object.document.documentId,
|
|
247
|
-
rank: 0,
|
|
248
|
-
documentAutomerge: object.document.data
|
|
249
|
-
}))
|
|
427
|
+
const env = {
|
|
428
|
+
stack: [],
|
|
429
|
+
error: void 0,
|
|
430
|
+
hasError: false
|
|
250
431
|
};
|
|
251
|
-
|
|
432
|
+
try {
|
|
433
|
+
this._queryCount++;
|
|
434
|
+
log2.info("begin query", {
|
|
435
|
+
spaceId
|
|
436
|
+
}, {
|
|
437
|
+
F: __dxlog_file3,
|
|
438
|
+
L: 44,
|
|
439
|
+
S: this,
|
|
440
|
+
C: (f, a) => f(...a)
|
|
441
|
+
});
|
|
442
|
+
const queryResponse = _ts_add_disposable_resource2(env, await this._dataService.queryDocuments(this._executionContext, queryToDataServiceRequest(query)), false);
|
|
443
|
+
log2.info("query response", {
|
|
444
|
+
spaceId,
|
|
445
|
+
filter: request.filter,
|
|
446
|
+
resultCount: queryResponse.results.length
|
|
447
|
+
}, {
|
|
448
|
+
F: __dxlog_file3,
|
|
449
|
+
L: 49,
|
|
450
|
+
S: this,
|
|
451
|
+
C: (f, a) => f(...a)
|
|
452
|
+
});
|
|
453
|
+
return {
|
|
454
|
+
results: queryResponse.results.map((object) => ({
|
|
455
|
+
id: object.objectId,
|
|
456
|
+
spaceId,
|
|
457
|
+
spaceKey: PublicKey.ZERO,
|
|
458
|
+
documentId: object.document.documentId,
|
|
459
|
+
// Rank 1 for predicate matches where ranking is not determined.
|
|
460
|
+
rank: 1,
|
|
461
|
+
// Copy returned object to avoid hanging RPC stub.
|
|
462
|
+
// See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/
|
|
463
|
+
documentAutomerge: copyUint8Array(object.document.data)
|
|
464
|
+
}))
|
|
465
|
+
};
|
|
466
|
+
} catch (e) {
|
|
467
|
+
env.error = e;
|
|
468
|
+
env.hasError = true;
|
|
469
|
+
} finally {
|
|
470
|
+
_ts_dispose_resources2(env);
|
|
471
|
+
}
|
|
472
|
+
} catch (error) {
|
|
252
473
|
log2.error("query failed", {
|
|
253
|
-
err
|
|
474
|
+
err: error
|
|
254
475
|
}, {
|
|
255
476
|
F: __dxlog_file3,
|
|
256
|
-
L:
|
|
477
|
+
L: 66,
|
|
257
478
|
S: this,
|
|
258
479
|
C: (f, a) => f(...a)
|
|
259
480
|
});
|
|
260
|
-
throw
|
|
481
|
+
throw new RuntimeServiceError2({
|
|
482
|
+
message: `Query execution failed (queryCount=${this._queryCount})`,
|
|
483
|
+
context: {
|
|
484
|
+
spaceId,
|
|
485
|
+
filter: request.filter,
|
|
486
|
+
queryCount: this._queryCount
|
|
487
|
+
},
|
|
488
|
+
cause: error
|
|
489
|
+
});
|
|
261
490
|
}
|
|
262
491
|
})());
|
|
263
492
|
}
|
|
264
493
|
async reindex() {
|
|
265
|
-
throw new
|
|
494
|
+
throw new NotImplementedError2({
|
|
495
|
+
message: "Reindex is not implemented."
|
|
496
|
+
});
|
|
266
497
|
}
|
|
267
498
|
async setConfig() {
|
|
268
|
-
throw new
|
|
499
|
+
throw new NotImplementedError2({
|
|
500
|
+
message: "SetConfig is not implemented."
|
|
501
|
+
});
|
|
269
502
|
}
|
|
270
503
|
};
|
|
271
504
|
var getTargetSpacesForQuery = (query) => {
|
|
@@ -286,6 +519,74 @@ var getTargetSpacesForQuery = (query) => {
|
|
|
286
519
|
};
|
|
287
520
|
|
|
288
521
|
// src/internal/queue-service-impl.ts
|
|
522
|
+
import { NotImplementedError as NotImplementedError3, RuntimeServiceError as RuntimeServiceError3 } from "@dxos/errors";
|
|
523
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
524
|
+
function _ts_add_disposable_resource3(env, value, async) {
|
|
525
|
+
if (value !== null && value !== void 0) {
|
|
526
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
527
|
+
var dispose, inner;
|
|
528
|
+
if (async) {
|
|
529
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
530
|
+
dispose = value[Symbol.asyncDispose];
|
|
531
|
+
}
|
|
532
|
+
if (dispose === void 0) {
|
|
533
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
534
|
+
dispose = value[Symbol.dispose];
|
|
535
|
+
if (async) inner = dispose;
|
|
536
|
+
}
|
|
537
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
538
|
+
if (inner) dispose = function() {
|
|
539
|
+
try {
|
|
540
|
+
inner.call(this);
|
|
541
|
+
} catch (e) {
|
|
542
|
+
return Promise.reject(e);
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
env.stack.push({
|
|
546
|
+
value,
|
|
547
|
+
dispose,
|
|
548
|
+
async
|
|
549
|
+
});
|
|
550
|
+
} else if (async) {
|
|
551
|
+
env.stack.push({
|
|
552
|
+
async: true
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
return value;
|
|
556
|
+
}
|
|
557
|
+
function _ts_dispose_resources3(env) {
|
|
558
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
559
|
+
var e = new Error(message);
|
|
560
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
561
|
+
};
|
|
562
|
+
return (_ts_dispose_resources3 = function _ts_dispose_resources5(env2) {
|
|
563
|
+
function fail(e) {
|
|
564
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
565
|
+
env2.hasError = true;
|
|
566
|
+
}
|
|
567
|
+
var r, s = 0;
|
|
568
|
+
function next() {
|
|
569
|
+
while (r = env2.stack.pop()) {
|
|
570
|
+
try {
|
|
571
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
572
|
+
if (r.dispose) {
|
|
573
|
+
var result = r.dispose.call(r.value);
|
|
574
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
575
|
+
fail(e);
|
|
576
|
+
return next();
|
|
577
|
+
});
|
|
578
|
+
} else s |= 1;
|
|
579
|
+
} catch (e) {
|
|
580
|
+
fail(e);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
584
|
+
if (env2.hasError) throw env2.error;
|
|
585
|
+
}
|
|
586
|
+
return next();
|
|
587
|
+
})(env);
|
|
588
|
+
}
|
|
589
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/internal/queue-service-impl.ts";
|
|
289
590
|
var QueueServiceImpl = class {
|
|
290
591
|
_ctx;
|
|
291
592
|
_queueService;
|
|
@@ -293,29 +594,177 @@ var QueueServiceImpl = class {
|
|
|
293
594
|
this._ctx = _ctx;
|
|
294
595
|
this._queueService = _queueService;
|
|
295
596
|
}
|
|
296
|
-
queryQueue(
|
|
297
|
-
|
|
597
|
+
async queryQueue(request) {
|
|
598
|
+
const { query } = request;
|
|
599
|
+
const { queueIds, ...filter } = query;
|
|
600
|
+
const spaceId = query.spaceId;
|
|
601
|
+
const queueId = queueIds?.[0];
|
|
602
|
+
invariant4(request.query.queuesNamespace, void 0, {
|
|
603
|
+
F: __dxlog_file4,
|
|
604
|
+
L: 26,
|
|
605
|
+
S: this,
|
|
606
|
+
A: [
|
|
607
|
+
"request.query.queuesNamespace",
|
|
608
|
+
""
|
|
609
|
+
]
|
|
610
|
+
});
|
|
611
|
+
try {
|
|
612
|
+
const env = {
|
|
613
|
+
stack: [],
|
|
614
|
+
error: void 0,
|
|
615
|
+
hasError: false
|
|
616
|
+
};
|
|
617
|
+
try {
|
|
618
|
+
const result = _ts_add_disposable_resource3(env, await this._queueService.query(this._ctx, `dxn:queue:${request.query.queuesNamespace}:${spaceId}:${queueId}`, filter), false);
|
|
619
|
+
return {
|
|
620
|
+
// Copy returned object to avoid hanging RPC stub
|
|
621
|
+
// See https://developers.cloudflare.com/workers/runtime-apis/rpc/lifecycle/
|
|
622
|
+
objects: structuredClone(result.objects),
|
|
623
|
+
nextCursor: result.nextCursor,
|
|
624
|
+
prevCursor: result.prevCursor
|
|
625
|
+
};
|
|
626
|
+
} catch (e) {
|
|
627
|
+
env.error = e;
|
|
628
|
+
env.hasError = true;
|
|
629
|
+
} finally {
|
|
630
|
+
_ts_dispose_resources3(env);
|
|
631
|
+
}
|
|
632
|
+
} catch (error) {
|
|
633
|
+
throw RuntimeServiceError3.wrap({
|
|
634
|
+
message: "Queue query failed.",
|
|
635
|
+
context: {
|
|
636
|
+
subspaceTag: request.query.queuesNamespace,
|
|
637
|
+
spaceId,
|
|
638
|
+
queueId
|
|
639
|
+
},
|
|
640
|
+
ifTypeDiffers: true
|
|
641
|
+
})(error);
|
|
642
|
+
}
|
|
298
643
|
}
|
|
299
|
-
insertIntoQueue(
|
|
300
|
-
|
|
644
|
+
async insertIntoQueue(request) {
|
|
645
|
+
const { subspaceTag, spaceId, queueId, objects } = request;
|
|
646
|
+
try {
|
|
647
|
+
await this._queueService.append(this._ctx, `dxn:queue:${subspaceTag}:${spaceId}:${queueId}`, objects ?? []);
|
|
648
|
+
} catch (error) {
|
|
649
|
+
throw RuntimeServiceError3.wrap({
|
|
650
|
+
message: "Queue append failed.",
|
|
651
|
+
context: {
|
|
652
|
+
subspaceTag,
|
|
653
|
+
spaceId,
|
|
654
|
+
queueId
|
|
655
|
+
},
|
|
656
|
+
ifTypeDiffers: true
|
|
657
|
+
})(error);
|
|
658
|
+
}
|
|
301
659
|
}
|
|
302
|
-
deleteFromQueue(
|
|
303
|
-
|
|
660
|
+
deleteFromQueue(request) {
|
|
661
|
+
const { subspaceTag, spaceId, queueId } = request;
|
|
662
|
+
throw new NotImplementedError3({
|
|
663
|
+
message: "Deleting from queue is not supported.",
|
|
664
|
+
context: {
|
|
665
|
+
subspaceTag,
|
|
666
|
+
spaceId,
|
|
667
|
+
queueId
|
|
668
|
+
}
|
|
669
|
+
});
|
|
304
670
|
}
|
|
305
671
|
};
|
|
306
672
|
|
|
307
673
|
// src/internal/service-container.ts
|
|
674
|
+
function _ts_add_disposable_resource4(env, value, async) {
|
|
675
|
+
if (value !== null && value !== void 0) {
|
|
676
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
677
|
+
var dispose, inner;
|
|
678
|
+
if (async) {
|
|
679
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
680
|
+
dispose = value[Symbol.asyncDispose];
|
|
681
|
+
}
|
|
682
|
+
if (dispose === void 0) {
|
|
683
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
684
|
+
dispose = value[Symbol.dispose];
|
|
685
|
+
if (async) inner = dispose;
|
|
686
|
+
}
|
|
687
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
688
|
+
if (inner) dispose = function() {
|
|
689
|
+
try {
|
|
690
|
+
inner.call(this);
|
|
691
|
+
} catch (e) {
|
|
692
|
+
return Promise.reject(e);
|
|
693
|
+
}
|
|
694
|
+
};
|
|
695
|
+
env.stack.push({
|
|
696
|
+
value,
|
|
697
|
+
dispose,
|
|
698
|
+
async
|
|
699
|
+
});
|
|
700
|
+
} else if (async) {
|
|
701
|
+
env.stack.push({
|
|
702
|
+
async: true
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
return value;
|
|
706
|
+
}
|
|
707
|
+
function _ts_dispose_resources4(env) {
|
|
708
|
+
var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
|
|
709
|
+
var e = new Error(message);
|
|
710
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
711
|
+
};
|
|
712
|
+
return (_ts_dispose_resources4 = function _ts_dispose_resources5(env2) {
|
|
713
|
+
function fail(e) {
|
|
714
|
+
env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e;
|
|
715
|
+
env2.hasError = true;
|
|
716
|
+
}
|
|
717
|
+
var r, s = 0;
|
|
718
|
+
function next() {
|
|
719
|
+
while (r = env2.stack.pop()) {
|
|
720
|
+
try {
|
|
721
|
+
if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next);
|
|
722
|
+
if (r.dispose) {
|
|
723
|
+
var result = r.dispose.call(r.value);
|
|
724
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
|
|
725
|
+
fail(e);
|
|
726
|
+
return next();
|
|
727
|
+
});
|
|
728
|
+
} else s |= 1;
|
|
729
|
+
} catch (e) {
|
|
730
|
+
fail(e);
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve();
|
|
734
|
+
if (env2.hasError) throw env2.error;
|
|
735
|
+
}
|
|
736
|
+
return next();
|
|
737
|
+
})(env);
|
|
738
|
+
}
|
|
308
739
|
var ServiceContainer = class {
|
|
309
740
|
_executionContext;
|
|
310
741
|
_dataService;
|
|
311
742
|
_queueService;
|
|
312
|
-
|
|
743
|
+
_functionsService;
|
|
744
|
+
constructor(_executionContext, _dataService, _queueService, _functionsService) {
|
|
313
745
|
this._executionContext = _executionContext;
|
|
314
746
|
this._dataService = _dataService;
|
|
315
747
|
this._queueService = _queueService;
|
|
748
|
+
this._functionsService = _functionsService;
|
|
316
749
|
}
|
|
317
750
|
async getSpaceMeta(spaceId) {
|
|
318
|
-
|
|
751
|
+
const env = {
|
|
752
|
+
stack: [],
|
|
753
|
+
error: void 0,
|
|
754
|
+
hasError: false
|
|
755
|
+
};
|
|
756
|
+
try {
|
|
757
|
+
const result = _ts_add_disposable_resource4(env, await this._dataService.getSpaceMeta(this._executionContext, spaceId), false);
|
|
758
|
+
return result ? {
|
|
759
|
+
spaceKey: result.spaceKey,
|
|
760
|
+
rootDocumentId: result.rootDocumentId
|
|
761
|
+
} : void 0;
|
|
762
|
+
} catch (e) {
|
|
763
|
+
env.error = e;
|
|
764
|
+
env.hasError = true;
|
|
765
|
+
} finally {
|
|
766
|
+
_ts_dispose_resources4(env);
|
|
767
|
+
}
|
|
319
768
|
}
|
|
320
769
|
async createServices() {
|
|
321
770
|
const dataService = new DataServiceImpl(this._executionContext, this._dataService);
|
|
@@ -324,20 +773,41 @@ var ServiceContainer = class {
|
|
|
324
773
|
return {
|
|
325
774
|
dataService,
|
|
326
775
|
queryService,
|
|
327
|
-
queueService
|
|
776
|
+
queueService,
|
|
777
|
+
functionsAiService: this._functionsService
|
|
328
778
|
};
|
|
329
779
|
}
|
|
330
|
-
queryQueue(queue) {
|
|
331
|
-
|
|
780
|
+
async queryQueue(queue) {
|
|
781
|
+
const env = {
|
|
782
|
+
stack: [],
|
|
783
|
+
error: void 0,
|
|
784
|
+
hasError: false
|
|
785
|
+
};
|
|
786
|
+
try {
|
|
787
|
+
const { spaceId } = queue.asQueueDXN() ?? {};
|
|
788
|
+
const result = _ts_add_disposable_resource4(env, await this._queueService.query({}, queue.toString(), {
|
|
789
|
+
spaceId
|
|
790
|
+
}), false);
|
|
791
|
+
return {
|
|
792
|
+
objects: structuredClone(result.objects),
|
|
793
|
+
nextCursor: result.nextCursor ?? null,
|
|
794
|
+
prevCursor: result.prevCursor ?? null
|
|
795
|
+
};
|
|
796
|
+
} catch (e) {
|
|
797
|
+
env.error = e;
|
|
798
|
+
env.hasError = true;
|
|
799
|
+
} finally {
|
|
800
|
+
_ts_dispose_resources4(env);
|
|
801
|
+
}
|
|
332
802
|
}
|
|
333
|
-
insertIntoQueue(queue, objects) {
|
|
334
|
-
|
|
803
|
+
async insertIntoQueue(queue, objects) {
|
|
804
|
+
await this._queueService.append({}, queue.toString(), objects);
|
|
335
805
|
}
|
|
336
806
|
};
|
|
337
807
|
|
|
338
808
|
// src/space-proxy.ts
|
|
339
809
|
import { Resource } from "@dxos/context";
|
|
340
|
-
import { invariant as
|
|
810
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
341
811
|
import { PublicKey as PublicKey2 } from "@dxos/keys";
|
|
342
812
|
|
|
343
813
|
// src/queues-api.ts
|
|
@@ -357,7 +827,7 @@ var QueuesAPIImpl = class {
|
|
|
357
827
|
};
|
|
358
828
|
|
|
359
829
|
// src/space-proxy.ts
|
|
360
|
-
var
|
|
830
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/space-proxy.ts";
|
|
361
831
|
var SpaceProxy = class extends Resource {
|
|
362
832
|
_serviceContainer;
|
|
363
833
|
_echoClient;
|
|
@@ -372,9 +842,9 @@ var SpaceProxy = class extends Resource {
|
|
|
372
842
|
return this._id;
|
|
373
843
|
}
|
|
374
844
|
get db() {
|
|
375
|
-
|
|
376
|
-
F:
|
|
377
|
-
L:
|
|
845
|
+
invariant5(this._db, void 0, {
|
|
846
|
+
F: __dxlog_file5,
|
|
847
|
+
L: 35,
|
|
378
848
|
S: this,
|
|
379
849
|
A: [
|
|
380
850
|
"this._db",
|
|
@@ -387,9 +857,9 @@ var SpaceProxy = class extends Resource {
|
|
|
387
857
|
* @deprecated Use db API.
|
|
388
858
|
*/
|
|
389
859
|
get crud() {
|
|
390
|
-
|
|
391
|
-
F:
|
|
392
|
-
L:
|
|
860
|
+
invariant5(this._db, void 0, {
|
|
861
|
+
F: __dxlog_file5,
|
|
862
|
+
L: 43,
|
|
393
863
|
S: this,
|
|
394
864
|
A: [
|
|
395
865
|
"this._db",
|
|
@@ -419,7 +889,7 @@ var SpaceProxy = class extends Resource {
|
|
|
419
889
|
};
|
|
420
890
|
|
|
421
891
|
// src/functions-client.ts
|
|
422
|
-
var
|
|
892
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/functions-client.ts";
|
|
423
893
|
var FunctionsClient = class extends Resource2 {
|
|
424
894
|
_serviceContainer;
|
|
425
895
|
_echoClient;
|
|
@@ -427,25 +897,25 @@ var FunctionsClient = class extends Resource2 {
|
|
|
427
897
|
_spaces = /* @__PURE__ */ new Map();
|
|
428
898
|
constructor(services) {
|
|
429
899
|
super();
|
|
430
|
-
|
|
431
|
-
F:
|
|
432
|
-
L:
|
|
900
|
+
invariant6(typeof services.dataService !== "undefined", "DataService is required", {
|
|
901
|
+
F: __dxlog_file6,
|
|
902
|
+
L: 33,
|
|
433
903
|
S: this,
|
|
434
904
|
A: [
|
|
435
905
|
"typeof services.dataService !== 'undefined'",
|
|
436
906
|
"'DataService is required'"
|
|
437
907
|
]
|
|
438
908
|
});
|
|
439
|
-
|
|
440
|
-
F:
|
|
441
|
-
L:
|
|
909
|
+
invariant6(typeof services.queueService !== "undefined", "QueueService is required", {
|
|
910
|
+
F: __dxlog_file6,
|
|
911
|
+
L: 34,
|
|
442
912
|
S: this,
|
|
443
913
|
A: [
|
|
444
914
|
"typeof services.queueService !== 'undefined'",
|
|
445
915
|
"'QueueService is required'"
|
|
446
916
|
]
|
|
447
917
|
});
|
|
448
|
-
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService);
|
|
918
|
+
this._serviceContainer = new ServiceContainer(this._executionContext, services.dataService, services.queueService, services.functionsAiService);
|
|
449
919
|
this._echoClient = new EchoClient({});
|
|
450
920
|
}
|
|
451
921
|
get echo() {
|
|
@@ -479,7 +949,8 @@ var FunctionsClient = class extends Resource2 {
|
|
|
479
949
|
var createClientFromEnv = async (env) => {
|
|
480
950
|
const client = new FunctionsClient({
|
|
481
951
|
dataService: env.DATA_SERVICE,
|
|
482
|
-
queueService: env.QUEUE_SERVICE
|
|
952
|
+
queueService: env.QUEUE_SERVICE,
|
|
953
|
+
functionsAiService: env.FUNCTIONS_AI_SERVICE
|
|
483
954
|
});
|
|
484
955
|
await client.open();
|
|
485
956
|
return client;
|
|
@@ -493,22 +964,14 @@ var FunctionRouteValue = /* @__PURE__ */ (function(FunctionRouteValue2) {
|
|
|
493
964
|
})({});
|
|
494
965
|
|
|
495
966
|
// src/wrap-handler-for-cloudflare.ts
|
|
496
|
-
import { invariant as
|
|
967
|
+
import { invariant as invariant7 } from "@dxos/invariant";
|
|
497
968
|
import { SpaceId as SpaceId4 } from "@dxos/keys";
|
|
498
969
|
import { log as log3 } from "@dxos/log";
|
|
499
970
|
import { EdgeResponse } from "@dxos/protocols";
|
|
500
|
-
var
|
|
971
|
+
var __dxlog_file7 = "/__w/dxos/dxos/packages/core/functions-runtime-cloudflare/src/wrap-handler-for-cloudflare.ts";
|
|
501
972
|
var wrapHandlerForCloudflare = (func) => {
|
|
502
973
|
return async (request, env) => {
|
|
503
974
|
if (request.headers.get(FUNCTION_ROUTE_HEADER) === FunctionRouteValue.Meta) {
|
|
504
|
-
log3.info(">>> meta", {
|
|
505
|
-
func
|
|
506
|
-
}, {
|
|
507
|
-
F: __dxlog_file6,
|
|
508
|
-
L: 25,
|
|
509
|
-
S: void 0,
|
|
510
|
-
C: (f, a) => f(...a)
|
|
511
|
-
});
|
|
512
975
|
return handleFunctionMetaCall(func, request);
|
|
513
976
|
}
|
|
514
977
|
try {
|
|
@@ -520,7 +983,7 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
520
983
|
});
|
|
521
984
|
}
|
|
522
985
|
}
|
|
523
|
-
const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE);
|
|
986
|
+
const serviceContainer = new ServiceContainer({}, env.DATA_SERVICE, env.QUEUE_SERVICE, env.FUNCTIONS_AI_SERVICE);
|
|
524
987
|
const context = await createFunctionContext({
|
|
525
988
|
serviceContainer,
|
|
526
989
|
contextSpaceId: spaceId
|
|
@@ -531,8 +994,8 @@ var wrapHandlerForCloudflare = (func) => {
|
|
|
531
994
|
error,
|
|
532
995
|
stack: error.stack
|
|
533
996
|
}, {
|
|
534
|
-
F:
|
|
535
|
-
L:
|
|
997
|
+
F: __dxlog_file7,
|
|
998
|
+
L: 44,
|
|
536
999
|
S: void 0,
|
|
537
1000
|
C: (f, a) => f(...a)
|
|
538
1001
|
});
|
|
@@ -569,8 +1032,8 @@ var decodeRequest = async (request) => {
|
|
|
569
1032
|
};
|
|
570
1033
|
} catch (err) {
|
|
571
1034
|
log3.catch(err, void 0, {
|
|
572
|
-
F:
|
|
573
|
-
L:
|
|
1035
|
+
F: __dxlog_file7,
|
|
1036
|
+
L: 79,
|
|
574
1037
|
S: void 0,
|
|
575
1038
|
C: (f, a) => f(...a)
|
|
576
1039
|
});
|
|
@@ -597,7 +1060,7 @@ var handleFunctionMetaCall = (functionDefinition, request) => {
|
|
|
597
1060
|
});
|
|
598
1061
|
};
|
|
599
1062
|
var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
600
|
-
const { dataService, queryService, queueService } = await serviceContainer.createServices();
|
|
1063
|
+
const { dataService, queryService, queueService, functionsAiService } = await serviceContainer.createServices();
|
|
601
1064
|
let spaceKey;
|
|
602
1065
|
let rootUrl;
|
|
603
1066
|
if (contextSpaceId) {
|
|
@@ -606,9 +1069,9 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
606
1069
|
throw new Error(`Space not found: ${contextSpaceId}`);
|
|
607
1070
|
}
|
|
608
1071
|
spaceKey = meta.spaceKey;
|
|
609
|
-
|
|
610
|
-
F:
|
|
611
|
-
L:
|
|
1072
|
+
invariant7(!meta.rootDocumentId.startsWith("automerge:"), void 0, {
|
|
1073
|
+
F: __dxlog_file7,
|
|
1074
|
+
L: 117,
|
|
612
1075
|
S: void 0,
|
|
613
1076
|
A: [
|
|
614
1077
|
"!meta.rootDocumentId.startsWith('automerge:')",
|
|
@@ -621,19 +1084,56 @@ var createFunctionContext = async ({ serviceContainer, contextSpaceId }) => {
|
|
|
621
1084
|
services: {
|
|
622
1085
|
dataService,
|
|
623
1086
|
queryService,
|
|
624
|
-
queueService
|
|
1087
|
+
queueService,
|
|
1088
|
+
functionsAiService
|
|
625
1089
|
},
|
|
626
1090
|
spaceId: contextSpaceId,
|
|
627
1091
|
spaceKey,
|
|
628
1092
|
spaceRootUrl: rootUrl
|
|
629
1093
|
};
|
|
630
1094
|
};
|
|
1095
|
+
|
|
1096
|
+
// src/logger.ts
|
|
1097
|
+
import { LogLevel, log as log4, shouldLog } from "@dxos/log";
|
|
1098
|
+
var setupFunctionsLogger = () => {
|
|
1099
|
+
log4.runtimeConfig.processors.length = 0;
|
|
1100
|
+
log4.runtimeConfig.processors.push(functionLogProcessor);
|
|
1101
|
+
};
|
|
1102
|
+
var functionLogProcessor = (config, entry) => {
|
|
1103
|
+
if (!shouldLog(entry, config.filters)) {
|
|
1104
|
+
return;
|
|
1105
|
+
}
|
|
1106
|
+
switch (entry.level) {
|
|
1107
|
+
case LogLevel.DEBUG:
|
|
1108
|
+
console.debug(entry.message, entry.context);
|
|
1109
|
+
break;
|
|
1110
|
+
case LogLevel.TRACE:
|
|
1111
|
+
console.debug(entry.message, entry.context);
|
|
1112
|
+
break;
|
|
1113
|
+
case LogLevel.VERBOSE:
|
|
1114
|
+
console.log(entry.message, entry.context);
|
|
1115
|
+
break;
|
|
1116
|
+
case LogLevel.INFO:
|
|
1117
|
+
console.info(entry.message, entry.context);
|
|
1118
|
+
break;
|
|
1119
|
+
case LogLevel.WARN:
|
|
1120
|
+
console.warn(entry.message, entry.context);
|
|
1121
|
+
break;
|
|
1122
|
+
case LogLevel.ERROR:
|
|
1123
|
+
console.error(entry.message, entry.context);
|
|
1124
|
+
break;
|
|
1125
|
+
default:
|
|
1126
|
+
console.log(entry.message, entry.context);
|
|
1127
|
+
break;
|
|
1128
|
+
}
|
|
1129
|
+
};
|
|
631
1130
|
export {
|
|
632
1131
|
FUNCTION_ROUTE_HEADER,
|
|
633
1132
|
FunctionRouteValue,
|
|
634
1133
|
FunctionsClient,
|
|
635
1134
|
ServiceContainer,
|
|
636
1135
|
createClientFromEnv,
|
|
1136
|
+
setupFunctionsLogger,
|
|
637
1137
|
wrapHandlerForCloudflare
|
|
638
1138
|
};
|
|
639
1139
|
//# sourceMappingURL=index.mjs.map
|