@effect-app/infra 0.234.8 → 0.235.1
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/CHANGELOG.md +20 -3
- package/_cjs/RequestContext.cjs +2 -2
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/api/routing/base.cjs +1 -2
- package/_cjs/api/routing/base.cjs.map +1 -1
- package/_cjs/api/routing/makeRequestHandler.cjs +2 -2
- package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
- package/_cjs/api/routing/schema/jwt.cjs +1 -1
- package/_cjs/api/routing/schema/jwt.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +2 -2
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +2 -2
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs +5 -6
- package/_cjs/services/QueueMaker/service.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +9 -9
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/query/dsl.cjs +1 -1
- package/_cjs/services/query/new-kid-interpreter.cjs +3 -3
- package/_cjs/services/query/new-kid-interpreter.cjs.map +1 -1
- package/_cjs/test.arbs.cjs +3 -4
- package/_cjs/test.arbs.cjs.map +1 -1
- package/dist/RequestContext.d.ts +4 -8
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +4 -4
- package/dist/api/routing/base.d.ts +3 -2
- package/dist/api/routing/base.d.ts.map +1 -1
- package/dist/api/routing/base.js +2 -3
- package/dist/api/routing/makeRequestHandler.d.ts +1 -1
- package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
- package/dist/api/routing/makeRequestHandler.js +3 -3
- package/dist/api/routing/match.d.ts +1 -1
- package/dist/api/routing/match.d.ts.map +1 -1
- package/dist/api/routing/schema/jwt.js +1 -1
- package/dist/services/QueueMaker/memQueue.js +4 -4
- package/dist/services/QueueMaker/sbqueue.js +4 -4
- package/dist/services/QueueMaker/service.d.ts +1 -1
- package/dist/services/QueueMaker/service.d.ts.map +1 -1
- package/dist/services/QueueMaker/service.js +6 -7
- package/dist/services/RepositoryBase.js +9 -9
- package/dist/services/query/dsl.js +1 -1
- package/dist/services/query/new-kid-interpreter.js +3 -3
- package/dist/test.arbs.d.ts +3 -3
- package/dist/test.arbs.d.ts.map +1 -1
- package/dist/test.arbs.js +3 -4
- package/examples/query.ts +4 -4
- package/package.json +10 -10
- package/src/RequestContext.ts +3 -3
- package/src/api/routing/base.ts +3 -3
- package/src/api/routing/makeRequestHandler.ts +5 -4
- package/src/api/routing/match.ts +1 -1
- package/src/api/routing/schema/jwt.ts +2 -2
- package/src/services/QueueMaker/memQueue.ts +3 -3
- package/src/services/QueueMaker/sbqueue.ts +3 -3
- package/src/services/QueueMaker/service.ts +5 -6
- package/src/services/RepositoryBase.ts +9 -9
- package/src/services/query/dsl.ts +1 -1
- package/src/services/query/new-kid-interpreter.ts +2 -2
- package/src/services/simpledb/shared.ts.bak +1 -1
- package/src/test.arbs.ts +4 -5
- package/test/query.test.ts +11 -11
- package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
- package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
- package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
- package/vitest.config.ts.timestamp-1711744615239-dcf257a844e01.mjs +0 -37
|
@@ -78,7 +78,7 @@ const interpret = (_) => {
|
|
|
78
78
|
count: ({ current }) => {
|
|
79
79
|
upd(interpret(current));
|
|
80
80
|
data.ttype = "count";
|
|
81
|
-
data.schema = S.
|
|
81
|
+
data.schema = S.Struct({ id: S.String });
|
|
82
82
|
},
|
|
83
83
|
order: ({ current, direction, field }) => {
|
|
84
84
|
upd(interpret(current));
|
|
@@ -104,7 +104,7 @@ export const toFilter = (q) => {
|
|
|
104
104
|
let select = [];
|
|
105
105
|
if (schema) {
|
|
106
106
|
let t = schema.ast;
|
|
107
|
-
if (S.AST.
|
|
107
|
+
if (S.AST.isTransformation(t)) {
|
|
108
108
|
t = t.from;
|
|
109
109
|
}
|
|
110
110
|
if (S.AST.isTypeLiteral(t)) {
|
|
@@ -127,4 +127,4 @@ export const toFilter = (q) => {
|
|
|
127
127
|
: undefined
|
|
128
128
|
});
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWtpZC1pbnRlcnByZXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS9uZXcta2lkLWludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQXFCLE1BQU0sYUFBYSxDQUFBO0FBYXJELE1BQU0sU0FBUyxHQUFHLENBQWdFLENBQTJCLEVBQUUsRUFBRTtJQUMvRyxNQUFNLENBQUMsR0FBRyxDQUFvQixDQUFBO0lBRTlCLE1BQU0sSUFBSSxHQUFtQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FDVixDQUFpQyxFQUNqQyxFQUFFO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDL0MsSUFBSSxDQUFDLENBQUMs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
|
package/dist/test.arbs.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { FastCheck } from "@effect/schema";
|
|
1
2
|
import type { A } from "effect-app/schema";
|
|
2
|
-
import * as fc from "fast-check";
|
|
3
3
|
/**
|
|
4
4
|
* @tsplus getter FastCheck generateRandom
|
|
5
5
|
*/
|
|
6
|
-
export declare function generate<T>(arb:
|
|
6
|
+
export declare function generate<T>(arb: FastCheck.Arbitrary<T>): FastCheck.Value<T>;
|
|
7
7
|
/**
|
|
8
8
|
* @tsplus getter effect/schema/Arbitrary generate
|
|
9
9
|
*/
|
|
10
|
-
export declare function generateFromArbitrary<T>(arb: A.
|
|
10
|
+
export declare function generateFromArbitrary<T>(arb: A.LazyArbitrary<T>): FastCheck.Value<T>;
|
|
11
11
|
//# sourceMappingURL=test.arbs.d.ts.map
|
package/dist/test.arbs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.arbs.d.ts","sourceRoot":"","sources":["../src/test.arbs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.arbs.d.ts","sourceRoot":"","sources":["../src/test.arbs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAQ1C;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,sBAEtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,sBAE/D"}
|
package/dist/test.arbs.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Do not import to frontend
|
|
2
|
+
import { FastCheck } from "@effect/schema";
|
|
2
3
|
import { faker } from "@faker-js/faker";
|
|
3
4
|
import { setFaker } from "effect-app/faker";
|
|
4
5
|
import { Random } from "fast-check";
|
|
5
|
-
import * as fc from "fast-check";
|
|
6
6
|
import * as rand from "pure-rand";
|
|
7
7
|
const rnd = new Random(rand.congruential32(5));
|
|
8
8
|
setFaker(faker);
|
|
@@ -16,7 +16,6 @@ export function generate(arb) {
|
|
|
16
16
|
* @tsplus getter effect/schema/Arbitrary generate
|
|
17
17
|
*/
|
|
18
18
|
export function generateFromArbitrary(arb) {
|
|
19
|
-
|
|
20
|
-
return generate(arb(fc));
|
|
19
|
+
return generate(arb(FastCheck));
|
|
21
20
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5hcmJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QuYXJicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFFNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUVqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFFOUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBRWY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFJLEdBQTJCO0lBQ3JELE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFDckMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFJLEdBQXVCO0lBQzlELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUMifQ==
|
package/examples/query.ts
CHANGED
|
@@ -4,9 +4,9 @@ import { and, or, order, page, project, where } from "../src/services/query.js"
|
|
|
4
4
|
import { ContextMapContainer } from "../src/services/Store/ContextMapContainer.js"
|
|
5
5
|
import { MemoryStoreLive } from "../src/services/Store/Memory.js"
|
|
6
6
|
|
|
7
|
-
const str = S.
|
|
8
|
-
const num = S.
|
|
9
|
-
const someUnion = S.
|
|
7
|
+
const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
|
|
8
|
+
const num = S.Struct({ _tag: S.Literal("number"), value: S.Number })
|
|
9
|
+
const someUnion = S.Union(str, num)
|
|
10
10
|
|
|
11
11
|
export class Something extends S.Class<Something>()({
|
|
12
12
|
id: S.StringId.withDefault,
|
|
@@ -51,7 +51,7 @@ const program = Effect.gen(function*($) {
|
|
|
51
51
|
),
|
|
52
52
|
order("displayName"),
|
|
53
53
|
page({ take: 1 }),
|
|
54
|
-
project(S.
|
|
54
|
+
project(S.Struct(Something.pick("id", "displayName")))
|
|
55
55
|
)))
|
|
56
56
|
console.log("$$ result", r)
|
|
57
57
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.235.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
"proper-lockfile": "^4.1.2",
|
|
19
19
|
"pure-rand": "6.1.0",
|
|
20
20
|
"redlock": "^4.2.0",
|
|
21
|
-
"
|
|
22
|
-
"@effect-app/
|
|
23
|
-
"effect-app": "0.
|
|
24
|
-
"@effect-app/
|
|
21
|
+
"effect-app": "0.203.1",
|
|
22
|
+
"@effect-app/core": "0.170.0",
|
|
23
|
+
"@effect-app/schema": "0.221.1",
|
|
24
|
+
"@effect-app/infra-adapters": "0.155.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@babel/cli": "^7.24.1",
|
|
28
|
-
"@sentry/node": "^7.
|
|
28
|
+
"@sentry/node": "^7.110.1",
|
|
29
29
|
"@types/express": "^4.17.21",
|
|
30
30
|
"@types/node": "~20.12.7",
|
|
31
31
|
"@types/proper-lockfile": "^4.1.4",
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
"redis": "^3.1.2",
|
|
39
39
|
"ts-node": "^10.9.2",
|
|
40
40
|
"typescript": "^5.4.5",
|
|
41
|
-
"vitest": "^1.
|
|
41
|
+
"vitest": "^1.5.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"express": "^4.19.2",
|
|
45
|
-
"@effect/platform": "^0.48.
|
|
46
|
-
"@effect/schema": "^0.
|
|
47
|
-
"effect": "^2.4.
|
|
45
|
+
"@effect/platform": "^0.48.28",
|
|
46
|
+
"@effect/schema": "^0.65.0",
|
|
47
|
+
"effect": "^2.4.19"
|
|
48
48
|
},
|
|
49
49
|
"typesVersions": {
|
|
50
50
|
"*": {
|
package/src/RequestContext.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExtendedTaggedClass,
|
|
1
|
+
import { ExtendedTaggedClass, NonEmptyString255 } from "@effect-app/schema"
|
|
2
2
|
import { S } from "effect-app"
|
|
3
3
|
import { RequestId, UserProfileId } from "effect-app/ids"
|
|
4
4
|
|
|
@@ -8,8 +8,8 @@ export class RequestContextParent extends ExtendedTaggedClass<
|
|
|
8
8
|
>()("RequestContext", {
|
|
9
9
|
id: RequestId,
|
|
10
10
|
name: NonEmptyString255,
|
|
11
|
-
userProfile: S.optional(
|
|
12
|
-
locale:
|
|
11
|
+
userProfile: S.optional(S.Struct({ sub: UserProfileId })),
|
|
12
|
+
locale: S.Literal("en", "de"),
|
|
13
13
|
createdAt: S.Date.withDefault
|
|
14
14
|
}) {}
|
|
15
15
|
|
package/src/api/routing/base.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
4
|
-
import * as S from "effect-app/schema"
|
|
5
|
-
|
|
6
4
|
import type { EnforceNonEmptyRecord } from "@effect-app/core/utils"
|
|
7
5
|
import { ValidationError } from "@effect-app/infra/errors"
|
|
6
|
+
import type { Struct } from "@effect/schema/Schema"
|
|
7
|
+
import * as S from "@effect/schema/Schema"
|
|
8
8
|
import type { Context } from "effect-app"
|
|
9
9
|
import { Cause, Effect, Exit, Option } from "effect-app"
|
|
10
10
|
import type { HttpRouter, HttpServerError } from "effect-app/http"
|
|
11
|
-
import type { REST
|
|
11
|
+
import type { REST } from "effect-app/schema"
|
|
12
12
|
import type { Simplify } from "effect/Types"
|
|
13
13
|
|
|
14
14
|
export type RouteMatch<
|
|
@@ -8,12 +8,13 @@ import { reportError } from "@effect-app/infra/errorReporter"
|
|
|
8
8
|
import type { ValidationError } from "@effect-app/infra/errors"
|
|
9
9
|
import type { RequestContextContainer } from "@effect-app/infra/services/RequestContextContainer"
|
|
10
10
|
import type { ContextMapContainer } from "@effect-app/infra/services/Store/ContextMapContainer"
|
|
11
|
+
import type { Struct } from "@effect/schema/Schema"
|
|
11
12
|
import type { Layer } from "effect-app"
|
|
12
13
|
import { Console, Effect, FiberRef, Option, S } from "effect-app"
|
|
13
14
|
import type { HttpServerError } from "effect-app/http"
|
|
14
15
|
import { HttpBody, HttpRouter, HttpServerRequest, HttpServerResponse } from "effect-app/http"
|
|
15
16
|
import { NonEmptyString255 } from "effect-app/schema"
|
|
16
|
-
import type { REST
|
|
17
|
+
import type { REST } from "effect-app/schema"
|
|
17
18
|
import { updateRequestContext } from "../setupRequest.js"
|
|
18
19
|
import { makeRequestParsers, parseRequestParams } from "./base.js"
|
|
19
20
|
import type { RequestHandler, RequestHandlerBase } from "./base.js"
|
|
@@ -129,11 +130,11 @@ export function makeRequestHandler<
|
|
|
129
130
|
> {
|
|
130
131
|
const { Request, Response, h: handle } = handler
|
|
131
132
|
|
|
132
|
-
const response: REST.ReqRes<any, any, any> = Response ? Response : S.
|
|
133
|
-
const resp = response as typeof response & { fields?:
|
|
133
|
+
const response: REST.ReqRes<any, any, any> = Response ? Response : S.Void
|
|
134
|
+
const resp = response as typeof response & { fields?: Struct.Fields }
|
|
134
135
|
// TODO: consider if the alternative of using the struct schema is perhaps just better.
|
|
135
136
|
const encoder = "fields" in resp && resp.fields
|
|
136
|
-
? S.encode(handler.rt === "raw" ? S.encodedSchema(S.
|
|
137
|
+
? S.encode(handler.rt === "raw" ? S.encodedSchema(S.Struct(resp.fields)) : S.Struct(resp.fields))
|
|
137
138
|
// ? (i: any) => {
|
|
138
139
|
// if (i instanceof (response as any)) return S.encodeSync(response)(i)
|
|
139
140
|
// else return S.encodeSync(response)(new (response as any)(i))
|
package/src/api/routing/match.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
3
3
|
import type { ValidationError } from "@effect-app/infra/errors"
|
|
4
|
-
import type { Struct } from "effect-app/schema"
|
|
5
4
|
import { type RouteDescriptorAny } from "./schema/routing.js"
|
|
6
5
|
import type {} from "effect-app/utils"
|
|
6
|
+
import type { Struct } from "@effect/schema/Schema"
|
|
7
7
|
import type { Layer, Ref, Scope } from "effect-app"
|
|
8
8
|
import { Context, Effect } from "effect-app"
|
|
9
9
|
import { HttpRouter } from "effect-app/http"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MemQueue } from "@effect-app/infra-adapters/memQueue"
|
|
2
2
|
import { RequestContext } from "@effect-app/infra/RequestContext"
|
|
3
|
-
import { NonEmptyString255
|
|
3
|
+
import { NonEmptyString255 } from "@effect-app/schema"
|
|
4
4
|
import { Tracer } from "effect"
|
|
5
5
|
import { Effect, Fiber, flow, Option, S } from "effect-app"
|
|
6
6
|
import { RequestId } from "effect-app/ids"
|
|
@@ -30,8 +30,8 @@ export function makeMemQueue<
|
|
|
30
30
|
const qDrain = yield* $(mem.getOrCreateQueue(queueDrainName))
|
|
31
31
|
const rcc = yield* $(RequestContextContainer)
|
|
32
32
|
|
|
33
|
-
const wireSchema =
|
|
34
|
-
const drainW =
|
|
33
|
+
const wireSchema = S.Struct({ body: schema, meta: QueueMeta })
|
|
34
|
+
const drainW = S.Struct({ body: drainSchema, meta: QueueMeta })
|
|
35
35
|
const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie)
|
|
36
36
|
|
|
37
37
|
return {
|
|
@@ -12,7 +12,7 @@ import { Tracer } from "effect"
|
|
|
12
12
|
import { Effect, flow, Layer, Option, S } from "effect-app"
|
|
13
13
|
import { RequestId } from "effect-app/ids"
|
|
14
14
|
import type { StringId } from "effect-app/schema"
|
|
15
|
-
import { NonEmptyString255
|
|
15
|
+
import { NonEmptyString255 } from "effect-app/schema"
|
|
16
16
|
import { pretty } from "effect-app/utils"
|
|
17
17
|
import { setupRequestContext } from "../../api/setupRequest.js"
|
|
18
18
|
import { RequestContextContainer } from "../RequestContextContainer.js"
|
|
@@ -33,11 +33,11 @@ export function makeServiceBusQueue<
|
|
|
33
33
|
schema: S.Schema<Evt, EvtE>,
|
|
34
34
|
drainSchema: S.Schema<DrainEvt, DrainEvtE>
|
|
35
35
|
) {
|
|
36
|
-
const wireSchema =
|
|
36
|
+
const wireSchema = S.Struct({
|
|
37
37
|
body: schema,
|
|
38
38
|
meta: QueueMeta
|
|
39
39
|
})
|
|
40
|
-
const drainW =
|
|
40
|
+
const drainW = S.Struct({ body: drainSchema, meta: QueueMeta })
|
|
41
41
|
const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie)
|
|
42
42
|
|
|
43
43
|
return Effect.gen(function*($) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { struct } from "@effect-app/schema"
|
|
2
1
|
import { S } from "effect-app"
|
|
3
2
|
import type { Effect, NonEmptyReadonlyArray, Scope } from "effect-app"
|
|
4
3
|
import { RequestContext } from "../../RequestContext.js"
|
|
@@ -21,11 +20,11 @@ export interface QueueBase<Evt, DrainEvt> {
|
|
|
21
20
|
export interface QueueMakerOps {}
|
|
22
21
|
export const QueueMaker: QueueMakerOps = {}
|
|
23
22
|
|
|
24
|
-
export const QueueMeta =
|
|
23
|
+
export const QueueMeta = S.Struct({
|
|
25
24
|
requestContext: RequestContext,
|
|
26
|
-
span: S.optional(
|
|
27
|
-
spanId: S.
|
|
28
|
-
traceId: S.
|
|
29
|
-
sampled: S.
|
|
25
|
+
span: S.optional(S.Struct({
|
|
26
|
+
spanId: S.String,
|
|
27
|
+
traceId: S.String,
|
|
28
|
+
sampled: S.Boolean
|
|
30
29
|
}))
|
|
31
30
|
})
|
|
@@ -374,10 +374,10 @@ export function makeRepo<
|
|
|
374
374
|
return Effect
|
|
375
375
|
.gen(function*($) {
|
|
376
376
|
const rctx = yield* $(Effect.context<R>())
|
|
377
|
-
const encodeMany = flow(S.encode(S.
|
|
377
|
+
const encodeMany = flow(S.encode(S.Array(schema)), Effect.provide(rctx), Effect.withSpan("encodeMany"))
|
|
378
378
|
const decode = flow(S.decode(schema), Effect.provide(rctx))
|
|
379
379
|
const decodeMany = flow(
|
|
380
|
-
S.decode(S.
|
|
380
|
+
S.decode(S.Array(schema)),
|
|
381
381
|
Effect.provide(rctx),
|
|
382
382
|
Effect.withSpan("decodeMany")
|
|
383
383
|
)
|
|
@@ -406,11 +406,11 @@ export function makeRepo<
|
|
|
406
406
|
.pipe(Effect.map((_) => _ as T[]))
|
|
407
407
|
|
|
408
408
|
const fieldsSchema = schema as unknown as { fields: any }
|
|
409
|
-
const i = ("fields" in fieldsSchema ? S.
|
|
409
|
+
const i = ("fields" in fieldsSchema ? S.Struct(fieldsSchema["fields"]) as unknown as typeof schema : schema)
|
|
410
410
|
.pipe((_) =>
|
|
411
411
|
_.ast._tag === "Union"
|
|
412
412
|
// we need to get the TypeLiteral, incase of class it's behind a transform...
|
|
413
|
-
? S.
|
|
413
|
+
? S.Union(..._.ast.types.map((_) =>
|
|
414
414
|
(S.make(_._tag === "Transformation" ? _.from : _) as unknown as Schema<T, Encoded>)
|
|
415
415
|
.pipe(S.pick("id"))
|
|
416
416
|
))
|
|
@@ -524,7 +524,7 @@ export function makeRepo<
|
|
|
524
524
|
Effect
|
|
525
525
|
.flatMap(cms, (cm) =>
|
|
526
526
|
S
|
|
527
|
-
.decode(S.
|
|
527
|
+
.decode(S.Array(schema))(
|
|
528
528
|
items.map((_) => mapReverse(_, cm.set))
|
|
529
529
|
)
|
|
530
530
|
.pipe(Effect.orDie, Effect.withSpan("parseMany2")))
|
|
@@ -548,13 +548,13 @@ export function makeRepo<
|
|
|
548
548
|
const eff = a.mode === "project"
|
|
549
549
|
? filter(a)
|
|
550
550
|
// TODO: mapFrom but need to support per field and dependencies
|
|
551
|
-
.pipe(Effect.andThen(flow(S.decode(S.
|
|
551
|
+
.pipe(Effect.andThen(flow(S.decode(S.Array(a.schema ?? schema)), Effect.provide(rctx))))
|
|
552
552
|
: a.mode === "collect"
|
|
553
553
|
? filter(a)
|
|
554
554
|
// TODO: mapFrom but need to support per field and dependencies
|
|
555
555
|
.pipe(
|
|
556
556
|
Effect.flatMap(flow(
|
|
557
|
-
S.decode(S.
|
|
557
|
+
S.decode(S.Array(a.schema)),
|
|
558
558
|
Effect.map(ReadonlyArray.getSomes),
|
|
559
559
|
Effect.provide(rctx)
|
|
560
560
|
))
|
|
@@ -606,8 +606,8 @@ export function makeRepo<
|
|
|
606
606
|
*/
|
|
607
607
|
mapped: <A, R>(schema: S.Schema<A, any, R>) => {
|
|
608
608
|
const dec = S.decode(schema)
|
|
609
|
-
const encMany = S.encode(S.
|
|
610
|
-
const decMany = S.decode(S.
|
|
609
|
+
const encMany = S.encode(S.Array(schema))
|
|
610
|
+
const decMany = S.decode(S.Array(schema))
|
|
611
611
|
return {
|
|
612
612
|
all: allE.pipe(
|
|
613
613
|
Effect.flatMap(decMany),
|
|
@@ -219,7 +219,7 @@ export const count: <
|
|
|
219
219
|
>(
|
|
220
220
|
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues, "many">
|
|
221
221
|
) => QueryProjection<TFieldValues, NonNegativeInt, never, "count"> = (current) =>
|
|
222
|
-
// new Project({ current: current as any, /* TODO: why */ schema: S.
|
|
222
|
+
// new Project({ current: current as any, /* TODO: why */ schema: S.Struct({ id: S.unknown }) })
|
|
223
223
|
new Count({ current })
|
|
224
224
|
|
|
225
225
|
/*
|
|
@@ -102,7 +102,7 @@ const interpret = <TFieldValues extends FieldValues, A = TFieldValues, R = never
|
|
|
102
102
|
count: ({ current }) => {
|
|
103
103
|
upd(interpret(current))
|
|
104
104
|
data.ttype = "count"
|
|
105
|
-
data.schema = S.
|
|
105
|
+
data.schema = S.Struct({ id: S.String }) as any
|
|
106
106
|
},
|
|
107
107
|
order: ({ current, direction, field }) => {
|
|
108
108
|
upd(interpret(current))
|
|
@@ -137,7 +137,7 @@ export const toFilter = <
|
|
|
137
137
|
let select: (keyof TFieldValues)[] = []
|
|
138
138
|
if (schema) {
|
|
139
139
|
let t = schema.ast
|
|
140
|
-
if (S.AST.
|
|
140
|
+
if (S.AST.isTransformation(t)) {
|
|
141
141
|
t = t.from
|
|
142
142
|
}
|
|
143
143
|
if (S.AST.isTypeLiteral(t)) {
|
|
@@ -37,7 +37,7 @@ export class SerializedDBRecord extends S.Class<SerializedDBRecord>()({
|
|
|
37
37
|
// unknown -> string -> SDB?
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
39
|
export function makeSerialisedDBRecord(s: S.Schema<any>) {
|
|
40
|
-
return S.
|
|
40
|
+
return S.Struct({
|
|
41
41
|
version: S.number,
|
|
42
42
|
timestamp: S.Date,
|
|
43
43
|
data: s
|
package/src/test.arbs.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// Do not import to frontend
|
|
2
2
|
|
|
3
|
+
import { FastCheck } from "@effect/schema"
|
|
3
4
|
import { faker } from "@faker-js/faker"
|
|
4
5
|
import { setFaker } from "effect-app/faker"
|
|
5
6
|
import type { A } from "effect-app/schema"
|
|
6
7
|
import { Random } from "fast-check"
|
|
7
|
-
import * as fc from "fast-check"
|
|
8
8
|
import * as rand from "pure-rand"
|
|
9
9
|
|
|
10
10
|
const rnd = new Random(rand.congruential32(5))
|
|
@@ -14,14 +14,13 @@ setFaker(faker)
|
|
|
14
14
|
/**
|
|
15
15
|
* @tsplus getter FastCheck generateRandom
|
|
16
16
|
*/
|
|
17
|
-
export function generate<T>(arb:
|
|
17
|
+
export function generate<T>(arb: FastCheck.Arbitrary<T>) {
|
|
18
18
|
return arb.generate(rnd, undefined)
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* @tsplus getter effect/schema/Arbitrary generate
|
|
23
23
|
*/
|
|
24
|
-
export function generateFromArbitrary<T>(arb: A.
|
|
25
|
-
|
|
26
|
-
return generate(arb(fc as any))
|
|
24
|
+
export function generateFromArbitrary<T>(arb: A.LazyArbitrary<T>) {
|
|
25
|
+
return generate(arb(FastCheck))
|
|
27
26
|
}
|
package/test/query.test.ts
CHANGED
|
@@ -6,9 +6,9 @@ import { RepositoryDefaultImpl } from "../src/services/RepositoryBase.js"
|
|
|
6
6
|
import { ContextMapContainer } from "../src/services/Store/ContextMapContainer.js"
|
|
7
7
|
import { memFilter, MemoryStoreLive } from "../src/services/Store/Memory.js"
|
|
8
8
|
|
|
9
|
-
const str = S.
|
|
10
|
-
const num = S.
|
|
11
|
-
const someUnion = S.
|
|
9
|
+
const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
|
|
10
|
+
const num = S.Struct({ _tag: S.Literal("number"), value: S.Number })
|
|
11
|
+
const someUnion = S.Union(str, num)
|
|
12
12
|
|
|
13
13
|
export class Something extends S.Class<Something>()({
|
|
14
14
|
id: S.StringId.withDefault,
|
|
@@ -34,8 +34,8 @@ const q = make<Something.Encoded>()
|
|
|
34
34
|
page({ take: 10 }),
|
|
35
35
|
project(
|
|
36
36
|
S.transformToOrFail(
|
|
37
|
-
S.
|
|
38
|
-
S.
|
|
37
|
+
S.Struct({ id: S.StringId, displayName: S.String }), // for projection performance benefit, this should be limited to the fields interested, and leads to SELECT fields
|
|
38
|
+
S.Struct(Struct.pick(Something.fields, "id", "displayName")),
|
|
39
39
|
(_) => Effect.andThen(SomeService, _)
|
|
40
40
|
)
|
|
41
41
|
)
|
|
@@ -116,8 +116,8 @@ it("works with repo", () =>
|
|
|
116
116
|
page({ take: 10 }),
|
|
117
117
|
project(
|
|
118
118
|
S.transformToOrFail(
|
|
119
|
-
S.
|
|
120
|
-
S.
|
|
119
|
+
S.Struct({ displayName: S.String }), // for projection performance benefit, this should be limited to the fields interested, and leads to SELECT fields
|
|
120
|
+
S.Struct(Struct.pick(Something.fields, "displayName")),
|
|
121
121
|
(_) => Effect.andThen(SomeService, _)
|
|
122
122
|
)
|
|
123
123
|
)
|
|
@@ -142,8 +142,8 @@ it("collect", () =>
|
|
|
142
142
|
project(
|
|
143
143
|
S.transformTo(
|
|
144
144
|
// TODO: sample case with narrowing down a union?
|
|
145
|
-
S.encodedSchema(S.
|
|
146
|
-
S.typeSchema(S.
|
|
145
|
+
S.encodedSchema(S.Struct(Struct.pick(Something.fields, "displayName", "n"))), // for projection performance benefit, this should be limited to the fields interested, and leads to SELECT fields
|
|
146
|
+
S.typeSchema(S.Option(S.String)),
|
|
147
147
|
(_) =>
|
|
148
148
|
_.displayName === "Riley" && _.n === "2020-01-01T00:00:00.000Z"
|
|
149
149
|
? Option.some(`${_.displayName}-${_.n}`)
|
|
@@ -165,8 +165,8 @@ it("collect", () =>
|
|
|
165
165
|
project(
|
|
166
166
|
S.transformTo(
|
|
167
167
|
// TODO: sample case with narrowing down a union?
|
|
168
|
-
S.encodedSchema(S.
|
|
169
|
-
S.typeSchema(S.
|
|
168
|
+
S.encodedSchema(S.Struct(Struct.pick(Something.fields, "union"))), // for projection performance benefit, this should be limited to the fields interested, and leads to SELECT fields
|
|
169
|
+
S.typeSchema(S.Option(S.String)),
|
|
170
170
|
(_) =>
|
|
171
171
|
_.union._tag === "string"
|
|
172
172
|
? Option.some(_.union.value)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
// packages/infra/vitest.config.ts
|
|
2
|
-
import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.2.6_@types+node@20.11.30/node_modules/vite/dist/node/index.js";
|
|
3
|
-
|
|
4
|
-
// vite.config.base.ts
|
|
5
|
-
import path from "path";
|
|
6
|
-
import fs from "fs";
|
|
7
|
-
var __vite_injected_original_dirname = "/Users/patrickroza/pj/effect-app/libs";
|
|
8
|
-
function makeConfig(dirName) {
|
|
9
|
-
const prefix = path.resolve(__vite_injected_original_dirname, "packages");
|
|
10
|
-
const packages = fs.readdirSync(prefix).map((f) => prefix + "/" + f).filter((f) => fs.lstatSync(f).isDirectory());
|
|
11
|
-
const cfg = {
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
13
|
-
//plugins: [autoImport],
|
|
14
|
-
test: {
|
|
15
|
-
include: ["./test/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
|
|
16
|
-
reporters: "verbose",
|
|
17
|
-
globals: true
|
|
18
|
-
},
|
|
19
|
-
resolve: {
|
|
20
|
-
alias: packages.reduce((acc, cur) => {
|
|
21
|
-
acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, cur.endsWith("core") ? "dist" : "src");
|
|
22
|
-
return acc;
|
|
23
|
-
}, {})
|
|
24
|
-
// "@effect-app/core/Prelude": path.join(__dirname, "packages/core/src/Prelude.code.ts")
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
console.log(cfg);
|
|
28
|
-
return cfg;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// packages/infra/vitest.config.ts
|
|
32
|
-
var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/infra";
|
|
33
|
-
var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
|
|
34
|
-
export {
|
|
35
|
-
vitest_config_default as default
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvaW5mcmEvdml0ZXN0LmNvbmZpZy50cyIsICJ2aXRlLmNvbmZpZy5iYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy9wYWNrYWdlcy9pbmZyYVwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy9wYWNrYWdlcy9pbmZyYS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvaW5mcmEvdml0ZXN0LmNvbmZpZy50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBtYWtlQ29uZmlnIGZyb20gXCIuLi8uLi92aXRlLmNvbmZpZy5iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKG1ha2VDb25maWcoX19kaXJuYW1lKSlcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlic1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCBmcyBmcm9tIFwiZnNcIlxuaW1wb3J0IEF1dG9JbXBvcnQgZnJvbSBcInVucGx1Z2luLWF1dG8taW1wb3J0L3ZpdGVcIlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVzdC9jb25maWdcIlxuXG4vLyBjb25zdCBhdXRvSW1wb3J0ID0gQXV0b0ltcG9ydCh7XG4vLyAgIGR0czogXCIuL3Rlc3QvYXV0by1pbXBvcnRzLmQudHNcIixcbi8vICAgLy8gaW5jbHVkZTogW1xuLy8gICAvLyAgIC9cXC50ZXN0XFwuW3RqXXN4PyQvIC8vIC50cywgLnRzeCwgLmpzLCAuanN4XG4vLyAgIC8vIF0sXG4vLyAgIGltcG9ydHM6IFtcbi8vICAgICBcInZpdGVzdFwiXG4vLyAgIF1cbi8vIH0pXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1ha2VDb25maWcoZGlyTmFtZT86IHN0cmluZykge1xuICBjb25zdCBwcmVmaXggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcInBhY2thZ2VzXCIpXG4gIGNvbnN0IHBhY2thZ2VzID0gZnMucmVhZGRpclN5bmMocHJlZml4KS5tYXAoZiA9PiBwcmVmaXggKyBcIi9cIiArIGYpLmZpbHRlcihmID0+IGZzLmxzdGF0U3luYyhmKS5pc0RpcmVjdG9yeSgpIClcbiAgY29uc3QgY2ZnID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgLy9wbHVnaW5zOiBbYXV0b0ltcG9ydF0sXG4gICAgdGVzdDoge1xuICAgICAgaW5jbHVkZTogIFtcIi4vdGVzdC8qKi8qLnRlc3Que2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fVwiXSxcbiAgICAgIHJlcG9ydGVyczogXCJ2ZXJib3NlXCIsXG4gICAgICBnbG9iYWxzOiB0cnVlXG4gICAgfSxcbiAgICByZXNvbHZlOiB7XG4gICAgICBhbGlhczogcGFja2FnZXMucmVkdWNlKChhY2MsIGN1cikgPT4geyAvLyB3b3JrYXJvdW5kIGZvciAvUHJlbHVkZSBpc3N1ZVxuICAgICAgYWNjW0pTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGN1ciArIFwiL3BhY2thZ2UuanNvblwiLCBcInV0Zi04XCIpKS5uYW1lXSA9IHBhdGgucmVzb2x2ZShjdXIsIGN1ci5lbmRzV2l0aChcImNvcmVcIikgPyBcImRpc3RcIiA6IFwic3JjXCIpXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgeyB9KSAvLyBcIkBlZmZlY3QtYXBwL2NvcmUvUHJlbHVkZVwiOiBwYXRoLmpvaW4oX19kaXJuYW1lLCBcInBhY2thZ2VzL2NvcmUvc3JjL1ByZWx1ZGUuY29kZS50c1wiKVxuICB9XG4gIH1cbiAgY29uc29sZS5sb2coY2ZnKVxuICByZXR1cm4gY2ZnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixPQUFPLFVBQVU7QUFDakIsT0FBTyxRQUFRO0FBRmYsSUFBTSxtQ0FBbUM7QUFnQjFCLFNBQVIsV0FBNEIsU0FBa0I7QUFDbkQsUUFBTSxTQUFTLEtBQUssUUFBUSxrQ0FBVyxVQUFVO0FBQ2pELFFBQU0sV0FBVyxHQUFHLFlBQVksTUFBTSxFQUFFLElBQUksT0FBSyxTQUFTLE1BQU0sQ0FBQyxFQUFFLE9BQU8sT0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBRTtBQUM3RyxRQUFNLE1BQU07QUFBQTtBQUFBO0FBQUEsSUFHVixNQUFNO0FBQUEsTUFDSixTQUFVLENBQUMsa0RBQWtEO0FBQUEsTUFDN0QsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVM7QUFBQSxNQUNQLE9BQU8sU0FBUyxPQUFPLENBQUMsS0FBSyxRQUFRO0FBQ3JDLFlBQUksS0FBSyxNQUFNLEdBQUcsYUFBYSxNQUFNLGlCQUFpQixPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxRQUFRLEtBQUssSUFBSSxTQUFTLE1BQU0sSUFBSSxTQUFTLEtBQUs7QUFDL0gsZUFBTztBQUFBLE1BQ1QsR0FBRyxDQUFFLENBQUM7QUFBQTtBQUFBLElBQ1I7QUFBQSxFQUNBO0FBQ0EsVUFBUSxJQUFJLEdBQUc7QUFDZixTQUFPO0FBQ1Q7OztBRHBDQSxJQUFNQSxvQ0FBbUM7QUFJekMsSUFBTyx3QkFBUSxhQUFhLFdBQVdDLGlDQUFTLENBQUM7IiwKICAibmFtZXMiOiBbIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIl0KfQo=
|