@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.
Files changed (65) hide show
  1. package/CHANGELOG.md +20 -3
  2. package/_cjs/RequestContext.cjs +2 -2
  3. package/_cjs/RequestContext.cjs.map +1 -1
  4. package/_cjs/api/routing/base.cjs +1 -2
  5. package/_cjs/api/routing/base.cjs.map +1 -1
  6. package/_cjs/api/routing/makeRequestHandler.cjs +2 -2
  7. package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
  8. package/_cjs/api/routing/schema/jwt.cjs +1 -1
  9. package/_cjs/api/routing/schema/jwt.cjs.map +1 -1
  10. package/_cjs/services/QueueMaker/memQueue.cjs +2 -2
  11. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  12. package/_cjs/services/QueueMaker/sbqueue.cjs +2 -2
  13. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  14. package/_cjs/services/QueueMaker/service.cjs +5 -6
  15. package/_cjs/services/QueueMaker/service.cjs.map +1 -1
  16. package/_cjs/services/RepositoryBase.cjs +9 -9
  17. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  18. package/_cjs/services/query/dsl.cjs +1 -1
  19. package/_cjs/services/query/new-kid-interpreter.cjs +3 -3
  20. package/_cjs/services/query/new-kid-interpreter.cjs.map +1 -1
  21. package/_cjs/test.arbs.cjs +3 -4
  22. package/_cjs/test.arbs.cjs.map +1 -1
  23. package/dist/RequestContext.d.ts +4 -8
  24. package/dist/RequestContext.d.ts.map +1 -1
  25. package/dist/RequestContext.js +4 -4
  26. package/dist/api/routing/base.d.ts +3 -2
  27. package/dist/api/routing/base.d.ts.map +1 -1
  28. package/dist/api/routing/base.js +2 -3
  29. package/dist/api/routing/makeRequestHandler.d.ts +1 -1
  30. package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
  31. package/dist/api/routing/makeRequestHandler.js +3 -3
  32. package/dist/api/routing/match.d.ts +1 -1
  33. package/dist/api/routing/match.d.ts.map +1 -1
  34. package/dist/api/routing/schema/jwt.js +1 -1
  35. package/dist/services/QueueMaker/memQueue.js +4 -4
  36. package/dist/services/QueueMaker/sbqueue.js +4 -4
  37. package/dist/services/QueueMaker/service.d.ts +1 -1
  38. package/dist/services/QueueMaker/service.d.ts.map +1 -1
  39. package/dist/services/QueueMaker/service.js +6 -7
  40. package/dist/services/RepositoryBase.js +9 -9
  41. package/dist/services/query/dsl.js +1 -1
  42. package/dist/services/query/new-kid-interpreter.js +3 -3
  43. package/dist/test.arbs.d.ts +3 -3
  44. package/dist/test.arbs.d.ts.map +1 -1
  45. package/dist/test.arbs.js +3 -4
  46. package/examples/query.ts +4 -4
  47. package/package.json +10 -10
  48. package/src/RequestContext.ts +3 -3
  49. package/src/api/routing/base.ts +3 -3
  50. package/src/api/routing/makeRequestHandler.ts +5 -4
  51. package/src/api/routing/match.ts +1 -1
  52. package/src/api/routing/schema/jwt.ts +2 -2
  53. package/src/services/QueueMaker/memQueue.ts +3 -3
  54. package/src/services/QueueMaker/sbqueue.ts +3 -3
  55. package/src/services/QueueMaker/service.ts +5 -6
  56. package/src/services/RepositoryBase.ts +9 -9
  57. package/src/services/query/dsl.ts +1 -1
  58. package/src/services/query/new-kid-interpreter.ts +2 -2
  59. package/src/services/simpledb/shared.ts.bak +1 -1
  60. package/src/test.arbs.ts +4 -5
  61. package/test/query.test.ts +11 -11
  62. package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
  63. package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
  64. package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
  65. 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.struct({ id: S.string });
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.isTransform(t)) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWtpZC1pbnRlcnByZXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS9uZXcta2lkLWludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQXFCLE1BQU0sYUFBYSxDQUFBO0FBYXJELE1BQU0sU0FBUyxHQUFHLENBQWdFLENBQTJCLEVBQUUsRUFBRTtJQUMvRyxNQUFNLENBQUMsR0FBRyxDQUFvQixDQUFBO0lBRTlCLE1BQU0sSUFBSSxHQUFtQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FDVixDQUFpQyxFQUNqQyxFQUFFO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDL0MsSUFBSSxDQUFDLENBQUMs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
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWtpZC1pbnRlcnByZXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9xdWVyeS9uZXcta2lkLWludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCw0REFBNEQ7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR2pELE9BQU8sRUFBRSxJQUFJLEVBQXFCLE1BQU0sYUFBYSxDQUFBO0FBYXJELE1BQU0sU0FBUyxHQUFHLENBQWdFLENBQTJCLEVBQUUsRUFBRTtJQUMvRyxNQUFNLENBQUMsR0FBRyxDQUFvQixDQUFBO0lBRTlCLE1BQU0sSUFBSSxHQUFtQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLEVBQUU7UUFDVCxLQUFLLEVBQUUsU0FBUztRQUNoQixJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFBO0lBRUQsTUFBTSxHQUFHLEdBQUcsQ0FDVixDQUFpQyxFQUNqQyxFQUFFO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDL0MsSUFBSSxDQUFDLENBQUMs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
@@ -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: fc.Arbitrary<T>): fc.Value<T>;
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.Arbitrary<T>): fc.Value<T>;
10
+ export declare function generateFromArbitrary<T>(arb: A.LazyArbitrary<T>): FastCheck.Value<T>;
11
11
  //# sourceMappingURL=test.arbs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.arbs.d.ts","sourceRoot":"","sources":["../src/test.arbs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAA;AAE1C,OAAO,KAAK,EAAE,MAAM,YAAY,CAAA;AAOhC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAE/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAG3D"}
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
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
20
- return generate(arb(fc));
19
+ return generate(arb(FastCheck));
21
20
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5hcmJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QuYXJicy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFFNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUU5QyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7QUFFZjs7R0FFRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUksR0FBb0I7SUFDOUMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQTtBQUNyQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUksR0FBbUI7SUFDMUQscUdBQXFHO0lBQ3JHLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFTLENBQUMsQ0FBQyxDQUFBO0FBQ2pDLENBQUMifQ==
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.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)
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.struct(Something.pick("id", "displayName")))
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.234.8",
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
- "@effect-app/core": "0.169.1",
22
- "@effect-app/infra-adapters": "0.154.10",
23
- "effect-app": "0.202.1",
24
- "@effect-app/schema": "0.220.4"
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.109.0",
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.4.0"
41
+ "vitest": "^1.5.0"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "express": "^4.19.2",
45
- "@effect/platform": "^0.48.27",
46
- "@effect/schema": "^0.64.20",
47
- "effect": "^2.4.18"
45
+ "@effect/platform": "^0.48.28",
46
+ "@effect/schema": "^0.65.0",
47
+ "effect": "^2.4.19"
48
48
  },
49
49
  "typesVersions": {
50
50
  "*": {
@@ -1,4 +1,4 @@
1
- import { ExtendedTaggedClass, literal, NonEmptyString255, struct } from "@effect-app/schema"
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(struct({ sub: UserProfileId })),
12
- locale: literal("en", "de"),
11
+ userProfile: S.optional(S.Struct({ sub: UserProfileId })),
12
+ locale: S.Literal("en", "de"),
13
13
  createdAt: S.Date.withDefault
14
14
  }) {}
15
15
 
@@ -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, Struct } from "effect-app/schema"
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, Struct } from "effect-app/schema"
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.void
133
- const resp = response as typeof response & { fields?: S.Struct.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.struct(resp.fields)) : S.struct(resp.fields))
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))
@@ -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"
@@ -10,8 +10,8 @@ export const parseJwt = <R, I, A>(
10
10
  ): S.Schema<A, string, R> =>
11
11
  S
12
12
  .transformToOrFail(
13
- S.string,
14
- S.unknown,
13
+ S.String,
14
+ S.Unknown,
15
15
  (s, __, ast) =>
16
16
  S.ParseResult.try({
17
17
  try: () => jwtDecode(s, options),
@@ -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, struct } from "@effect-app/schema"
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 = struct({ body: schema, meta: QueueMeta })
34
- const drainW = struct({ body: drainSchema, meta: QueueMeta })
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, struct } from "effect-app/schema"
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 = struct({
36
+ const wireSchema = S.Struct({
37
37
  body: schema,
38
38
  meta: QueueMeta
39
39
  })
40
- const drainW = struct({ body: drainSchema, meta: QueueMeta })
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 = struct({
23
+ export const QueueMeta = S.Struct({
25
24
  requestContext: RequestContext,
26
- span: S.optional(struct({
27
- spanId: S.string,
28
- traceId: S.string,
29
- sampled: S.boolean
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.array(schema)), Effect.provide(rctx), Effect.withSpan("encodeMany"))
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.array(schema)),
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.struct(fieldsSchema["fields"]) as unknown as typeof schema : schema)
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.union(..._.ast.types.map((_) =>
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.array(schema))(
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.array(a.schema ?? schema)), Effect.provide(rctx))))
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.array(a.schema)),
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.array(schema))
610
- const decMany = S.decode(S.array(schema))
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.struct({ id: S.unknown }) })
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.struct({ id: S.string }) as any
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.isTransform(t)) {
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.struct({
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: fc.Arbitrary<T>) {
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.Arbitrary<T>) {
25
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
26
- return generate(arb(fc as any))
24
+ export function generateFromArbitrary<T>(arb: A.LazyArbitrary<T>) {
25
+ return generate(arb(FastCheck))
27
26
  }
@@ -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.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)
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.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")),
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.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")),
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.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)),
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.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)),
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)
@@ -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=