@effect-app/infra 0.71.1 → 0.71.2

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.
@@ -1 +1 @@
1
- 729fbfce8447aab0d20f43120934adeec554c00c92004a20c37bc18f20fe1a5d
1
+ 3fdb756675565f3f5e5cdb6e2680f07a60ced261a3790df2cdfc23a21d160956
@@ -1,6 +1,8 @@
1
1
  import * as tsplus_module_1 from "@effect/io/Effect";
2
+ import * as tsplus_module_2 from "@effect/data/Either";
3
+ import * as tsplus_module_3 from "@effect/io/Logger";
2
4
  import { InvalidStateError } from "../../errors.js";
3
- import { checkDuplicatePaths } from "./makeJsonSchema.js";
5
+ import { checkPaths } from "./makeJsonSchema.js";
4
6
  const path = { path: "/securities/:id/search/:id2", method: "get" };
5
7
  const equalPaths = [
6
8
  "/securities/:idt/search/:id2",
@@ -9,8 +11,9 @@ const equalPaths = [
9
11
  ]
10
12
  .map((path) => ({ path, method: "get" }));
11
13
  const differentPaths = [
12
- "/securities/:id/search/",
13
14
  "/securities/search/:id2",
15
+ "/securities/:id/search/",
16
+ "/securities/:id/search/:id2",
14
17
  "/securities/:id/:id2/search/:id3"
15
18
  ]
16
19
  .map((path) => ({ path, method: "get" }))
@@ -18,8 +21,23 @@ const differentPaths = [
18
21
  "/securities/:idt/search/:id2"
19
22
  ]
20
23
  .map((path) => ({ path, method: "post" })));
21
- test("works", () => {
22
- expect(checkDuplicatePaths([path, ...differentPaths])).toStrictEqual(tsplus_module_1.succeed([path, ...differentPaths]));
23
- equalPaths.forEach((p) => expect(checkDuplicatePaths([path, p])).toStrictEqual(tsplus_module_1.fail(new InvalidStateError(`Duplicate method ${p.method} for path ${p.path}`))));
24
+ test("works", async () => {
25
+ expect(await tsplus_module_1.runPromise((checkPaths(differentPaths)))).toStrictEqual(differentPaths);
26
+ for (const p of equalPaths) {
27
+ expect(await tsplus_module_1.runPromiseEither(checkPaths([path, p]))).toStrictEqual(tsplus_module_2.left(new InvalidStateError(`Duplicate method ${p.method} for path ${p.path}`)));
28
+ }
29
+ expect(await tsplus_module_1.runPromiseEither(checkPaths(["a/:p1/c/:p2", "a/b"].map((path) => ({ path, method: "get" })))))
30
+ .toStrictEqual(tsplus_module_2.left(new InvalidStateError(`Path /a/b/ is shadowed by /a/:p1/`)));
31
+ expect(await tsplus_module_1.runPromiseEither(checkPaths(["a/:p1/c/:p2", "a/:p111/c/d"].map((path) => ({ path, method: "get" })))))
32
+ .toStrictEqual(tsplus_module_2.left(new InvalidStateError(`Path /a/:p1/c/d/ is shadowed by /a/:p1/c/:p2/`)));
33
+ });
34
+ test("log shadowing", async () => {
35
+ const arr = [];
36
+ const paths = ["a/b", "a/:p"].map((path) => ({ path, method: "get" }));
37
+ const CustomLogger = tsplus_module_3.make((_, __, message) => {
38
+ arr.push(message);
39
+ });
40
+ await tsplus_module_1.runPromise(tsplus_module_1.provideLayer(checkPaths(paths), tsplus_module_3.replace(tsplus_module_3.defaultLogger, CustomLogger)));
41
+ expect(arr).toStrictEqual([`Path /a/:p/ is partially shadowed by /a/b/`]);
24
42
  });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZUpzb25TY2hlbWEudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFekQsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBRW5FLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0NBQ2hDO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFM0MsTUFBTSxjQUFjLEdBR2Q7SUFDSix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLGtDQUFrQztDQUNuQztLQUNFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztLQUN4QyxNQUFNLENBQUM7SUFDTiw4QkFBOEI7Q0FDL0I7S0FDRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBRS9DLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBQ2pCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsd0JBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFL0csVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3ZCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUNsRCxxQkFBWSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCB7IGNoZWNrRHVwbGljYXRlUGF0aHMgfSBmcm9tIFwiLi9tYWtlSnNvblNjaGVtYS5qc1wiXG5cbmNvbnN0IHBhdGggPSB7IHBhdGg6IFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC86aWQyXCIsIG1ldGhvZDogXCJnZXRcIiB9XG5cbmNvbnN0IGVxdWFsUGF0aHMgPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkdC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMnRcIixcbiAgXCIvc2VjdXJpdGllcy86aWR0L3NlYXJjaC86aWQydFwiXG5dXG4gIC5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuY29uc3QgZGlmZmVyZW50UGF0aHM6IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG59W10gPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC9cIixcbiAgXCIvc2VjdXJpdGllcy9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC86aWQyL3NlYXJjaC86aWQzXCJcbl1cbiAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcImdldFwiIH0pKVxuICAuY29uY2F0KFtcbiAgICBcIi9zZWN1cml0aWVzLzppZHQvc2VhcmNoLzppZDJcIlxuICBdXG4gICAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcInBvc3RcIiB9KSkpXG5cbnRlc3QoXCJ3b3Jrc1wiLCAoKSA9PiB7XG4gIGV4cGVjdChjaGVja0R1cGxpY2F0ZVBhdGhzKFtwYXRoLCAuLi5kaWZmZXJlbnRQYXRoc10pKS50b1N0cmljdEVxdWFsKEVmZmVjdC5zdWNjZWVkKFtwYXRoLCAuLi5kaWZmZXJlbnRQYXRoc10pKVxuXG4gIGVxdWFsUGF0aHMuZm9yRWFjaCgocCkgPT5cbiAgICBleHBlY3QoY2hlY2tEdXBsaWNhdGVQYXRocyhbcGF0aCwgcF0pKS50b1N0cmljdEVxdWFsKFxuICAgICAgRWZmZWN0LmZhaWwobmV3IEludmFsaWRTdGF0ZUVycm9yKGBEdXBsaWNhdGUgbWV0aG9kICR7cC5tZXRob2R9IGZvciBwYXRoICR7cC5wYXRofWApKVxuICAgIClcbiAgKVxufSlcbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZUpzb25TY2hlbWEudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBRW5FLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0NBQ2hDO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFM0MsTUFBTSxjQUFjLEdBR2Q7SUFDSix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLDZCQUE2QjtJQUM3QixrQ0FBa0M7Q0FDbkM7S0FDRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDeEMsTUFBTSxDQUFDO0lBQ04sOEJBQThCO0NBQy9CO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUUvQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3ZCLE1BQU0sQ0FBQyxpQ0FBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFbkYsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDMUIsTUFBTSxDQUFDLHVDQUFNLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFpQixDQUFDLENBQUMsYUFBYSxDQUNoRSxxQkFBWSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQUE7S0FDRjtJQUVELE1BQU0sQ0FBQyx1Q0FBTSxVQUFVLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBaUIsQ0FBQztTQUN2RyxhQUFhLENBQ1oscUJBQVksSUFBSSxpQkFBaUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQ3hFLENBQUE7SUFFSCxNQUFNLENBQUMsdUNBQU0sVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7U0FDL0csYUFBYSxDQUNaLHFCQUFZLElBQUksaUJBQWlCLENBQUMsK0NBQStDLENBQUMsQ0FBQyxDQUNwRixDQUFBO0FBQ0wsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQy9CLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQTtJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUV0RSxNQUFNLFlBQVksR0FBRyxxQkFBMEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ2hFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkIsQ0FBQyxDQUFDLENBQUE7SUFFRixpQ0FBTSw2QkFBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ1AsdURBQXFDLFlBQVksQ0FBQyxDQUFDLENBQ3RELENBQUE7SUFFYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsNENBQTRDLENBQUMsQ0FBQyxDQUFBO0FBQzNFLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCB7IGNoZWNrUGF0aHMgfSBmcm9tIFwiLi9tYWtlSnNvblNjaGVtYS5qc1wiXG5cbmNvbnN0IHBhdGggPSB7IHBhdGg6IFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC86aWQyXCIsIG1ldGhvZDogXCJnZXRcIiB9XG5cbmNvbnN0IGVxdWFsUGF0aHMgPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkdC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMnRcIixcbiAgXCIvc2VjdXJpdGllcy86aWR0L3NlYXJjaC86aWQydFwiXG5dXG4gIC5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuY29uc3QgZGlmZmVyZW50UGF0aHM6IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG59W10gPSBbXG4gIFwiL3NlY3VyaXRpZXMvc2VhcmNoLzppZDJcIixcbiAgXCIvc2VjdXJpdGllcy86aWQvc2VhcmNoL1wiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC86aWQyL3NlYXJjaC86aWQzXCJcbl1cbiAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcImdldFwiIH0pKVxuICAuY29uY2F0KFtcbiAgICBcIi9zZWN1cml0aWVzLzppZHQvc2VhcmNoLzppZDJcIlxuICBdXG4gICAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcInBvc3RcIiB9KSkpXG5cbnRlc3QoXCJ3b3Jrc1wiLCBhc3luYyAoKSA9PiB7XG4gIGV4cGVjdChhd2FpdCAoY2hlY2tQYXRocyhkaWZmZXJlbnRQYXRocykpLnJ1blByb21pc2UpLnRvU3RyaWN0RXF1YWwoZGlmZmVyZW50UGF0aHMpXG5cbiAgZm9yIChjb25zdCBwIG9mIGVxdWFsUGF0aHMpIHtcbiAgICBleHBlY3QoYXdhaXQgY2hlY2tQYXRocyhbcGF0aCwgcF0pLnJ1blByb21pc2VFaXRoZXIpLnRvU3RyaWN0RXF1YWwoXG4gICAgICBFaXRoZXIubGVmdChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwLm1ldGhvZH0gZm9yIHBhdGggJHtwLnBhdGh9YCkpXG4gICAgKVxuICB9XG5cbiAgZXhwZWN0KGF3YWl0IGNoZWNrUGF0aHMoW1wiYS86cDEvYy86cDJcIiwgXCJhL2JcIl0ubWFwKChwYXRoKSA9PiAoeyBwYXRoLCBtZXRob2Q6IFwiZ2V0XCIgfSkpKS5ydW5Qcm9taXNlRWl0aGVyKVxuICAgIC50b1N0cmljdEVxdWFsKFxuICAgICAgRWl0aGVyLmxlZnQobmV3IEludmFsaWRTdGF0ZUVycm9yKGBQYXRoIC9hL2IvIGlzIHNoYWRvd2VkIGJ5IC9hLzpwMS9gKSlcbiAgICApXG5cbiAgZXhwZWN0KGF3YWl0IGNoZWNrUGF0aHMoW1wiYS86cDEvYy86cDJcIiwgXCJhLzpwMTExL2MvZFwiXS5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSkpLnJ1blByb21pc2VFaXRoZXIpXG4gICAgLnRvU3RyaWN0RXF1YWwoXG4gICAgICBFaXRoZXIubGVmdChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYFBhdGggL2EvOnAxL2MvZC8gaXMgc2hhZG93ZWQgYnkgL2EvOnAxL2MvOnAyL2ApKVxuICAgIClcbn0pXG5cbnRlc3QoXCJsb2cgc2hhZG93aW5nXCIsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IHBhdGhzID0gW1wiYS9iXCIsIFwiYS86cFwiXS5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuICBjb25zdCBDdXN0b21Mb2dnZXIgPSBMb2dnZXIubWFrZTxzdHJpbmcsIHZvaWQ+KChfLCBfXywgbWVzc2FnZSkgPT4ge1xuICAgIGFyci5wdXNoKG1lc3NhZ2UpXG4gIH0pXG5cbiAgYXdhaXQgY2hlY2tQYXRocyhwYXRocylcbiAgICAucHJvdmlkZUxheWVyKExvZ2dlci5yZXBsYWNlKExvZ2dlci5kZWZhdWx0TG9nZ2VyLCBDdXN0b21Mb2dnZXIpKVxuICAgIC5ydW5Qcm9taXNlXG5cbiAgZXhwZWN0KGFycikudG9TdHJpY3RFcXVhbChbYFBhdGggL2EvOnAvIGlzIHBhcnRpYWxseSBzaGFkb3dlZCBieSAvYS9iL2BdKVxufSlcbiJdfQ==
@@ -1 +1 @@
1
- 51caa33f7ddc350183a9d903d3b8b4c3f4a7e3faa600faec37ba6e76db2d090b
1
+ 227326c96d8f8db11aa5dd8162cb906e55a27b00a9069640a822be51cb025b58
@@ -5,57 +5,92 @@ import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
5
5
  import { InvalidStateError } from "../../errors.js";
6
6
  import * as RS from "./schema/routing.js";
7
7
  const rx = /:(\w+)/g;
8
- export function checkDuplicatePaths(paths) {
9
- const methods = Symbol("methods");
10
- const pathMethods = { [methods]: [] };
11
- const regex = /(?:^|\/)([^/:\n]+)|:(\w+)/g;
12
- for (const path of paths) {
13
- const matches = [...path.path.matchAll(regex)]
14
- .map((match) => match[1]
15
- ? { _tag: "resource", value: match[1] }
16
- : { _tag: "param", value: match[2] });
17
- let pathNavigator = pathMethods;
18
- for (let i = 0; i < matches.length;) {
19
- const match = matches[i];
20
- switch (match._tag) {
21
- case "resource": {
22
- if (!(match.value in (pathNavigator))) {
23
- ;
24
- (pathNavigator)[match.value] = { [methods]: [] };
25
- }
26
- pathNavigator = (pathNavigator)[match.value];
27
- i++;
28
- break;
8
+ class PathsTree {
9
+ methods;
10
+ params;
11
+ subpaths;
12
+ path;
13
+ constructor(path) {
14
+ this.methods = [];
15
+ this.params = {};
16
+ this.subpaths = {};
17
+ this.path = path;
18
+ }
19
+ }
20
+ function checkShadowing(pathNavigator, match) {
21
+ return tsplus_module_1.gen(function* ($) {
22
+ switch (match._tag) {
23
+ case "resource": {
24
+ // check shadowing: if 'a/:param' comes before 'a/b', then 'a/b' is shadowed
25
+ if (pathNavigator.params[1]) {
26
+ return yield* $(tsplus_module_1.fail(new InvalidStateError(`Path ${pathNavigator.path}${match.value}/ is shadowed by ${pathNavigator.params[1].path}`)));
29
27
  }
30
- case "param": {
31
- let numberOfParams = 1;
32
- while (i < matches.length && matches[i + 1]?._tag === "param") {
33
- numberOfParams++;
28
+ break;
29
+ }
30
+ case "param": {
31
+ // check shadowing: if 'a/b' comes before 'a/:param', then 'a/"param' is partially shadowed
32
+ const subpaths = Object.getOwnPropertyNames(pathNavigator.subpaths);
33
+ if (subpaths.length > 0) {
34
+ yield* $(tsplus_module_1.all(subpaths.map((s) => tsplus_module_1.logInfo(`Path ${pathNavigator.path}:${match.value}/ is partially shadowed by ${pathNavigator.subpaths[s].path}`))));
35
+ }
36
+ break;
37
+ }
38
+ }
39
+ });
40
+ }
41
+ export function checkPaths(paths) {
42
+ return tsplus_module_1.gen(function* ($) {
43
+ const pathMethods = new PathsTree("/");
44
+ const regex = /(?:^|\/)([^/:\n]+)|:(\w+)/g;
45
+ for (const path of paths) {
46
+ const matches = [...path.path.matchAll(regex)]
47
+ .map((match) => match[1]
48
+ ? { _tag: "resource", value: match[1] }
49
+ : { _tag: "param", value: match[2] });
50
+ let pathNavigator = pathMethods;
51
+ for (let i = 0; i < matches.length;) {
52
+ const match = matches[i];
53
+ yield* $(checkShadowing(pathNavigator, match));
54
+ switch (match._tag) {
55
+ case "resource": {
56
+ if (!(match.value in pathNavigator.subpaths)) {
57
+ pathNavigator.subpaths[match.value] = new PathsTree(`${pathNavigator.path}${match.value}/`);
58
+ }
59
+ pathNavigator = pathNavigator.subpaths[match.value];
34
60
  i++;
61
+ break;
35
62
  }
36
- if (!(numberOfParams in pathNavigator)) {
37
- ;
38
- (pathNavigator)[numberOfParams] = { [methods]: [] };
63
+ case "param": {
64
+ const paramsNames = [match.value];
65
+ let numberOfParams = 1;
66
+ while (i < matches.length && matches[i + 1]?._tag === "param") {
67
+ numberOfParams++;
68
+ i++;
69
+ paramsNames.push(match.value);
70
+ }
71
+ if (!(numberOfParams in pathNavigator.params)) {
72
+ pathNavigator.params[numberOfParams] = new PathsTree(`${pathNavigator.path}:${paramsNames.join("/:")}/`);
73
+ }
74
+ pathNavigator = pathNavigator.params[numberOfParams];
75
+ i++;
76
+ break;
39
77
  }
40
- pathNavigator = (pathNavigator)[numberOfParams];
41
- i++;
42
- break;
43
78
  }
44
79
  }
80
+ if (pathNavigator.methods.includes(path.method)) {
81
+ // throw duplicate path-method error
82
+ return yield* $(tsplus_module_1.fail(new InvalidStateError(`Duplicate method ${path.method} for path ${path.path}`)));
83
+ }
84
+ pathNavigator.methods.push(path.method);
45
85
  }
46
- if (pathNavigator[methods].includes(path.method)) {
47
- // throw duplicate path-method error
48
- return tsplus_module_1.fail(new InvalidStateError(`Duplicate method ${path.method} for path ${path.path}`));
49
- }
50
- pathNavigator[methods].push(path.method);
51
- }
52
- return tsplus_module_1.succeed(paths);
86
+ return paths;
87
+ });
53
88
  }
54
89
  /**
55
90
  * Work in progress JSONSchema generator.
56
91
  */
57
92
  export function makeJsonSchema(r) {
58
- return tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_3.ext_forEach(tsplus_module_2.fromIterable(r), RS.makeFromSchema), checkDuplicatePaths), (e) => {
93
+ return tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_3.ext_forEach(tsplus_module_2.fromIterable(r), RS.makeFromSchema), checkPaths), (e) => {
59
94
  const map = ({ method, path, responses, ...rest }) => ({
60
95
  [method]: {
61
96
  ...rest,
@@ -84,4 +119,4 @@ class Response {
84
119
  this.type = type;
85
120
  }
86
121
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLEtBQW1CO0lBRW5CLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUtqQyxNQUFNLFdBQVcsR0FBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ2xELE1BQU0sS0FBSyxHQUFHLDRCQUE0QixDQUFBO0lBRTFDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDTixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQVc7WUFDaEQsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBRSxFQUFXLENBQ2pELENBQUE7UUFFSCxJQUFJLGFBQWEsR0FBMkIsV0FBVyxDQUFBO1FBQ3ZELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHO1lBQ25DLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUUsQ0FBQTtZQUN6QixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUssVUFBVSxDQUFDLENBQUM7b0JBQ2YsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUU7d0JBQ3JDLENBQUM7d0JBQUEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFBO3FCQUNsRDtvQkFDRCxhQUFhLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFFLENBQUE7b0JBQzdDLENBQUMsRUFBRSxDQUFBO29CQUNILE1BQUs7aUJBQ047Z0JBQ0QsS0FBSyxPQUFPLENBQUMsQ0FBQztvQkFDWixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUE7b0JBQ3RCLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUssT0FBTyxFQUFFO3dCQUM3RCxjQUFjLEVBQUUsQ0FBQTt3QkFDaEIsQ0FBQyxFQUFFLENBQUE7cUJBQ0o7b0JBRUQsSUFBSSxDQUFDLENBQUMsY0FBYyxJQUFJLGFBQWEsQ0FBQyxFQUFFO3dCQUN0QyxDQUFDO3dCQUFBLENBQUMsYUFBYSxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFBO3FCQUNyRDtvQkFDRCxhQUFhLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxjQUFjLENBQUUsQ0FBQTtvQkFDaEQsQ0FBQyxFQUFFLENBQUE7b0JBQ0gsTUFBSztpQkFDTjthQUNGO1NBQ0Y7UUFFRCxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hELG9DQUFvQztZQUNwQyxPQUFPLHFCQUFZLElBQUksaUJBQWlCLENBQUMsb0JBQW9CLElBQUksQ0FBQyxNQUFNLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUNuRztRQUNELGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0tBQ3pDO0lBRUQsT0FBTyx3QkFBZSxLQUFLLENBQUMsQ0FBQTtBQUM5QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLENBQWtDO0lBQy9ELE9BQU8sb0JBQUEsd0JBQUEsNEJBQUEsNkJBQ1MsQ0FBQyxDQUFDLEVBQ0QsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUN4QixtQkFBbUIsQ0FBQyxFQUN4QixDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ1QsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxFQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ1IsR0FBRyxJQUFJO2dCQUNQLFNBQVMsRUFBRyxTQUF3QixDQUFDLE1BQU0sQ0FDekMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUU7b0JBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFBO29CQUMvQixPQUFPLElBQUksQ0FBQTtnQkFDYixDQUFDLEVBQ0QsRUFBc0QsQ0FDdkQ7YUFDRjtTQUNGLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDYixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNWLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUNYLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDYixHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQVE7YUFDakIsQ0FBQTtZQUNELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQyxFQUNELEVBQTZELENBQzlELENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFFBQVE7SUFFTTtJQUNBO0lBRmxCLFlBQ2tCLFVBQWtCLEVBQ2xCLElBQVMsQ0FBQyxrQ0FBa0M7O1FBRDVDLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBSztJQUN4QixDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5cbmltcG9ydCB7IEludmFsaWRTdGF0ZUVycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9ycy5qc1wiXG5pbXBvcnQgKiBhcyBSUyBmcm9tIFwiLi9zY2hlbWEvcm91dGluZy5qc1wiXG5cbnR5cGUgTWV0aG9kcyA9IFwiR0VUXCIgfCBcIlBVVFwiIHwgXCJQT1NUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiXG5cbmNvbnN0IHJ4ID0gLzooXFx3KykvZ1xuXG50eXBlIF9BPEM+ID0gQyBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgQT4gPyBBIDogbmV2ZXJcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRHVwbGljYXRlUGF0aHM8VCBleHRlbmRzIHsgcGF0aDogc3RyaW5nOyBtZXRob2Q6IHN0cmluZyB9PihcbiAgcGF0aHM6IHJlYWRvbmx5IFRbXVxuKTogRWZmZWN0PG5ldmVyLCBJbnZhbGlkU3RhdGVFcnJvciwgcmVhZG9ubHkgVFtdPiB7XG4gIGNvbnN0IG1ldGhvZHMgPSBTeW1ib2woXCJtZXRob2RzXCIpXG4gIGludGVyZmFjZSBQYXRoTWV0aG9kcyB7XG4gICAgW2tleTogc3RyaW5nIHwgbnVtYmVyXTogdGhpcyB8IHVuZGVmaW5lZFxuICAgIFttZXRob2RzXTogc3RyaW5nW11cbiAgfVxuICBjb25zdCBwYXRoTWV0aG9kczogUGF0aE1ldGhvZHMgPSB7IFttZXRob2RzXTogW10gfVxuICBjb25zdCByZWdleCA9IC8oPzpefFxcLykoW14vOlxcbl0rKXw6KFxcdyspL2dcblxuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gWy4uLnBhdGgucGF0aC5tYXRjaEFsbChyZWdleCldXG4gICAgICAubWFwKChtYXRjaCkgPT5cbiAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgICA/IHsgX3RhZzogXCJyZXNvdXJjZVwiLCB2YWx1ZTogbWF0Y2hbMV0gfSBhcyBjb25zdFxuICAgICAgICAgIDogeyBfdGFnOiBcInBhcmFtXCIsIHZhbHVlOiBtYXRjaFsyXSEgfSBhcyBjb25zdFxuICAgICAgKVxuXG4gICAgbGV0IHBhdGhOYXZpZ2F0b3I6IFBhdGhNZXRob2RzIHwgc3RyaW5nW10gPSBwYXRoTWV0aG9kc1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0Y2hlcy5sZW5ndGg7KSB7XG4gICAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXNbaV0hXG4gICAgICBzd2l0Y2ggKG1hdGNoLl90YWcpIHtcbiAgICAgICAgY2FzZSBcInJlc291cmNlXCI6IHtcbiAgICAgICAgICBpZiAoIShtYXRjaC52YWx1ZSBpbiAocGF0aE5hdmlnYXRvcikpKSB7XG4gICAgICAgICAgICA7KHBhdGhOYXZpZ2F0b3IpW21hdGNoLnZhbHVlXSA9IHsgW21ldGhvZHNdOiBbXSB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBhdGhOYXZpZ2F0b3IgPSAocGF0aE5hdmlnYXRvcilbbWF0Y2gudmFsdWVdIVxuICAgICAgICAgIGkrK1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInBhcmFtXCI6IHtcbiAgICAgICAgICBsZXQgbnVtYmVyT2ZQYXJhbXMgPSAxXG4gICAgICAgICAgd2hpbGUgKGkgPCBtYXRjaGVzLmxlbmd0aCAmJiBtYXRjaGVzW2kgKyAxXT8uX3RhZyA9PT0gXCJwYXJhbVwiKSB7XG4gICAgICAgICAgICBudW1iZXJPZlBhcmFtcysrXG4gICAgICAgICAgICBpKytcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIShudW1iZXJPZlBhcmFtcyBpbiBwYXRoTmF2aWdhdG9yKSkge1xuICAgICAgICAgICAgOyhwYXRoTmF2aWdhdG9yKVtudW1iZXJPZlBhcmFtc10gPSB7IFttZXRob2RzXTogW10gfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwYXRoTmF2aWdhdG9yID0gKHBhdGhOYXZpZ2F0b3IpW251bWJlck9mUGFyYW1zXSFcbiAgICAgICAgICBpKytcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhdGhOYXZpZ2F0b3JbbWV0aG9kc10uaW5jbHVkZXMocGF0aC5tZXRob2QpKSB7XG4gICAgICAvLyB0aHJvdyBkdXBsaWNhdGUgcGF0aC1tZXRob2QgZXJyb3JcbiAgICAgIHJldHVybiBFZmZlY3QuZmFpbChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwYXRoLm1ldGhvZH0gZm9yIHBhdGggJHtwYXRoLnBhdGh9YCkpXG4gICAgfVxuICAgIHBhdGhOYXZpZ2F0b3JbbWV0aG9kc10ucHVzaChwYXRoLm1ldGhvZClcbiAgfVxuXG4gIHJldHVybiBFZmZlY3Quc3VjY2VlZChwYXRocylcbn1cblxuLyoqXG4gKiBXb3JrIGluIHByb2dyZXNzIEpTT05TY2hlbWEgZ2VuZXJhdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUpzb25TY2hlbWEocjogSXRlcmFibGU8UlMuUm91dGVEZXNjcmlwdG9yQW55Pikge1xuICByZXR1cm4gQ2h1bmtcbiAgICAuZnJvbUl0ZXJhYmxlKHIpXG4gICAgLmZvckVhY2hFZmZlY3QoUlMubWFrZUZyb21TY2hlbWEpXG4gICAgLmZsYXRNYXAoY2hlY2tEdXBsaWNhdGVQYXRocylcbiAgICAubWFwKChlKSA9PiB7XG4gICAgICBjb25zdCBtYXAgPSAoeyBtZXRob2QsIHBhdGgsIHJlc3BvbnNlcywgLi4ucmVzdCB9OiBfQTx0eXBlb2YgZT4pID0+ICh7XG4gICAgICAgIFttZXRob2RdOiB7XG4gICAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgICByZXNwb25zZXM6IChyZXNwb25zZXMgYXMgQXJyYXk8YW55PikucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cikgPT4ge1xuICAgICAgICAgICAgICBwcmV2W2N1ci5zdGF0dXNDb2RlXSA9IGN1ci50eXBlXG4gICAgICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge30gYXMgUmVjb3JkPFJlc3BvbnNlW1wic3RhdHVzQ29kZVwiXSwgUmVzcG9uc2VbXCJ0eXBlXCJdPlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBlLnJlZHVjZShcbiAgICAgICAgKHByZXYsIGUpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRoID0gZS5wYXRoLnNwbGl0KFwiP1wiKVswXS5yZXBsYWNlKHJ4LCAoX2EsIGIpID0+IGB7JHtifX1gKVxuICAgICAgICAgIHByZXZbcGF0aF0gPSB7XG4gICAgICAgICAgICAuLi5wcmV2W3BhdGhdLFxuICAgICAgICAgICAgLi4ubWFwKGUpIGFzIGFueVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8TWV0aG9kcywgUmV0dXJuVHlwZTx0eXBlb2YgbWFwPj4+XG4gICAgICApXG4gICAgfSlcbn1cblxuY2xhc3MgUmVzcG9uc2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyLFxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlOiBhbnkgLy8gc3RyaW5nIHwgSlNPTlNjaGVtYSB8IFN1YlNjaGVtYVxuICApIHt9XG59XG4iXX0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQixNQUFNLFNBQVM7SUFDRyxPQUFPLENBQVU7SUFDakIsTUFBTSxDQUEwQztJQUNoRCxRQUFRLENBQTBDO0lBQ2xELElBQUksQ0FBUTtJQUU1QixZQUFZLElBQVk7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBT0QsU0FBUyxjQUFjLENBQ3JCLGFBQXdCLEVBQ3hCLEtBQVk7SUFFWixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQ2YsNEVBQTRFO2dCQUM1RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUNkLElBQUksaUJBQWlCLENBQ25CLFFBQVEsYUFBYSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxvQkFBb0IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDM0YsQ0FDRixDQUFDLENBQUE7aUJBQ0g7Z0JBQ0Qs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QUk7Z0JBQ1AsU0FBUyxFQUFHLFNBQXdCLENBQUMsTUFBTSxDQUN6QyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7b0JBQy9CLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUMsRUFDRCxFQUFzRCxDQUN2RDthQUNGO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNiLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNiLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBUTthQUNqQixDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBQ0QsRUFBNkQsQ0FDOUQsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELE1BQU0sUUFBUTtJQUVNO0lBQ0E7SUFGbEIsWUFDa0IsVUFBa0IsRUFDbEIsSUFBUyxDQUFDLGtDQUFrQzs7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFLO0lBQ3hCLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCAqIGFzIFJTIGZyb20gXCIuL3NjaGVtYS9yb3V0aW5nLmpzXCJcblxudHlwZSBNZXRob2RzID0gXCJHRVRcIiB8IFwiUFVUXCIgfCBcIlBPU1RcIiB8IFwiUEFUQ0hcIiB8IFwiREVMRVRFXCJcblxuY29uc3QgcnggPSAvOihcXHcrKS9nXG5cbnR5cGUgX0E8Qz4gPSBDIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBBPiA/IEEgOiBuZXZlclxuXG5jbGFzcyBQYXRoc1RyZWUge1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW11cbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtczogeyBba2V5OiBudW1iZXJdOiBQYXRoc1RyZWUgfCB1bmRlZmluZWQgfVxuICBwdWJsaWMgcmVhZG9ubHkgc3VicGF0aHM6IHsgW2tleTogc3RyaW5nXTogUGF0aHNUcmVlIHwgdW5kZWZpbmVkIH1cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZykge1xuICAgIHRoaXMubWV0aG9kcyA9IFtdXG4gICAgdGhpcy5wYXJhbXMgPSB7fVxuICAgIHRoaXMuc3VicGF0aHMgPSB7fVxuICAgIHRoaXMucGF0aCA9IHBhdGhcbiAgfVxufVxuXG5pbnRlcmZhY2UgTWF0Y2gge1xuICBfdGFnOiBcInJlc291cmNlXCIgfCBcInBhcmFtXCJcbiAgdmFsdWU6IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBjaGVja1NoYWRvd2luZyhcbiAgcGF0aE5hdmlnYXRvcjogUGF0aHNUcmVlLFxuICBtYXRjaDogTWF0Y2hcbikge1xuICByZXR1cm4gRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgIHN3aXRjaCAobWF0Y2guX3RhZykge1xuICAgICAgY2FzZSBcInJlc291cmNlXCI6IHtcbiAgICAgICAgLy8gY2hlY2sgc2hhZG93aW5nOiBpZiAnYS86cGFyYW0nIGNvbWVzIGJlZm9yZSAnYS9iJywgdGhlbiAnYS9iJyBpcyBzaGFkb3dlZFxuICAgICAgICBpZiAocGF0aE5hdmlnYXRvci5wYXJhbXNbMV0pIHtcbiAgICAgICAgICByZXR1cm4geWllbGQqICQoRWZmZWN0LmZhaWwoXG4gICAgICAgICAgICBuZXcgSW52YWxpZFN0YXRlRXJyb3IoXG4gICAgICAgICAgICAgIGBQYXRoICR7cGF0aE5hdmlnYXRvci5wYXRofSR7bWF0Y2gudmFsdWV9LyBpcyBzaGFkb3dlZCBieSAke3BhdGhOYXZpZ2F0b3IucGFyYW1zWzFdLnBhdGh9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwYXJhbVwiOiB7XG4gICAgICAgIC8vIGNoZWNrIHNoYWRvd2luZzogaWYgJ2EvYicgY29tZXMgYmVmb3JlICdhLzpwYXJhbScsIHRoZW4gJ2EvXCJwYXJhbScgaXMgcGFydGlhbGx5IHNoYWRvd2VkXG4gICAgICAgIGNvbnN0IHN1YnBhdGhzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocGF0aE5hdmlnYXRvci5zdWJwYXRocylcbiAgICAgICAgaWYgKHN1YnBhdGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB5aWVsZCogJChFZmZlY3QuYWxsKHN1YnBhdGhzLm1hcCgocykgPT5cbiAgICAgICAgICAgIEVmZmVjdC5sb2dJbmZvKFxuICAgICAgICAgICAgICBgUGF0aCAke3BhdGhOYXZpZ2F0b3IucGF0aH06JHttYXRjaC52YWx1ZX0vIGlzIHBhcnRpYWxseSBzaGFkb3dlZCBieSAke3BhdGhOYXZpZ2F0b3Iuc3VicGF0aHNbc10hLnBhdGh9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQYXRoczxUIGV4dGVuZHMgeyBwYXRoOiBzdHJpbmc7IG1ldGhvZDogc3RyaW5nIH0+KFxuICBwYXRoczogcmVhZG9ubHkgVFtdXG4pIHtcbiAgcmV0dXJuIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICBjb25zdCBwYXRoTWV0aG9kczogUGF0aHNUcmVlID0gbmV3IFBhdGhzVHJlZShcIi9cIilcbiAgICBjb25zdCByZWdleCA9IC8oPzpefFxcLykoW14vOlxcbl0rKXw6KFxcdyspL2dcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4ucGF0aC5wYXRoLm1hdGNoQWxsKHJlZ2V4KV1cbiAgICAgICAgLm1hcCgobWF0Y2gpID0+XG4gICAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgICAgID8geyBfdGFnOiBcInJlc291cmNlXCIsIHZhbHVlOiBtYXRjaFsxXSB9IGFzIGNvbnN0XG4gICAgICAgICAgICA6IHsgX3RhZzogXCJwYXJhbVwiLCB2YWx1ZTogbWF0Y2hbMl0hIH0gYXMgY29uc3RcbiAgICAgICAgKVxuXG4gICAgICBsZXQgcGF0aE5hdmlnYXRvciA9IHBhdGhNZXRob2RzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXNbaV0hXG5cbiAgICAgICAgeWllbGQqICQoY2hlY2tTaGFkb3dpbmcocGF0aE5hdmlnYXRvciwgbWF0Y2gpKVxuXG4gICAgICAgIHN3aXRjaCAobWF0Y2guX3RhZykge1xuICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZVwiOiB7XG4gICAgICAgICAgICBpZiAoIShtYXRjaC52YWx1ZSBpbiBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzKSkge1xuICAgICAgICAgICAgICBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzW21hdGNoLnZhbHVlXSA9IG5ldyBQYXRoc1RyZWUoYCR7cGF0aE5hdmlnYXRvci5wYXRofSR7bWF0Y2gudmFsdWV9L2ApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhdGhOYXZpZ2F0b3IgPSBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzW21hdGNoLnZhbHVlXSFcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcInBhcmFtXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc05hbWVzID0gW21hdGNoLnZhbHVlXVxuICAgICAgICAgICAgbGV0IG51bWJlck9mUGFyYW1zID0gMVxuICAgICAgICAgICAgd2hpbGUgKGkgPCBtYXRjaGVzLmxlbmd0aCAmJiBtYXRjaGVzW2kgKyAxXT8uX3RhZyA9PT0gXCJwYXJhbVwiKSB7XG4gICAgICAgICAgICAgIG51bWJlck9mUGFyYW1zKytcbiAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgIHBhcmFtc05hbWVzLnB1c2gobWF0Y2gudmFsdWUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghKG51bWJlck9mUGFyYW1zIGluIHBhdGhOYXZpZ2F0b3IucGFyYW1zKSkge1xuICAgICAgICAgICAgICBwYXRoTmF2aWdhdG9yLnBhcmFtc1tudW1iZXJPZlBhcmFtc10gPSBuZXcgUGF0aHNUcmVlKFxuICAgICAgICAgICAgICAgIGAke3BhdGhOYXZpZ2F0b3IucGF0aH06JHtwYXJhbXNOYW1lcy5qb2luKFwiLzpcIil9L2BcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF0aE5hdmlnYXRvciA9IHBhdGhOYXZpZ2F0b3IucGFyYW1zW251bWJlck9mUGFyYW1zXSFcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhOYXZpZ2F0b3IubWV0aG9kcy5pbmNsdWRlcyhwYXRoLm1ldGhvZCkpIHtcbiAgICAgICAgLy8gdGhyb3cgZHVwbGljYXRlIHBhdGgtbWV0aG9kIGVycm9yXG4gICAgICAgIHJldHVybiB5aWVsZCogJChFZmZlY3QuZmFpbChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwYXRoLm1ldGhvZH0gZm9yIHBhdGggJHtwYXRoLnBhdGh9YCkpKVxuICAgICAgfVxuICAgICAgcGF0aE5hdmlnYXRvci5tZXRob2RzLnB1c2gocGF0aC5tZXRob2QpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhzXG4gIH0pXG59XG5cbi8qKlxuICogV29yayBpbiBwcm9ncmVzcyBKU09OU2NoZW1hIGdlbmVyYXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VKc29uU2NoZW1hKHI6IEl0ZXJhYmxlPFJTLlJvdXRlRGVzY3JpcHRvckFueT4pIHtcbiAgcmV0dXJuIENodW5rXG4gICAgLmZyb21JdGVyYWJsZShyKVxuICAgIC5mb3JFYWNoRWZmZWN0KFJTLm1ha2VGcm9tU2NoZW1hKVxuICAgIC5mbGF0TWFwKGNoZWNrUGF0aHMpXG4gICAgLm1hcCgoZSkgPT4ge1xuICAgICAgY29uc3QgbWFwID0gKHsgbWV0aG9kLCBwYXRoLCByZXNwb25zZXMsIC4uLnJlc3QgfTogX0E8dHlwZW9mIGU+KSA9PiAoe1xuICAgICAgICBbbWV0aG9kXToge1xuICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgICAgcmVzcG9uc2VzOiAocmVzcG9uc2VzIGFzIEFycmF5PGFueT4pLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXIpID0+IHtcbiAgICAgICAgICAgICAgcHJldltjdXIuc3RhdHVzQ29kZV0gPSBjdXIudHlwZVxuICAgICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIFJlY29yZDxSZXNwb25zZVtcInN0YXR1c0NvZGVcIl0sIFJlc3BvbnNlW1widHlwZVwiXT5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gZS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGUucGF0aC5zcGxpdChcIj9cIilbMF0ucmVwbGFjZShyeCwgKF9hLCBiKSA9PiBgeyR7Yn19YClcbiAgICAgICAgICBwcmV2W3BhdGhdID0ge1xuICAgICAgICAgICAgLi4ucHJldltwYXRoXSxcbiAgICAgICAgICAgIC4uLm1hcChlKSBhcyBhbnlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPE1ldGhvZHMsIFJldHVyblR5cGU8dHlwZW9mIG1hcD4+PlxuICAgICAgKVxuICAgIH0pXG59XG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogYW55IC8vIHN0cmluZyB8IEpTT05TY2hlbWEgfCBTdWJTY2hlbWFcbiAgKSB7fVxufVxuIl19
@@ -1 +1 @@
1
- ba6a347ea34d0d5aa6071e101901f8b111f733afb9b3c2044266e0fcefb3e739
1
+ b8406b30e5dc86e8886d361354e8ded840ddf37986c569803276d119c900733c
@@ -1 +1 @@
1
- a79d32c41e44e9290a704b7e4f1ca9ae312c07758fb77ebabd596b3cc2df2d32
1
+ cc2e90554066973e1b31534d5490d33b59233503ebcbafddd5483cecb7c817dd
@@ -1 +1 @@
1
- 38b975ae211b2450e8c9edd72dee956ed9adb66753c32b48d2dc5402a71f6151
1
+ 6c73d6a53dba8e2732209764f5233c88f81e895dc2e244202cf05253b7fe38f0
@@ -1 +1 @@
1
- 593762639c0db53e885b59cf5027fef3ea801fffde8e31e3ebfd06cc019eb7ba
1
+ b4b12945fbdaa4d1e98b8a2095ca4363f267e0909cdb70da478a35926e8fbba5
@@ -1 +1 @@
1
- 069ab60ec62e1f17676f3c02a28683e1c2d5d3f2cc0b221bd354b24252f169d5
1
+ 86abfcd3894752fc7211a2479161a1f24bc7df3ef89aaa7c2ff967fc7b5c673b
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 0.71.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @effect-app/prelude@0.58.2
9
+ - @effect-app/infra-adapters@0.49.2
10
+
3
11
  ## 0.71.1
4
12
 
5
13
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "0.71.1",
3
+ "version": "0.71.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -20,9 +20,9 @@
20
20
  "pure-rand": "^6.0.2",
21
21
  "redlock": "^4.2.0",
22
22
  "@effect-app/core": "0.56.1",
23
- "@effect-app/prelude": "0.58.1",
24
- "@effect-app/infra-adapters": "0.49.1",
25
- "@effect-app/schema": "0.50.1"
23
+ "@effect-app/infra-adapters": "0.49.2",
24
+ "@effect-app/schema": "0.50.1",
25
+ "@effect-app/prelude": "0.58.2"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@babel/cli": "^7.22.5",