effect-app 0.186.2 → 0.187.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 CHANGED
@@ -1,5 +1,25 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 0.187.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @effect-app/schema@0.208.1
9
+
10
+ ## 0.187.0
11
+
12
+ ### Minor Changes
13
+
14
+ - 51253a2: update packages
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [51253a2]
19
+ - @effect-app/fluent-extensions@0.148.0
20
+ - @effect-app/schema@0.208.0
21
+ - @effect-app/core@0.154.0
22
+
3
23
  ## 0.186.2
4
24
 
5
25
  ### Patch Changes
@@ -87,7 +87,7 @@ export declare namespace OperationProgress {
87
87
  total: S.WithDefaults<S.Schema<number & S.NonNegativeIntBrand, number, never>> & S.Schema<number & S.NonNegativeIntBrand, number, never> & {
88
88
  withDefault: S.PropertySignature<":", number & S.NonNegativeIntBrand, never, ":", number, true, never>;
89
89
  };
90
- }, never>>;
90
+ }>>;
91
91
  export class From extends From_base {
92
92
  }
93
93
  export {};
@@ -96,7 +96,7 @@ export declare namespace Success {
96
96
  const From_base_1: S.FromClass<S.Struct.Encoded<{
97
97
  readonly _tag: import("@effect/schema/Schema").literal<["Success"]>;
98
98
  message: S.PropertySignature<":", (string & S.NonEmptyString2kBrand) | null, never, ":", string | null, true, never>;
99
- }, never>>;
99
+ }>>;
100
100
  export class From extends From_base_1 {
101
101
  }
102
102
  export {};
@@ -105,7 +105,7 @@ export declare namespace Failure {
105
105
  const From_base_2: S.FromClass<S.Struct.Encoded<{
106
106
  readonly _tag: import("@effect/schema/Schema").literal<["Failure"]>;
107
107
  message: S.PropertySignature<":", (string & S.NonEmptyString2kBrand) | null, never, ":", string | null, true, never>;
108
- }, never>>;
108
+ }>>;
109
109
  export class From extends From_base_2 {
110
110
  }
111
111
  export {};
@@ -123,19 +123,7 @@ export declare namespace Operation {
123
123
  result: S.PropertySignature<"?:", Success | Failure | undefined, never, "?:", Success.From | Failure.From | undefined, false, never>;
124
124
  createdAt: S.PropertySignature<":", Date, never, ":", string, true, never>;
125
125
  updatedAt: S.PropertySignature<":", Date | null, never, ":", string | null, true, never>;
126
- }, S.Struct.EncodedTokenKeys<{
127
- id: S.WithDefaults<S.Schema<string & S.StringIdBrand, string, never> & {
128
- make: () => S.StringId;
129
- withDefault: S.PropertySignature<":", S.StringId, never, ":", string, true, never>;
130
- }> & S.Schema<string & S.StringIdBrand, string, never> & {
131
- make: () => S.StringId;
132
- withDefault: S.PropertySignature<":", S.StringId, never, ":", string, true, never>;
133
- };
134
- progress: S.PropertySignature<"?:", OperationProgress | undefined, never, "?:", OperationProgress.From | undefined, false, never>;
135
- result: S.PropertySignature<"?:", Success | Failure | undefined, never, "?:", Success.From | Failure.From | undefined, false, never>;
136
- createdAt: S.PropertySignature<":", Date, never, ":", string, true, never>;
137
- updatedAt: S.PropertySignature<":", Date | null, never, ":", string | null, true, never>;
138
- }>>>;
126
+ }>>;
139
127
  export class From extends From_base_3 {
140
128
  }
141
129
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Operations.d.ts","sourceRoot":"","sources":["../src/Operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAA;AACpC,eAAO,MAAM,WAAW;;;;;;CAAa,CAAA;;;;;;;;;;;;;;;AAErC,qBAAa,iBAAkB,SAAQ,sBAMrC;CAAG;;;;;;;;;;;AAEL,qBAAa,OAAQ,SAAQ,YAE3B;CAAG;;;;;;;;;;;AAEL,qBAAa,OAAQ,SAAQ,YAE3B;CAAG;AAEL,eAAO,MAAM,eAAe;;;CAAiD,CAAA;AAC7E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnE,qBAAa,SAAU,SAAQ,cAM7B;CAAG;AAKL,yBAAiB,iBAAiB,CAAC;;;;;;;;;IACjC,MAAM,OAAO,IAAK,SAAQ,SAAuC;KAAG;;CACrE;AACD,yBAAiB,OAAO,CAAC;;;;;IACvB,MAAM,OAAO,IAAK,SAAQ,WAA6B;KAAG;;CAC3D;AACD,yBAAiB,OAAO,CAAC;;;;;IACvB,MAAM,OAAO,IAAK,SAAQ,WAA6B;KAAG;;CAC3D;AACD,yBAAiB,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;IACzB,MAAM,OAAO,IAAK,SAAQ,WAA+B;KAAG;;CAC7D"}
1
+ {"version":3,"file":"Operations.d.ts","sourceRoot":"","sources":["../src/Operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAA;AACpC,eAAO,MAAM,WAAW;;;;;;CAAa,CAAA;;;;;;;;;;;;;;;AAErC,qBAAa,iBAAkB,SAAQ,sBAMrC;CAAG;;;;;;;;;;;AAEL,qBAAa,OAAQ,SAAQ,YAE3B;CAAG;;;;;;;;;;;AAEL,qBAAa,OAAQ,SAAQ,YAE3B;CAAG;AAEL,eAAO,MAAM,eAAe;;;CAAiD,CAAA;AAC7E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnE,qBAAa,SAAU,SAAQ,cAM7B;CAAG;AAKL,yBAAiB,iBAAiB,CAAC;;;;;;;;;IACjC,MAAM,OAAO,IAAK,SAAQ,SAAuC;KAAG;;CACrE;AACD,yBAAiB,OAAO,CAAC;;;;;IACvB,MAAM,OAAO,IAAK,SAAQ,WAA6B;KAAG;;CAC3D;AACD,yBAAiB,OAAO,CAAC;;;;;IACvB,MAAM,OAAO,IAAK,SAAQ,WAA6B;KAAG;;CAC3D;AACD,yBAAiB,SAAS,CAAC;;;;;;;;;;;;;;IACzB,MAAM,OAAO,IAAK,SAAQ,WAA+B;KAAG;;CAC7D"}
@@ -16,12 +16,12 @@ export declare function fetchApi(method: Method, path: string, body?: unknown):
16
16
  status: number;
17
17
  body: unknown;
18
18
  headers: import("@effect/platform/Http/Headers").Headers;
19
- } | FetchResponse<unknown>, NotFoundError<ItemType> | InvalidStateError | ServiceUnavailableError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, HttpClient.Client.Default | ApiConfig>;
19
+ } | FetchResponse<unknown>, NotFoundError<ItemType> | InvalidStateError | ServiceUnavailableError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, ApiConfig | HttpClient.Client.Default>;
20
20
  export declare function fetchApi2S<RequestR, RequestFrom, RequestTo, ResponseR, ResponseFrom, ResponseTo>(request: Schema<RequestTo, RequestFrom, RequestR>, response: Schema<ResponseTo, ResponseFrom, ResponseR>): (method: Method, path: Path) => (req: RequestTo) => Effect.Effect<{
21
21
  body: ResponseTo;
22
22
  headers: Headers;
23
23
  status: number;
24
- }, S.ParseResult.ParseError | NotFoundError<ItemType> | InvalidStateError | ServiceUnavailableError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | ResError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, HttpClient.Client.Default | ApiConfig | RequestR | ResponseR>;
24
+ }, S.ParseResult.ParseError | NotFoundError<ItemType> | InvalidStateError | ServiceUnavailableError | ValidationError | NotLoggedInError | import("./errors.js").LoginError | UnauthorizedError | OptimisticConcurrencyException | HttpRequestError | ResError | HttpResponseError<unknown> | import("@effect/platform/Http/Body").BodyError, ApiConfig | HttpClient.Client.Default | RequestR | ResponseR>;
25
25
  export declare function fetchApi3S<RequestA, RequestE, ResponseE = unknown, ResponseA = void>({ Request, Response }: {
26
26
  Request: REST.RequestSchemed<RequestA, RequestE>;
27
27
  Response: REST.ReqRes<ResponseA, ResponseE, any>;
package/dist/service.d.ts CHANGED
@@ -51,7 +51,7 @@ export declare const TagClassMakeId: <ServiceImpl, R, E, const Key extends strin
51
51
  };
52
52
  of: (service: Context.TagClassShape<any, any>) => Id;
53
53
  make: Effect<Id, E, R>;
54
- } & Context.Tag<Id, Id> & (ServiceImpl extends Record<PropertyKey, any> ? { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_3, infer R_3> ? (...args: Readonly<Args_1>) => Effect<A, E_3, Id | R_3> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_4, infer R_4> ? Effect<A_2, E_4, Id | R_4> : Effect<ServiceImpl[k], never, Id>; } : {}) & {
55
- use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_5, infer R_5> ? Effect<A_3, E_5, Id | R_5> : Effect<X, never, Id>;
54
+ } & Context.Tag<Id, Id> & (ServiceImpl extends Record<PropertyKey, any> ? { [k in keyof ServiceImpl as ServiceImpl[k] extends (...args_0: infer Args) => infer Ret ? ((...args: Readonly<Args>) => Ret) extends ServiceImpl[k] ? k : never : k]: ServiceImpl[k] extends (...args_0: infer Args_1) => Effect<infer A, infer E_3, infer R_3> ? (...args: Readonly<Args_1>) => Effect<A, E_3, R_3 | Id> : ServiceImpl[k] extends (...args_0: infer Args_2) => infer A_1 ? (...args: Readonly<Args_2>) => Effect<A_1, never, Id> : ServiceImpl[k] extends Effect<infer A_2, infer E_4, infer R_4> ? Effect<A_2, E_4, R_4 | Id> : Effect<ServiceImpl[k], never, Id>; } : {}) & {
55
+ use: <X>(body: (_: ServiceImpl) => X) => X extends Effect<infer A_3, infer E_5, infer R_5> ? Effect<A_3, E_5, R_5 | Id> : Effect<X, never, Id>;
56
56
  };
57
57
  //# sourceMappingURL=service.d.ts.map
@@ -35,7 +35,7 @@ declare const FiberBag_base: (abstract new (service: {
35
35
  run: <R, XE extends never, XA extends never>(effect: Effect.Effect<XA, XE, R>) => Effect.Effect<Fiber.RuntimeFiber<XA, XE>, never, R>;
36
36
  add: (...fibers: Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
37
37
  addAll: (fibers: readonly Fiber.RuntimeFiber<never, never>[]) => Effect.Effect<void, never, never>;
38
- }) => X) => X extends Effect<infer A, infer E_2, infer R_3> ? Effect<A, E_2, FiberBag | R_3> : Effect<X, never, FiberBag>;
38
+ }) => X) => X extends Effect<infer A, infer E_2, infer R_3> ? Effect<A, E_2, R_3 | FiberBag> : Effect<X, never, FiberBag>;
39
39
  };
40
40
  /**
41
41
  * Whenever you fork long running fibers e.g via `Effect.forkScoped` or `Effect.forkDaemon`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "0.186.2",
3
+ "version": "0.187.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -13,14 +13,14 @@
13
13
  "ts-pattern": "^5.0.8",
14
14
  "uuid": "^9.0.1",
15
15
  "validator": "^13.11.0",
16
- "@effect-app/fluent-extensions": "0.147.0",
17
- "@effect-app/core": "0.153.0",
18
- "@effect-app/schema": "0.207.1"
16
+ "@effect-app/core": "0.154.0",
17
+ "@effect-app/schema": "0.208.1",
18
+ "@effect-app/fluent-extensions": "0.148.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@babel/cli": "^7.23.9",
22
22
  "@faker-js/faker": "^8.4.1",
23
- "@types/node": "~20.11.26",
23
+ "@types/node": "~20.11.27",
24
24
  "@types/uuid": "^9.0.8",
25
25
  "@types/validator": "^13.11.9",
26
26
  "fast-check": "~3.16.0",
@@ -29,9 +29,9 @@
29
29
  "vitest": "^1.3.1"
30
30
  },
31
31
  "peerDependencies": {
32
- "@effect/platform": "^0.48.0",
33
- "effect": "^2.4.4",
34
- "@effect/schema": "^0.64.0",
32
+ "@effect/platform": "^0.48.1",
33
+ "effect": "^2.4.5",
34
+ "@effect/schema": "^0.64.1",
35
35
  "@fp-ts/optic": "0.22.0"
36
36
  },
37
37
  "typesVersions": {
@@ -0,0 +1,23 @@
1
+ // vitest.config.ts
2
+ import { defineConfig } from "file:///Users/patrickroza/Projects/Personal/effect-ts-app/libs/node_modules/.pnpm/vite@4.0.0_@types+node@18.11.12/node_modules/vite/dist/node/index.js";
3
+
4
+ // ../../vite.config.base.ts
5
+ import { tsPlugin } from "file:///Users/patrickroza/Projects/Personal/effect-ts-app/libs/packages/compiler/dist/vitePlugin.js";
6
+ function makeConfig() {
7
+ return {
8
+ plugins: [tsPlugin({})],
9
+ test: {
10
+ include: ["./_src/**/*.test.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
11
+ exclude: ["./_test/**/*"],
12
+ reporters: "verbose",
13
+ globals: true
14
+ }
15
+ };
16
+ }
17
+
18
+ // vitest.config.ts
19
+ var vitest_config_default = defineConfig(makeConfig());
20
+ export {
21
+ vitest_config_default as default
22
+ };
23
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZXN0LmNvbmZpZy50cyIsICIuLi8uLi92aXRlLmNvbmZpZy5iYXNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlicy9wYWNrYWdlcy9ib2lsZXJwbGF0ZS1wcmVsdWRlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvUHJvamVjdHMvUGVyc29uYWwvZWZmZWN0LXRzLWFwcC9saWJzL3BhY2thZ2VzL2JvaWxlcnBsYXRlLXByZWx1ZGUvdml0ZXN0LmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vVXNlcnMvcGF0cmlja3JvemEvUHJvamVjdHMvUGVyc29uYWwvZWZmZWN0LXRzLWFwcC9saWJzL3BhY2thZ2VzL2JvaWxlcnBsYXRlLXByZWx1ZGUvdml0ZXN0LmNvbmZpZy50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IGRlZmluZUNvbmZpZyB9IGZyb20gXCJ2aXRlXCJcbmltcG9ydCBtYWtlQ29uZmlnIGZyb20gXCIuLi8uLi92aXRlLmNvbmZpZy5iYXNlXCJcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKG1ha2VDb25maWcoKSlcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlic1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL3BhdHJpY2tyb3phL1Byb2plY3RzL1BlcnNvbmFsL2VmZmVjdC10cy1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9Qcm9qZWN0cy9QZXJzb25hbC9lZmZlY3QtdHMtYXBwL2xpYnMvdml0ZS5jb25maWcuYmFzZS50c1wiOy8vLyA8cmVmZXJlbmNlIHR5cGVzPVwidml0ZXN0XCIgLz5cbmltcG9ydCB7IHRzUGx1Z2luIH0gZnJvbSBcIkBlZmZlY3QtdHMtYXBwL2NvbXBpbGVyL3ZpdGVQbHVnaW5cIlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZUNvbmZpZygpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgIHBsdWdpbnM6IFt0c1BsdWdpbih7fSldLFxuICAgIHRlc3Q6IHtcbiAgICAgIGluY2x1ZGU6IFtcIi4vX3NyYy8qKi8qLnRlc3Que2pzLG1qcyxjanMsdHMsbXRzLGN0cyxqc3gsdHN4fVwiXSxcbiAgICAgIGV4Y2x1ZGU6IFtcIi4vX3Rlc3QvKiovKlwiXSxcbiAgICAgIHJlcG9ydGVyczogXCJ2ZXJib3NlXCIsXG4gICAgICBnbG9iYWxzOiB0cnVlXG4gICAgfSxcbiAgICAvLyByZXNvbHZlOiB7XG4gICAgLy8gICBhbGlhczoge1xuICAgIC8vICAgICBcIkBlZmZlY3QvaW8vdGVzdFwiOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCBcIi90ZXN0XCIpLFxuICAgIC8vICAgICBcIkBlZmZlY3QvaW9cIjogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgXCIvc3JjXCIpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixTQUFTLGdCQUFnQjtBQUNWLFNBQVIsYUFBOEI7QUFDbkMsU0FBTztBQUFBLElBRUwsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFBQSxJQUN0QixNQUFNO0FBQUEsTUFDSixTQUFTLENBQUMsa0RBQWtEO0FBQUEsTUFDNUQsU0FBUyxDQUFDLGNBQWM7QUFBQSxNQUN4QixXQUFXO0FBQUEsTUFDWCxTQUFTO0FBQUEsSUFDWDtBQUFBLEVBT0Y7QUFDRjs7O0FEZkEsSUFBTyx3QkFBUSxhQUFhLFdBQVcsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,33 +0,0 @@
1
- // packages/prelude/vitest.config.ts
2
- import { defineConfig } from "file:///Users/patrickroza/pj/effect-app/libs/node_modules/.pnpm/vite@5.1.5_@types+node@20.11.25/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: packages.reduce((acc, cur) => {
20
- acc[JSON.parse(fs.readFileSync(cur + "/package.json", "utf-8")).name] = path.resolve(cur, "src");
21
- return acc;
22
- }, {})
23
- };
24
- return cfg;
25
- }
26
-
27
- // packages/prelude/vitest.config.ts
28
- var __vite_injected_original_dirname2 = "/Users/patrickroza/pj/effect-app/libs/packages/prelude";
29
- var vitest_config_default = defineConfig(makeConfig(__vite_injected_original_dirname2));
30
- export {
31
- vitest_config_default as default
32
- };
33
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsicGFja2FnZXMvcHJlbHVkZS92aXRlc3QuY29uZmlnLnRzIiwgInZpdGUuY29uZmlnLmJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3BhY2thZ2VzL3ByZWx1ZGVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvcHJlbHVkZS92aXRlc3QuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9Vc2Vycy9wYXRyaWNrcm96YS9wai9lZmZlY3QtYXBwL2xpYnMvcGFja2FnZXMvcHJlbHVkZS92aXRlc3QuY29uZmlnLnRzXCI7Ly8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlc3RcIiAvPlxuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIlxuaW1wb3J0IG1ha2VDb25maWcgZnJvbSBcIi4uLy4uL3ZpdGUuY29uZmlnLmJhc2VcIlxuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcobWFrZUNvbmZpZyhfX2Rpcm5hbWUpKVxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCIvVXNlcnMvcGF0cmlja3JvemEvcGovZWZmZWN0LWFwcC9saWJzL3ZpdGUuY29uZmlnLmJhc2UudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL3BhdHJpY2tyb3phL3BqL2VmZmVjdC1hcHAvbGlicy92aXRlLmNvbmZpZy5iYXNlLnRzXCI7Ly8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ2aXRlc3RcIiAvPlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZXN0L2NvbmZpZ1wiXG5cbi8vIGNvbnN0IGF1dG9JbXBvcnQgPSBBdXRvSW1wb3J0KHtcbi8vICAgZHRzOiBcIi4vdGVzdC9hdXRvLWltcG9ydHMuZC50c1wiLFxuLy8gICAvLyBpbmNsdWRlOiBbXG4vLyAgIC8vICAgL1xcLnRlc3RcXC5bdGpdc3g/JC8gLy8gLnRzLCAudHN4LCAuanMsIC5qc3hcbi8vICAgLy8gXSxcbi8vICAgaW1wb3J0czogW1xuLy8gICAgIFwidml0ZXN0XCJcbi8vICAgXVxuLy8gfSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFrZUNvbmZpZyhkaXJOYW1lPzogc3RyaW5nKSB7XG4gIGNvbnN0IHByZWZpeCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIFwicGFja2FnZXNcIilcbiAgY29uc3QgcGFja2FnZXMgPSBmcy5yZWFkZGlyU3luYyhwcmVmaXgpLm1hcChmID0+IHByZWZpeCArIFwiL1wiICsgZikuZmlsdGVyKGYgPT4gZnMubHN0YXRTeW5jKGYpLmlzRGlyZWN0b3J5KCkgKVxuICBjb25zdCBjZmcgPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICAvL3BsdWdpbnM6IFthdXRvSW1wb3J0XSxcbiAgICB0ZXN0OiB7XG4gICAgICBpbmNsdWRlOiAgW1wiLi90ZXN0LyoqLyoudGVzdC57anMsbWpzLGNqcyx0cyxtdHMsY3RzLGpzeCx0c3h9XCJdLFxuICAgICAgcmVwb3J0ZXJzOiBcInZlcmJvc2VcIixcbiAgICAgIGdsb2JhbHM6IHRydWVcbiAgICB9LFxuICAgIHJlc29sdmU6IHBhY2thZ2VzLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcbiAgICAgIGFjY1tKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhjdXIgKyBcIi9wYWNrYWdlLmpzb25cIiwgXCJ1dGYtOFwiKSkubmFtZV0gPSBwYXRoLnJlc29sdmUoY3VyLCBcInNyY1wiKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIHt9KVxuICB9XG4gIC8vY29uc29sZS5sb2coY2ZnKVxuICByZXR1cm4gY2ZnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQ0EsU0FBUyxvQkFBb0I7OztBQ0E3QixPQUFPLFVBQVU7QUFDakIsT0FBTyxRQUFRO0FBRmYsSUFBTSxtQ0FBbUM7QUFnQjFCLFNBQVIsV0FBNEIsU0FBa0I7QUFDbkQsUUFBTSxTQUFTLEtBQUssUUFBUSxrQ0FBVyxVQUFVO0FBQ2pELFFBQU0sV0FBVyxHQUFHLFlBQVksTUFBTSxFQUFFLElBQUksT0FBSyxTQUFTLE1BQU0sQ0FBQyxFQUFFLE9BQU8sT0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBRTtBQUM3RyxRQUFNLE1BQU07QUFBQTtBQUFBO0FBQUEsSUFHVixNQUFNO0FBQUEsTUFDSixTQUFVLENBQUMsa0RBQWtEO0FBQUEsTUFDN0QsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLElBQ1g7QUFBQSxJQUNBLFNBQVMsU0FBUyxPQUFPLENBQUMsS0FBSyxRQUFRO0FBQ3JDLFVBQUksS0FBSyxNQUFNLEdBQUcsYUFBYSxNQUFNLGlCQUFpQixPQUFPLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxRQUFRLEtBQUssS0FBSztBQUMvRixhQUFPO0FBQUEsSUFDVCxHQUFHLENBQUMsQ0FBQztBQUFBLEVBQ1A7QUFFQSxTQUFPO0FBQ1Q7OztBRGxDQSxJQUFNQSxvQ0FBbUM7QUFJekMsSUFBTyx3QkFBUSxhQUFhLFdBQVdDLGlDQUFTLENBQUM7IiwKICAibmFtZXMiOiBbIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIl0KfQo=