@dxos/effect 0.8.4-main.72ec0f3 → 0.8.4-main.765dc60934
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/browser/chunk-CGS2ULMK.mjs +11 -0
- package/dist/lib/browser/chunk-CGS2ULMK.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +439 -283
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing.mjs +31 -0
- package/dist/lib/browser/testing.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +439 -283
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing.mjs +31 -0
- package/dist/lib/node-esm/testing.mjs.map +7 -0
- package/dist/types/src/Performance.d.ts +25 -0
- package/dist/types/src/Performance.d.ts.map +1 -0
- package/dist/types/src/RuntimeProvider.d.ts +21 -0
- package/dist/types/src/RuntimeProvider.d.ts.map +1 -0
- package/dist/types/src/ast.d.ts +40 -21
- package/dist/types/src/ast.d.ts.map +1 -1
- package/dist/types/src/async-task-tagging.d.ts +6 -0
- package/dist/types/src/async-task-tagging.d.ts.map +1 -0
- package/dist/types/src/atom-kvs.d.ts +19 -0
- package/dist/types/src/atom-kvs.d.ts.map +1 -0
- package/dist/types/src/dynamic-runtime.d.ts +56 -0
- package/dist/types/src/dynamic-runtime.d.ts.map +1 -0
- package/dist/types/src/dynamic-runtime.test.d.ts +2 -0
- package/dist/types/src/dynamic-runtime.test.d.ts.map +1 -0
- package/dist/types/src/errors.d.ts +12 -0
- package/dist/types/src/errors.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +8 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/{jsonPath.d.ts → json-path.d.ts} +11 -3
- package/dist/types/src/json-path.d.ts.map +1 -0
- package/dist/types/src/json-path.test.d.ts +2 -0
- package/dist/types/src/json-path.test.d.ts.map +1 -0
- package/dist/types/src/resource.d.ts.map +1 -1
- package/dist/types/src/testing.d.ts +3 -12
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +8 -0
- package/dist/types/src/types.d.ts.map +1 -0
- package/dist/types/src/url.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +33 -21
- package/src/Performance.ts +45 -0
- package/src/RuntimeProvider.ts +35 -0
- package/src/ast.test.ts +35 -8
- package/src/ast.ts +109 -91
- package/src/async-task-tagging.ts +51 -0
- package/src/atom-kvs.ts +35 -0
- package/src/dynamic-runtime.test.ts +465 -0
- package/src/dynamic-runtime.ts +195 -0
- package/src/errors.ts +69 -8
- package/src/index.ts +8 -3
- package/src/interrupt.test.ts +3 -1
- package/src/{jsonPath.test.ts → json-path.test.ts} +47 -8
- package/src/{jsonPath.ts → json-path.ts} +26 -3
- package/src/layers.test.ts +4 -2
- package/src/resource.ts +2 -2
- package/src/sanity.test.ts +6 -4
- package/src/testing.ts +3 -27
- package/src/types.ts +11 -0
- package/dist/types/src/jsonPath.d.ts.map +0 -1
- package/dist/types/src/jsonPath.test.d.ts +0 -2
- package/dist/types/src/jsonPath.test.d.ts.map +0 -1
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
|
+
import {
|
|
3
|
+
__export
|
|
4
|
+
} from "./chunk-CGS2ULMK.mjs";
|
|
2
5
|
|
|
3
6
|
// src/ast.ts
|
|
4
7
|
import * as Function from "effect/Function";
|
|
@@ -7,66 +10,59 @@ import * as Schema from "effect/Schema";
|
|
|
7
10
|
import * as SchemaAST from "effect/SchemaAST";
|
|
8
11
|
import { invariant } from "@dxos/invariant";
|
|
9
12
|
import { isNonNullable } from "@dxos/util";
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
if (SchemaAST.isBooleanKeyword(node)) {
|
|
26
|
-
return "boolean";
|
|
27
|
-
}
|
|
28
|
-
if (SchemaAST.isEnums(node)) {
|
|
29
|
-
return "enum";
|
|
30
|
-
}
|
|
31
|
-
if (SchemaAST.isLiteral(node)) {
|
|
32
|
-
return "literal";
|
|
13
|
+
var reduceRefinements = (type, refinements = []) => {
|
|
14
|
+
if (SchemaAST.isRefinement(type)) {
|
|
15
|
+
const filter = type.filter;
|
|
16
|
+
const nextType = {
|
|
17
|
+
...type.from,
|
|
18
|
+
annotations: {
|
|
19
|
+
...type.from.annotations,
|
|
20
|
+
...type.annotations
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
return reduceRefinements(nextType, [
|
|
24
|
+
...refinements,
|
|
25
|
+
filter
|
|
26
|
+
]);
|
|
33
27
|
}
|
|
28
|
+
return {
|
|
29
|
+
type,
|
|
30
|
+
refinements
|
|
31
|
+
};
|
|
34
32
|
};
|
|
35
|
-
var
|
|
36
|
-
(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return {};
|
|
50
|
-
}
|
|
51
|
-
default: {
|
|
52
|
-
throw new Error(`Unsupported type for default value: ${type}`);
|
|
33
|
+
var getBaseType = (prop) => {
|
|
34
|
+
const encoded = SchemaAST.encodedBoundAST(prop.type);
|
|
35
|
+
const unwrapped = prop.isOptional && encoded._tag === "Union" ? encoded.types[0] : encoded;
|
|
36
|
+
return reduceRefinements(unwrapped);
|
|
37
|
+
};
|
|
38
|
+
var getProperties = (ast) => {
|
|
39
|
+
const properties = SchemaAST.getPropertySignatures(ast);
|
|
40
|
+
return properties.map((prop) => {
|
|
41
|
+
const { type, refinements } = getBaseType(prop);
|
|
42
|
+
const mergedType = prop.annotations && Reflect.ownKeys(prop.annotations).length > 0 ? {
|
|
43
|
+
...type,
|
|
44
|
+
annotations: {
|
|
45
|
+
...type.annotations,
|
|
46
|
+
...prop.annotations
|
|
53
47
|
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
48
|
+
} : type;
|
|
49
|
+
return {
|
|
50
|
+
type: mergedType,
|
|
51
|
+
refinements,
|
|
52
|
+
name: prop.name,
|
|
53
|
+
isOptional: prop.isOptional,
|
|
54
|
+
isReadonly: prop.isReadonly
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
};
|
|
57
58
|
var VisitResult = /* @__PURE__ */ (function(VisitResult2) {
|
|
58
59
|
VisitResult2[VisitResult2["CONTINUE"] = 0] = "CONTINUE";
|
|
59
60
|
VisitResult2[VisitResult2["SKIP"] = 1] = "SKIP";
|
|
60
61
|
VisitResult2[VisitResult2["EXIT"] = 2] = "EXIT";
|
|
61
62
|
return VisitResult2;
|
|
62
63
|
})({});
|
|
63
|
-
var defaultTest = isSimpleType;
|
|
64
64
|
var visit = (node, testOrVisitor, visitor) => {
|
|
65
|
-
|
|
66
|
-
visitNode(node, defaultTest, testOrVisitor);
|
|
67
|
-
} else {
|
|
68
|
-
visitNode(node, testOrVisitor, visitor);
|
|
69
|
-
}
|
|
65
|
+
visitNode(node, testOrVisitor, visitor);
|
|
70
66
|
};
|
|
71
67
|
var visitNode = (node, test, visitor, path = [], depth = 0) => {
|
|
72
68
|
const $result = test?.(node, path, depth);
|
|
@@ -154,15 +150,7 @@ var findProperty = (schema, path) => {
|
|
|
154
150
|
const getProp = (node, path2) => {
|
|
155
151
|
const [name, ...rest] = path2;
|
|
156
152
|
const typeNode = findNode(node, SchemaAST.isTypeLiteral);
|
|
157
|
-
invariant(typeNode
|
|
158
|
-
F: __dxlog_file,
|
|
159
|
-
L: 265,
|
|
160
|
-
S: void 0,
|
|
161
|
-
A: [
|
|
162
|
-
"typeNode",
|
|
163
|
-
""
|
|
164
|
-
]
|
|
165
|
-
});
|
|
153
|
+
invariant(typeNode);
|
|
166
154
|
for (const prop of SchemaAST.getPropertySignatures(typeNode)) {
|
|
167
155
|
if (prop.name === name) {
|
|
168
156
|
if (rest.length) {
|
|
@@ -176,10 +164,10 @@ var findProperty = (schema, path) => {
|
|
|
176
164
|
return getProp(schema.ast, path.split("."));
|
|
177
165
|
};
|
|
178
166
|
var defaultAnnotations = {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
167
|
+
ObjectKeyword: SchemaAST.objectKeyword,
|
|
168
|
+
StringKeyword: SchemaAST.stringKeyword,
|
|
169
|
+
NumberKeyword: SchemaAST.numberKeyword,
|
|
170
|
+
BooleanKeyword: SchemaAST.booleanKeyword
|
|
183
171
|
};
|
|
184
172
|
var getAnnotation2 = (annotationId, noDefault = true) => (node) => {
|
|
185
173
|
const id = Function.pipe(SchemaAST.getIdentifierAnnotation(node), Option.getOrUndefined);
|
|
@@ -210,19 +198,26 @@ var isOption = (node) => {
|
|
|
210
198
|
var isLiteralUnion = (node) => {
|
|
211
199
|
return SchemaAST.isUnion(node) && node.types.every(SchemaAST.isLiteral);
|
|
212
200
|
};
|
|
201
|
+
var getLiteralValues = (schema) => {
|
|
202
|
+
if (!isLiteralUnion(schema.ast)) {
|
|
203
|
+
return [];
|
|
204
|
+
}
|
|
205
|
+
return schema.ast.types.map((node) => node.literal);
|
|
206
|
+
};
|
|
207
|
+
var isArrayType = (node) => {
|
|
208
|
+
return SchemaAST.isTupleType(node) && node.elements.length === 0 && node.rest.length === 1;
|
|
209
|
+
};
|
|
210
|
+
var getArrayElementType = (node) => {
|
|
211
|
+
return isArrayType(node) ? node.rest.at(0)?.type : void 0;
|
|
212
|
+
};
|
|
213
|
+
var isTupleType2 = (node) => {
|
|
214
|
+
return SchemaAST.isTupleType(node) && node.elements.length > 0;
|
|
215
|
+
};
|
|
213
216
|
var isDiscriminatedUnion = (node) => {
|
|
214
217
|
return SchemaAST.isUnion(node) && !!getDiscriminatingProps(node)?.length;
|
|
215
218
|
};
|
|
216
219
|
var getDiscriminatingProps = (node) => {
|
|
217
|
-
invariant(SchemaAST.isUnion(node)
|
|
218
|
-
F: __dxlog_file,
|
|
219
|
-
L: 362,
|
|
220
|
-
S: void 0,
|
|
221
|
-
A: [
|
|
222
|
-
"SchemaAST.isUnion(node)",
|
|
223
|
-
""
|
|
224
|
-
]
|
|
225
|
-
});
|
|
220
|
+
invariant(SchemaAST.isUnion(node));
|
|
226
221
|
if (isOption(node)) {
|
|
227
222
|
return;
|
|
228
223
|
}
|
|
@@ -232,39 +227,15 @@ var getDiscriminatingProps = (node) => {
|
|
|
232
227
|
}, []);
|
|
233
228
|
};
|
|
234
229
|
var getDiscriminatedType = (node, value = {}) => {
|
|
235
|
-
invariant(SchemaAST.isUnion(node)
|
|
236
|
-
|
|
237
|
-
L: 386,
|
|
238
|
-
S: void 0,
|
|
239
|
-
A: [
|
|
240
|
-
"SchemaAST.isUnion(node)",
|
|
241
|
-
""
|
|
242
|
-
]
|
|
243
|
-
});
|
|
244
|
-
invariant(value, void 0, {
|
|
245
|
-
F: __dxlog_file,
|
|
246
|
-
L: 387,
|
|
247
|
-
S: void 0,
|
|
248
|
-
A: [
|
|
249
|
-
"value",
|
|
250
|
-
""
|
|
251
|
-
]
|
|
252
|
-
});
|
|
230
|
+
invariant(SchemaAST.isUnion(node));
|
|
231
|
+
invariant(value);
|
|
253
232
|
const props = getDiscriminatingProps(node);
|
|
254
233
|
if (!props?.length) {
|
|
255
234
|
return;
|
|
256
235
|
}
|
|
257
236
|
for (const type of node.types) {
|
|
258
237
|
const match = SchemaAST.getPropertySignatures(type).filter((prop) => props?.includes(prop.name.toString())).every((prop) => {
|
|
259
|
-
invariant(SchemaAST.isLiteral(prop.type)
|
|
260
|
-
F: __dxlog_file,
|
|
261
|
-
L: 398,
|
|
262
|
-
S: void 0,
|
|
263
|
-
A: [
|
|
264
|
-
"SchemaAST.isLiteral(prop.type)",
|
|
265
|
-
""
|
|
266
|
-
]
|
|
267
|
-
});
|
|
238
|
+
invariant(SchemaAST.isLiteral(prop.type));
|
|
268
239
|
return prop.type.literal === value[prop.name.toString()];
|
|
269
240
|
});
|
|
270
241
|
if (match) {
|
|
@@ -274,15 +245,7 @@ var getDiscriminatedType = (node, value = {}) => {
|
|
|
274
245
|
const fields = Object.fromEntries(props.map((prop) => {
|
|
275
246
|
const literals = node.types.map((type) => {
|
|
276
247
|
const literal = SchemaAST.getPropertySignatures(type).find((p) => p.name.toString() === prop);
|
|
277
|
-
invariant(SchemaAST.isLiteral(literal.type)
|
|
278
|
-
F: __dxlog_file,
|
|
279
|
-
L: 416,
|
|
280
|
-
S: void 0,
|
|
281
|
-
A: [
|
|
282
|
-
"SchemaAST.isLiteral(literal.type)",
|
|
283
|
-
""
|
|
284
|
-
]
|
|
285
|
-
});
|
|
248
|
+
invariant(SchemaAST.isLiteral(literal.type));
|
|
286
249
|
return literal.type.literal;
|
|
287
250
|
}).filter(isNonNullable);
|
|
288
251
|
return literals.length ? [
|
|
@@ -293,6 +256,10 @@ var getDiscriminatedType = (node, value = {}) => {
|
|
|
293
256
|
const schema = Schema.Struct(fields);
|
|
294
257
|
return schema.ast;
|
|
295
258
|
};
|
|
259
|
+
var isNestedType = (node) => {
|
|
260
|
+
return SchemaAST.isDeclaration(node) || SchemaAST.isObjectKeyword(node) || SchemaAST.isTypeLiteral(node) || // TODO(wittjosiah): Tuples are actually arrays.
|
|
261
|
+
isTupleType2(node) || isDiscriminatedUnion(node);
|
|
262
|
+
};
|
|
296
263
|
var mapAst = (ast, f) => {
|
|
297
264
|
switch (ast._tag) {
|
|
298
265
|
case "TypeLiteral": {
|
|
@@ -313,9 +280,6 @@ var mapAst = (ast, f) => {
|
|
|
313
280
|
}
|
|
314
281
|
}
|
|
315
282
|
};
|
|
316
|
-
var isArrayType = (node) => {
|
|
317
|
-
return SchemaAST.isTupleType(node) || SchemaAST.isUnion(node) && node.types.some(isArrayType) && node.types.some(SchemaAST.isUndefinedKeyword) && node.types.length === 2;
|
|
318
|
-
};
|
|
319
283
|
var getIndexSignatures = (ast) => {
|
|
320
284
|
const annotation = SchemaAST.getSurrogateAnnotation(ast);
|
|
321
285
|
if (Option.isSome(annotation)) {
|
|
@@ -331,157 +295,60 @@ var getIndexSignatures = (ast) => {
|
|
|
331
295
|
}
|
|
332
296
|
return [];
|
|
333
297
|
};
|
|
334
|
-
var SimpleType;
|
|
335
|
-
|
|
336
|
-
// src/jsonPath.ts
|
|
337
|
-
import * as Option2 from "effect/Option";
|
|
338
|
-
import * as Schema2 from "effect/Schema";
|
|
339
|
-
import { JSONPath } from "jsonpath-plus";
|
|
340
|
-
import { invariant as invariant2 } from "@dxos/invariant";
|
|
341
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/common/effect/src/jsonPath.ts";
|
|
342
|
-
var PATH_REGEX = /^($|[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*|\[\d+\](?:\.)?)*$)/;
|
|
343
|
-
var PROP_REGEX = /^\w+$/;
|
|
344
|
-
var JsonPath = Schema2.String.pipe(Schema2.pattern(PATH_REGEX)).annotations({
|
|
345
|
-
title: "JSON path",
|
|
346
|
-
description: "JSON path to a property"
|
|
347
|
-
});
|
|
348
|
-
var JsonProp = Schema2.NonEmptyString.pipe(Schema2.pattern(PROP_REGEX, {
|
|
349
|
-
message: () => "Property name must contain only letters, numbers, and underscores"
|
|
350
|
-
}));
|
|
351
|
-
var isJsonPath = (value) => {
|
|
352
|
-
return Option2.isSome(Schema2.validateOption(JsonPath)(value));
|
|
353
|
-
};
|
|
354
|
-
var createJsonPath = (path) => {
|
|
355
|
-
const candidatePath = path.map((p, i) => {
|
|
356
|
-
if (typeof p === "number") {
|
|
357
|
-
return `[${p}]`;
|
|
358
|
-
} else {
|
|
359
|
-
return i === 0 ? p : `.${p}`;
|
|
360
|
-
}
|
|
361
|
-
}).join("");
|
|
362
|
-
invariant2(isJsonPath(candidatePath), `Invalid JsonPath: ${candidatePath}`, {
|
|
363
|
-
F: __dxlog_file2,
|
|
364
|
-
L: 65,
|
|
365
|
-
S: void 0,
|
|
366
|
-
A: [
|
|
367
|
-
"isJsonPath(candidatePath)",
|
|
368
|
-
"`Invalid JsonPath: ${candidatePath}`"
|
|
369
|
-
]
|
|
370
|
-
});
|
|
371
|
-
return candidatePath;
|
|
372
|
-
};
|
|
373
|
-
var fromEffectValidationPath = (effectPath) => {
|
|
374
|
-
const jsonPath = effectPath.replace(/\.\[(\d+)\]/g, "[$1]");
|
|
375
|
-
invariant2(isJsonPath(jsonPath), `Invalid JsonPath: ${jsonPath}`, {
|
|
376
|
-
F: __dxlog_file2,
|
|
377
|
-
L: 76,
|
|
378
|
-
S: void 0,
|
|
379
|
-
A: [
|
|
380
|
-
"isJsonPath(jsonPath)",
|
|
381
|
-
"`Invalid JsonPath: ${jsonPath}`"
|
|
382
|
-
]
|
|
383
|
-
});
|
|
384
|
-
return jsonPath;
|
|
385
|
-
};
|
|
386
|
-
var splitJsonPath = (path) => {
|
|
387
|
-
if (!isJsonPath(path)) {
|
|
388
|
-
return [];
|
|
389
|
-
}
|
|
390
|
-
return path.match(/[a-zA-Z_$][\w$]*|\[\d+\]/g)?.map((part) => part.startsWith("[") ? part.replace(/[[\]]/g, "") : part) ?? [];
|
|
391
|
-
};
|
|
392
|
-
var getField = (object, path) => {
|
|
393
|
-
return JSONPath({
|
|
394
|
-
path,
|
|
395
|
-
json: object
|
|
396
|
-
})[0];
|
|
397
|
-
};
|
|
398
298
|
|
|
399
|
-
// src/
|
|
400
|
-
import
|
|
401
|
-
import * as
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
constructor(_schema) {
|
|
412
|
-
this._schema = _schema;
|
|
413
|
-
}
|
|
414
|
-
/**
|
|
415
|
-
* Parse URL params.
|
|
416
|
-
*/
|
|
417
|
-
parse(_url) {
|
|
418
|
-
const url = new URL(_url);
|
|
419
|
-
return Object.entries(this._schema.fields).reduce((params, [key, type]) => {
|
|
420
|
-
let value = url.searchParams.get(decamelize(key));
|
|
421
|
-
if (value == null) {
|
|
422
|
-
value = url.searchParams.get(key);
|
|
423
|
-
}
|
|
424
|
-
if (value != null) {
|
|
425
|
-
if (SchemaAST2.isNumberKeyword(type.ast)) {
|
|
426
|
-
params[key] = parseInt(value);
|
|
427
|
-
} else if (SchemaAST2.isBooleanKeyword(type.ast)) {
|
|
428
|
-
params[key] = value === "true" || value === "1";
|
|
429
|
-
} else {
|
|
430
|
-
params[key] = value;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
return params;
|
|
434
|
-
}, {});
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Return URL with encoded params.
|
|
438
|
-
*/
|
|
439
|
-
create(_url, params) {
|
|
440
|
-
const url = new URL(_url);
|
|
441
|
-
Object.entries(params).forEach(([key, value]) => {
|
|
442
|
-
if (value !== void 0) {
|
|
443
|
-
const field = this._schema.fields[key];
|
|
444
|
-
if (field) {
|
|
445
|
-
const { key: serializedKey } = Function2.pipe(getParamKeyAnnotation(field.ast), Option3.getOrElse(() => ({
|
|
446
|
-
key: decamelize(key)
|
|
447
|
-
})));
|
|
448
|
-
url.searchParams.set(serializedKey, String(value));
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
});
|
|
452
|
-
return url;
|
|
453
|
-
}
|
|
299
|
+
// src/atom-kvs.ts
|
|
300
|
+
import { Atom } from "@effect-atom/atom-react";
|
|
301
|
+
import * as BrowserKeyValueStore from "@effect/platform-browser/BrowserKeyValueStore";
|
|
302
|
+
var defaultRuntime = Atom.runtime(BrowserKeyValueStore.layerLocalStorage);
|
|
303
|
+
var createKvsStore = (options) => {
|
|
304
|
+
const runtime2 = options.runtime ?? defaultRuntime;
|
|
305
|
+
return Atom.kvs({
|
|
306
|
+
runtime: runtime2,
|
|
307
|
+
key: options.key,
|
|
308
|
+
schema: options.schema,
|
|
309
|
+
defaultValue: options.defaultValue
|
|
310
|
+
}).pipe(Atom.keepAlive);
|
|
454
311
|
};
|
|
455
312
|
|
|
456
313
|
// src/context.ts
|
|
457
314
|
import * as Effect from "effect/Effect";
|
|
458
315
|
import { Context } from "@dxos/context";
|
|
459
|
-
var __dxlog_file3 = "/__w/dxos/dxos/packages/common/effect/src/context.ts";
|
|
460
316
|
var contextFromScope = () => Effect.gen(function* () {
|
|
461
|
-
const ctx = new Context(
|
|
462
|
-
F: __dxlog_file3,
|
|
463
|
-
L: 13
|
|
464
|
-
});
|
|
317
|
+
const ctx = new Context();
|
|
465
318
|
yield* Effect.addFinalizer(() => Effect.promise(() => ctx.dispose()));
|
|
466
319
|
return ctx;
|
|
467
320
|
});
|
|
468
321
|
|
|
322
|
+
// src/dynamic-runtime.ts
|
|
323
|
+
var dynamic_runtime_exports = {};
|
|
324
|
+
__export(dynamic_runtime_exports, {
|
|
325
|
+
make: () => make
|
|
326
|
+
});
|
|
327
|
+
import * as Context2 from "effect/Context";
|
|
328
|
+
import * as Effect3 from "effect/Effect";
|
|
329
|
+
import * as Exit2 from "effect/Exit";
|
|
330
|
+
import * as Option3 from "effect/Option";
|
|
331
|
+
import * as Runtime2 from "effect/Runtime";
|
|
332
|
+
|
|
469
333
|
// src/errors.ts
|
|
470
334
|
import * as Cause from "effect/Cause";
|
|
471
335
|
import * as Chunk from "effect/Chunk";
|
|
472
336
|
import * as Effect2 from "effect/Effect";
|
|
473
337
|
import * as Exit from "effect/Exit";
|
|
474
338
|
import * as GlobalValue from "effect/GlobalValue";
|
|
475
|
-
import * as
|
|
476
|
-
|
|
477
|
-
var
|
|
339
|
+
import * as Option2 from "effect/Option";
|
|
340
|
+
import * as Runtime from "effect/Runtime";
|
|
341
|
+
var spanSymbol = /* @__PURE__ */ Symbol.for("effect/SpanAnnotation");
|
|
478
342
|
var spanToTrace = GlobalValue.globalValue("effect/Tracer/spanToTrace", () => /* @__PURE__ */ new WeakMap());
|
|
479
343
|
var locationRegex = /\((.*)\)/g;
|
|
480
344
|
var prettyErrorStack = (error, appendStacks = []) => {
|
|
345
|
+
if (typeof error !== "object" || error === null) {
|
|
346
|
+
return error;
|
|
347
|
+
}
|
|
481
348
|
const span = error[spanSymbol];
|
|
482
349
|
const lines = typeof error.stack === "string" ? error.stack.split("\n") : [];
|
|
483
350
|
const out = [];
|
|
484
|
-
let atStack = false;
|
|
351
|
+
let atStack = false, inCore = false, passedScheduler = false;
|
|
485
352
|
for (let i = 0; i < lines.length; i++) {
|
|
486
353
|
if (!atStack && !lines[i].startsWith(" at ")) {
|
|
487
354
|
out.push(lines[i]);
|
|
@@ -498,6 +365,26 @@ var prettyErrorStack = (error, appendStacks = []) => {
|
|
|
498
365
|
if (lines[i].includes("effect_internal_function")) {
|
|
499
366
|
break;
|
|
500
367
|
}
|
|
368
|
+
const filename = lines[i].match(/\/([a-zA-Z0-9_\-.]+):\d+:\d+\)$/)?.[1];
|
|
369
|
+
if (!inCore && [
|
|
370
|
+
"core-effect.ts"
|
|
371
|
+
].includes(filename)) {
|
|
372
|
+
inCore = true;
|
|
373
|
+
}
|
|
374
|
+
if (inCore && !passedScheduler && [
|
|
375
|
+
"Scheduler.ts"
|
|
376
|
+
].includes(filename)) {
|
|
377
|
+
passedScheduler = true;
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
if (passedScheduler && ![
|
|
381
|
+
"Scheduler.ts"
|
|
382
|
+
].includes(filename)) {
|
|
383
|
+
inCore = false;
|
|
384
|
+
}
|
|
385
|
+
if (inCore) {
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
501
388
|
out.push(lines[i].replace(/at .*effect_instruction_i.*\((.*)\)/, "at $1").replace(/EffectPrimitive\.\w+/, "<anonymous>").replace(/at Arguments\./, "at "));
|
|
502
389
|
}
|
|
503
390
|
if (span) {
|
|
@@ -523,14 +410,12 @@ var prettyErrorStack = (error, appendStacks = []) => {
|
|
|
523
410
|
} else {
|
|
524
411
|
out.push(` at ${current.name}`);
|
|
525
412
|
}
|
|
526
|
-
current =
|
|
413
|
+
current = Option2.getOrUndefined(current.parent);
|
|
527
414
|
i++;
|
|
528
415
|
}
|
|
529
416
|
}
|
|
530
417
|
out.push(...appendStacks);
|
|
531
|
-
|
|
532
|
-
error = error[originalSymbol];
|
|
533
|
-
}
|
|
418
|
+
error = Cause.originalError(error);
|
|
534
419
|
if (error.cause) {
|
|
535
420
|
error.cause = prettyErrorStack(error.cause);
|
|
536
421
|
}
|
|
@@ -553,8 +438,8 @@ var causeToError = (cause) => {
|
|
|
553
438
|
...Chunk.toArray(Cause.defects(cause))
|
|
554
439
|
];
|
|
555
440
|
const getStackFrames = () => {
|
|
556
|
-
const o =
|
|
557
|
-
Error.captureStackTrace(o,
|
|
441
|
+
const o = new Error();
|
|
442
|
+
Error.captureStackTrace(o, causeToError);
|
|
558
443
|
return o.stack.split("\n").slice(1);
|
|
559
444
|
};
|
|
560
445
|
const stackFrames = getStackFrames();
|
|
@@ -569,15 +454,30 @@ var causeToError = (cause) => {
|
|
|
569
454
|
var throwCause = (cause) => {
|
|
570
455
|
throw causeToError(cause);
|
|
571
456
|
};
|
|
572
|
-
var unwrapExit = (
|
|
573
|
-
if (Exit.isSuccess(
|
|
574
|
-
return
|
|
457
|
+
var unwrapExit = (exit2) => {
|
|
458
|
+
if (Exit.isSuccess(exit2)) {
|
|
459
|
+
return exit2.value;
|
|
575
460
|
}
|
|
576
|
-
return throwCause(
|
|
461
|
+
return throwCause(exit2.cause);
|
|
577
462
|
};
|
|
578
463
|
var runAndForwardErrors = async (effect, options) => {
|
|
579
|
-
const
|
|
580
|
-
return unwrapExit(
|
|
464
|
+
const exit2 = await Effect2.runPromiseExit(effect, options);
|
|
465
|
+
return unwrapExit(exit2);
|
|
466
|
+
};
|
|
467
|
+
var runInRuntime = (...args) => {
|
|
468
|
+
if (args.length === 1) {
|
|
469
|
+
const [runtime2] = args;
|
|
470
|
+
return async (effect, options) => {
|
|
471
|
+
const exit2 = await Runtime.runPromiseExit(runtime2, effect, options);
|
|
472
|
+
return unwrapExit(exit2);
|
|
473
|
+
};
|
|
474
|
+
} else {
|
|
475
|
+
const [runtime2, effect, options] = args;
|
|
476
|
+
return (async () => {
|
|
477
|
+
const exit2 = await Runtime.runPromiseExit(runtime2, effect, options);
|
|
478
|
+
return unwrapExit(exit2);
|
|
479
|
+
})();
|
|
480
|
+
}
|
|
581
481
|
};
|
|
582
482
|
var promiseWithCauseCapture = (evaluate) => Effect2.promise(async (signal) => {
|
|
583
483
|
try {
|
|
@@ -588,82 +488,338 @@ var promiseWithCauseCapture = (evaluate) => Effect2.promise(async (signal) => {
|
|
|
588
488
|
}
|
|
589
489
|
}).pipe(Effect2.flatten);
|
|
590
490
|
|
|
591
|
-
// src/
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
(
|
|
595
|
-
|
|
596
|
-
if (
|
|
597
|
-
|
|
598
|
-
} else {
|
|
599
|
-
return yield* effect;
|
|
491
|
+
// src/dynamic-runtime.ts
|
|
492
|
+
var validateTags = (context, tags) => Effect3.gen(function* () {
|
|
493
|
+
const missingTags = [];
|
|
494
|
+
for (const tag of tags) {
|
|
495
|
+
const option = Context2.getOption(context, tag);
|
|
496
|
+
if (Option3.isNone(option)) {
|
|
497
|
+
missingTags.push(tag.key);
|
|
600
498
|
}
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
499
|
+
}
|
|
500
|
+
if (missingTags.length > 0) {
|
|
501
|
+
return yield* Effect3.die(new Error(`Missing required tags in runtime: ${missingTags.join(", ")}`));
|
|
502
|
+
}
|
|
503
|
+
});
|
|
504
|
+
function make(managedRuntime, tags) {
|
|
505
|
+
const managedRuntimeAny = managedRuntime;
|
|
506
|
+
let cachedRuntime;
|
|
507
|
+
let validatedRuntimePromise;
|
|
508
|
+
const getValidatedRuntimeAsync = async () => {
|
|
509
|
+
if (!validatedRuntimePromise) {
|
|
510
|
+
validatedRuntimePromise = managedRuntimeAny.runPromise(Effect3.gen(function* () {
|
|
511
|
+
const rt = yield* managedRuntimeAny.runtimeEffect;
|
|
512
|
+
yield* validateTags(rt.context, tags);
|
|
513
|
+
return rt;
|
|
514
|
+
}));
|
|
607
515
|
}
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
516
|
+
return validatedRuntimePromise;
|
|
517
|
+
};
|
|
518
|
+
const getValidatedRuntime = () => {
|
|
519
|
+
const validationExit = managedRuntimeAny.runSyncExit(Effect3.gen(function* () {
|
|
520
|
+
const rt = yield* managedRuntimeAny.runtimeEffect;
|
|
521
|
+
yield* validateTags(rt.context, tags);
|
|
522
|
+
return rt;
|
|
523
|
+
}));
|
|
524
|
+
return unwrapExit(validationExit);
|
|
525
|
+
};
|
|
526
|
+
return {
|
|
527
|
+
managedRuntime: managedRuntimeAny,
|
|
528
|
+
runPromise: async (effect) => {
|
|
529
|
+
const runtime2 = await getValidatedRuntimeAsync();
|
|
530
|
+
return Runtime2.runPromise(runtime2)(effect);
|
|
531
|
+
},
|
|
532
|
+
runSync: (effect) => {
|
|
533
|
+
const runtime2 = getValidatedRuntime();
|
|
534
|
+
return Runtime2.runSync(runtime2)(effect);
|
|
535
|
+
},
|
|
536
|
+
runSyncExit: (effect) => {
|
|
537
|
+
const validationExit = managedRuntimeAny.runSyncExit(Effect3.gen(function* () {
|
|
538
|
+
const rt = yield* managedRuntimeAny.runtimeEffect;
|
|
539
|
+
yield* validateTags(rt.context, tags);
|
|
540
|
+
return rt;
|
|
541
|
+
}));
|
|
542
|
+
if (Exit2.isSuccess(validationExit)) {
|
|
543
|
+
const runtime2 = validationExit.value;
|
|
544
|
+
return Runtime2.runSyncExit(runtime2)(effect);
|
|
545
|
+
}
|
|
546
|
+
return validationExit;
|
|
547
|
+
},
|
|
548
|
+
runPromiseExit: async (effect) => {
|
|
549
|
+
try {
|
|
550
|
+
const runtime2 = await getValidatedRuntimeAsync();
|
|
551
|
+
return Runtime2.runPromiseExit(runtime2)(effect);
|
|
552
|
+
} catch (error) {
|
|
553
|
+
return Exit2.die(error);
|
|
554
|
+
}
|
|
555
|
+
},
|
|
556
|
+
runFork: (effect) => {
|
|
557
|
+
const runtime2 = getValidatedRuntime();
|
|
558
|
+
return Runtime2.runFork(runtime2)(effect);
|
|
559
|
+
},
|
|
560
|
+
runtimeEffect: Effect3.gen(function* () {
|
|
561
|
+
if (cachedRuntime) {
|
|
562
|
+
return cachedRuntime;
|
|
563
|
+
}
|
|
564
|
+
const rt = yield* managedRuntimeAny.runtimeEffect;
|
|
565
|
+
yield* validateTags(rt.context, tags);
|
|
566
|
+
const runtime2 = rt;
|
|
567
|
+
cachedRuntime = runtime2;
|
|
568
|
+
return runtime2;
|
|
569
|
+
}).pipe(Effect3.catchAll(() => (
|
|
570
|
+
// This should never happen since validateTags uses Effect.die
|
|
571
|
+
Effect3.die(new Error("Unexpected error in runtimeEffect validation"))
|
|
572
|
+
))),
|
|
573
|
+
dispose: async () => {
|
|
574
|
+
await managedRuntimeAny.dispose();
|
|
575
|
+
}
|
|
576
|
+
};
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
// src/json-path.ts
|
|
580
|
+
import * as Option4 from "effect/Option";
|
|
581
|
+
import * as Schema2 from "effect/Schema";
|
|
582
|
+
import { JSONPath } from "jsonpath-plus";
|
|
583
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
584
|
+
import { getDeep, setDeep } from "@dxos/util";
|
|
585
|
+
var PATH_REGEX = /^($|[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*|\[\d+\](?:\.)?)*$)/;
|
|
586
|
+
var PROP_REGEX = /^\w+$/;
|
|
587
|
+
var JsonPath = Schema2.String.pipe(Schema2.pattern(PATH_REGEX)).annotations({
|
|
588
|
+
title: "JSON path",
|
|
589
|
+
description: "JSON path to a property"
|
|
590
|
+
});
|
|
591
|
+
var JsonProp = Schema2.NonEmptyString.pipe(Schema2.pattern(PROP_REGEX, {
|
|
592
|
+
message: () => "Property name must contain only letters, numbers, and underscores"
|
|
593
|
+
}));
|
|
594
|
+
var isJsonPath = (value) => {
|
|
595
|
+
return Option4.isSome(Schema2.validateOption(JsonPath)(value));
|
|
596
|
+
};
|
|
597
|
+
var createJsonPath = (path) => {
|
|
598
|
+
const candidatePath = path.map((p, i) => {
|
|
599
|
+
if (typeof p === "number") {
|
|
600
|
+
return `[${p}]`;
|
|
612
601
|
} else {
|
|
613
|
-
return
|
|
602
|
+
return i === 0 ? p : `.${p}`;
|
|
614
603
|
}
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
604
|
+
}).join("");
|
|
605
|
+
invariant2(isJsonPath(candidatePath), `Invalid JsonPath: ${candidatePath}`);
|
|
606
|
+
return candidatePath;
|
|
607
|
+
};
|
|
608
|
+
var fromEffectValidationPath = (effectPath) => {
|
|
609
|
+
const jsonPath = effectPath.replace(/\.\[(\d+)\]/g, "[$1]");
|
|
610
|
+
invariant2(isJsonPath(jsonPath), `Invalid JsonPath: ${jsonPath}`);
|
|
611
|
+
return jsonPath;
|
|
612
|
+
};
|
|
613
|
+
var splitJsonPath = (path) => {
|
|
614
|
+
if (!isJsonPath(path)) {
|
|
615
|
+
return [];
|
|
616
|
+
}
|
|
617
|
+
return path.match(/[a-zA-Z_$][\w$]*|\[\d+\]/g)?.map((part) => part.replace(/[[\]]/g, "")).map((part) => {
|
|
618
|
+
const parsed = Number.parseInt(part, 10);
|
|
619
|
+
return Number.isNaN(parsed) ? part : parsed;
|
|
620
|
+
}) ?? [];
|
|
621
|
+
};
|
|
622
|
+
var getField = (object, path) => {
|
|
623
|
+
return JSONPath({
|
|
624
|
+
path,
|
|
625
|
+
json: object
|
|
626
|
+
})[0];
|
|
627
|
+
};
|
|
628
|
+
var getValue = (obj, path) => {
|
|
629
|
+
return getDeep(obj, splitJsonPath(path));
|
|
630
|
+
};
|
|
631
|
+
var setValue = (obj, path, value) => {
|
|
632
|
+
return setDeep(obj, splitJsonPath(path), value);
|
|
619
633
|
};
|
|
620
|
-
var TestHelpers;
|
|
621
634
|
|
|
622
635
|
// src/resource.ts
|
|
623
636
|
import * as Effect4 from "effect/Effect";
|
|
624
637
|
var acquireReleaseResource = (getResource) => Effect4.acquireRelease(Effect4.gen(function* () {
|
|
625
638
|
const resource = getResource();
|
|
626
639
|
yield* Effect4.promise(async () => {
|
|
627
|
-
resource.open?.();
|
|
640
|
+
await resource.open?.();
|
|
628
641
|
return void 0;
|
|
629
642
|
});
|
|
630
643
|
return resource;
|
|
631
644
|
}), (resource) => Effect4.promise(async () => {
|
|
632
|
-
resource.close?.();
|
|
645
|
+
await resource.close?.();
|
|
633
646
|
return void 0;
|
|
634
647
|
}));
|
|
648
|
+
|
|
649
|
+
// src/url.ts
|
|
650
|
+
import * as Function2 from "effect/Function";
|
|
651
|
+
import * as Option5 from "effect/Option";
|
|
652
|
+
import * as SchemaAST2 from "effect/SchemaAST";
|
|
653
|
+
import { decamelize } from "@dxos/util";
|
|
654
|
+
var ParamKeyAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/schema/annotation/ParamKey");
|
|
655
|
+
var getParamKeyAnnotation = SchemaAST2.getAnnotation(ParamKeyAnnotationId);
|
|
656
|
+
var ParamKeyAnnotation = (value) => (self) => self.annotations({
|
|
657
|
+
[ParamKeyAnnotationId]: value
|
|
658
|
+
});
|
|
659
|
+
var UrlParser = class {
|
|
660
|
+
_schema;
|
|
661
|
+
constructor(_schema) {
|
|
662
|
+
this._schema = _schema;
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* Parse URL params.
|
|
666
|
+
*/
|
|
667
|
+
parse(_url) {
|
|
668
|
+
const url = new URL(_url);
|
|
669
|
+
return Object.entries(this._schema.fields).reduce((params, [key, type]) => {
|
|
670
|
+
let value = url.searchParams.get(decamelize(key));
|
|
671
|
+
if (value == null) {
|
|
672
|
+
value = url.searchParams.get(key);
|
|
673
|
+
}
|
|
674
|
+
if (value != null) {
|
|
675
|
+
if (SchemaAST2.isNumberKeyword(type.ast)) {
|
|
676
|
+
params[key] = parseInt(value);
|
|
677
|
+
} else if (SchemaAST2.isBooleanKeyword(type.ast)) {
|
|
678
|
+
params[key] = value === "true" || value === "1";
|
|
679
|
+
} else {
|
|
680
|
+
params[key] = value;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
return params;
|
|
684
|
+
}, {});
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
687
|
+
* Return URL with encoded params.
|
|
688
|
+
*/
|
|
689
|
+
create(_url, params) {
|
|
690
|
+
const url = new URL(_url);
|
|
691
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
692
|
+
if (value !== void 0) {
|
|
693
|
+
const field = this._schema.fields[key];
|
|
694
|
+
if (field) {
|
|
695
|
+
const { key: serializedKey } = Function2.pipe(getParamKeyAnnotation(field.ast), Option5.getOrElse(() => ({
|
|
696
|
+
key: decamelize(key)
|
|
697
|
+
})));
|
|
698
|
+
url.searchParams.set(serializedKey, String(value));
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
return url;
|
|
703
|
+
}
|
|
704
|
+
};
|
|
705
|
+
|
|
706
|
+
// src/RuntimeProvider.ts
|
|
707
|
+
var RuntimeProvider_exports = {};
|
|
708
|
+
__export(RuntimeProvider_exports, {
|
|
709
|
+
currentRuntime: () => currentRuntime,
|
|
710
|
+
provide: () => provide2,
|
|
711
|
+
runPromise: () => runPromise2
|
|
712
|
+
});
|
|
713
|
+
import * as Effect5 from "effect/Effect";
|
|
714
|
+
import * as Runtime3 from "effect/Runtime";
|
|
715
|
+
var currentRuntime = () => Effect5.runtime().pipe(Effect5.map(Effect5.succeed));
|
|
716
|
+
var runPromise2 = (provider) => async (effect) => {
|
|
717
|
+
const runtime2 = await runAndForwardErrors(provider);
|
|
718
|
+
return unwrapExit(await effect.pipe(Runtime3.runPromiseExit(runtime2)));
|
|
719
|
+
};
|
|
720
|
+
var provide2 = (runtimeProvider) => (effect) => Effect5.flatMap(runtimeProvider, (runtime2) => Effect5.provide(effect, runtime2));
|
|
721
|
+
|
|
722
|
+
// src/Performance.ts
|
|
723
|
+
var Performance_exports = {};
|
|
724
|
+
__export(Performance_exports, {
|
|
725
|
+
addTrackEntry: () => addTrackEntry
|
|
726
|
+
});
|
|
727
|
+
import * as Effect6 from "effect/Effect";
|
|
728
|
+
var addTrackEntry = (options) => (effect) => Effect6.gen(function* () {
|
|
729
|
+
const start = performance.now();
|
|
730
|
+
const exit2 = yield* Effect6.exit(effect);
|
|
731
|
+
const resolvedOptions = typeof options === "function" ? options(exit2) : options;
|
|
732
|
+
performance.measure(resolvedOptions.name, {
|
|
733
|
+
start,
|
|
734
|
+
detail: {
|
|
735
|
+
...resolvedOptions.detail,
|
|
736
|
+
devtools: resolvedOptions.devtools
|
|
737
|
+
}
|
|
738
|
+
});
|
|
739
|
+
return yield* exit2;
|
|
740
|
+
});
|
|
741
|
+
|
|
742
|
+
// src/async-task-tagging.ts
|
|
743
|
+
import * as Context3 from "effect/Context";
|
|
744
|
+
import * as Effect7 from "effect/Effect";
|
|
745
|
+
import { pipe as pipe3 } from "effect/Function";
|
|
746
|
+
import * as Layer from "effect/Layer";
|
|
747
|
+
import * as Predicate from "effect/Predicate";
|
|
748
|
+
import * as Tracer from "effect/Tracer";
|
|
749
|
+
var runInTask = /* @__PURE__ */ Symbol("runInTask");
|
|
750
|
+
var asyncTaskTaggingLayer = () => {
|
|
751
|
+
if (Predicate.hasProperty(console, "createTask") === false) {
|
|
752
|
+
return Layer.empty;
|
|
753
|
+
}
|
|
754
|
+
const makeTracer = Effect7.gen(function* () {
|
|
755
|
+
const oldTracer = yield* Effect7.tracer;
|
|
756
|
+
return Tracer.make({
|
|
757
|
+
span: (name, ...args) => {
|
|
758
|
+
const span = oldTracer.span(name, ...args);
|
|
759
|
+
const trace = console.createTask(name);
|
|
760
|
+
span[runInTask] = (f) => trace.run(f);
|
|
761
|
+
return span;
|
|
762
|
+
},
|
|
763
|
+
context: (f, fiber) => {
|
|
764
|
+
const maybeParentSpan = Context3.getOption(Tracer.ParentSpan)(fiber.currentContext);
|
|
765
|
+
if (maybeParentSpan._tag === "None") {
|
|
766
|
+
return oldTracer.context(f, fiber);
|
|
767
|
+
}
|
|
768
|
+
const parentSpan = maybeParentSpan.value;
|
|
769
|
+
if (parentSpan._tag === "ExternalSpan") {
|
|
770
|
+
return oldTracer.context(f, fiber);
|
|
771
|
+
}
|
|
772
|
+
const span = parentSpan;
|
|
773
|
+
if (runInTask in span && typeof span[runInTask] === "function") {
|
|
774
|
+
return span[runInTask](() => oldTracer.context(f, fiber));
|
|
775
|
+
}
|
|
776
|
+
return oldTracer.context(f, fiber);
|
|
777
|
+
}
|
|
778
|
+
});
|
|
779
|
+
});
|
|
780
|
+
return pipe3(makeTracer, Effect7.map(Layer.setTracer), Layer.unwrapEffect);
|
|
781
|
+
};
|
|
635
782
|
export {
|
|
783
|
+
dynamic_runtime_exports as DynamicRuntime,
|
|
636
784
|
JsonPath,
|
|
637
785
|
JsonProp,
|
|
638
786
|
ParamKeyAnnotation,
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
TestHelpers,
|
|
787
|
+
Performance_exports as Performance,
|
|
788
|
+
RuntimeProvider_exports as RuntimeProvider,
|
|
642
789
|
UrlParser,
|
|
643
790
|
VisitResult,
|
|
644
791
|
acquireReleaseResource,
|
|
792
|
+
asyncTaskTaggingLayer,
|
|
645
793
|
causeToError,
|
|
646
794
|
contextFromScope,
|
|
647
795
|
createJsonPath,
|
|
796
|
+
createKvsStore,
|
|
648
797
|
findAnnotation,
|
|
649
798
|
findNode,
|
|
650
799
|
findProperty,
|
|
651
800
|
fromEffectValidationPath,
|
|
652
801
|
getAnnotation2 as getAnnotation,
|
|
802
|
+
getArrayElementType,
|
|
803
|
+
getBaseType,
|
|
653
804
|
getDiscriminatedType,
|
|
654
805
|
getDiscriminatingProps,
|
|
655
806
|
getField,
|
|
807
|
+
getLiteralValues,
|
|
656
808
|
getParamKeyAnnotation,
|
|
657
|
-
|
|
809
|
+
getProperties,
|
|
810
|
+
getValue,
|
|
658
811
|
isArrayType,
|
|
659
812
|
isDiscriminatedUnion,
|
|
660
813
|
isJsonPath,
|
|
661
814
|
isLiteralUnion,
|
|
815
|
+
isNestedType,
|
|
662
816
|
isOption,
|
|
663
|
-
|
|
817
|
+
isTupleType2 as isTupleType,
|
|
664
818
|
mapAst,
|
|
665
819
|
promiseWithCauseCapture,
|
|
666
820
|
runAndForwardErrors,
|
|
821
|
+
runInRuntime,
|
|
822
|
+
setValue,
|
|
667
823
|
splitJsonPath,
|
|
668
824
|
throwCause,
|
|
669
825
|
unwrapExit,
|