@effect-app/infra 0.108.3 → 0.109.0

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 (60) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/_cjs/RequestContext.cjs +2 -2
  3. package/_cjs/RequestContext.cjs.map +1 -1
  4. package/_cjs/api/setupRequest.cjs +1 -1
  5. package/_cjs/api/setupRequest.cjs.map +1 -1
  6. package/_cjs/services/Operations/live.cjs +1 -1
  7. package/_cjs/services/Operations/live.cjs.map +1 -1
  8. package/_cjs/services/QueueMaker/memQueue.cjs +1 -1
  9. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  10. package/_cjs/services/QueueMaker/sbqueue.cjs +1 -1
  11. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  12. package/_cjs/services/RequestContextContainer.cjs +1 -1
  13. package/_cjs/services/RequestContextContainer.cjs.map +1 -1
  14. package/_src/RequestContext.ts +2 -2
  15. package/_src/api/setupRequest.ts +1 -1
  16. package/_src/services/Emailer/service.ts +2 -2
  17. package/_src/services/Operations/live.ts +3 -3
  18. package/_src/services/QueueMaker/memQueue.ts +1 -1
  19. package/_src/services/QueueMaker/sbqueue.ts +1 -1
  20. package/_src/services/RequestContextContainer.ts +1 -1
  21. package/dist/RequestContext.d.ts +11 -11
  22. package/dist/RequestContext.js +3 -3
  23. package/dist/api/setupRequest.js +2 -2
  24. package/dist/services/Emailer/service.d.ts +3 -3
  25. package/dist/services/Emailer/service.d.ts.map +1 -1
  26. package/dist/services/Operations/live.js +4 -4
  27. package/dist/services/QueueMaker/memQueue.js +2 -2
  28. package/dist/services/QueueMaker/sbqueue.js +2 -2
  29. package/dist/services/RepositoryBase.d.ts +1 -1
  30. package/dist/services/RequestContextContainer.d.ts +4 -4
  31. package/dist/services/RequestContextContainer.js +2 -2
  32. package/dist/services/simpledb/cosmosdb.d.ts +2 -2
  33. package/dist/services/simpledb/diskdb.d.ts +2 -2
  34. package/dist/services/simpledb/memdb.d.ts +2 -2
  35. package/dist/services/simpledb/mongodb.d.ts +2 -2
  36. package/dist/services/simpledb/redisdb.d.ts +2 -2
  37. package/dist/services/simpledb/simpledb.d.ts +3 -3
  38. package/package.json +4 -4
  39. package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.content +0 -275
  40. package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.hash +0 -1
  41. package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.content +0 -43
  42. package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.hash +0 -1
  43. package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.content +0 -122
  44. package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.hash +0 -1
  45. package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.content +0 -86
  46. package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.hash +0 -1
  47. package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.content +0 -49
  48. package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.hash +0 -1
  49. package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.content +0 -70
  50. package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.hash +0 -1
  51. package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.content +0 -178
  52. package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.hash +0 -1
  53. package/.cache/effect/7a9c33db6aedaf00093a132c1d4e48e9d043cef05e932b8a37da24d44e224248.content +0 -57
  54. package/.cache/effect/7a9c33db6aedaf00093a132c1d4e48e9d043cef05e932b8a37da24d44e224248.hash +0 -1
  55. package/.cache/effect/8594f0f42afc0641b00e88998000cc47382a1d07da31f4a148f7976701ca22d5.content +0 -97
  56. package/.cache/effect/8594f0f42afc0641b00e88998000cc47382a1d07da31f4a148f7976701ca22d5.hash +0 -1
  57. package/.cache/effect/c67d971634d2dc8118b40452b61c9a51620c35809be4a89982476aa80701d852.content +0 -11
  58. package/.cache/effect/c67d971634d2dc8118b40452b61c9a51620c35809be4a89982476aa80701d852.hash +0 -1
  59. package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.content +0 -364
  60. package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.hash +0 -1
@@ -1,122 +0,0 @@
1
- import * as tsplus_module_1 from "@effect/io/Effect";
2
- import * as tsplus_module_2 from "@effect/data/Chunk";
3
- import * as tsplus_module_3 from "@effect-app/core/_ext/Iterable";
4
- /* eslint-disable @typescript-eslint/no-explicit-any */
5
- import { InvalidStateError } from "../../errors.js";
6
- import * as RS from "./schema/routing.js";
7
- const rx = /:(\w+)/g;
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}`)));
27
- }
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];
60
- i++;
61
- break;
62
- }
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;
77
- }
78
- }
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);
85
- }
86
- return paths;
87
- });
88
- }
89
- /**
90
- * Work in progress JSONSchema generator.
91
- */
92
- export function makeJsonSchema(r) {
93
- return tsplus_module_1.map(tsplus_module_1.flatMap(tsplus_module_3.ext_forEach(tsplus_module_2.fromIterable(r), RS.makeFromSchema), checkPaths), (e) => {
94
- const map = ({ method, path, responses, ...rest }) => ({
95
- [method]: {
96
- ...rest,
97
- responses: responses.reduce((prev, cur) => {
98
- prev[cur.statusCode] = cur.type;
99
- return prev;
100
- }, {})
101
- }
102
- });
103
- return e.reduce((prev, e) => {
104
- const path = e.path.split("?")[0].replace(rx, (_a, b) => `{${b}}`);
105
- prev[path] = {
106
- ...prev[path],
107
- ...map(e)
108
- };
109
- return prev;
110
- }, {});
111
- });
112
- }
113
- class Response {
114
- statusCode;
115
- type;
116
- constructor(statusCode, type // string | JSONSchema | SubSchema
117
- ) {
118
- this.statusCode = statusCode;
119
- this.type = type;
120
- }
121
- }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQixNQUFNLFNBQVM7SUFDRyxPQUFPLENBQVU7SUFDakIsTUFBTSxDQUEwQztJQUNoRCxRQUFRLENBQTBDO0lBQ2xELElBQUksQ0FBUTtJQUU1QixZQUFZLElBQVk7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztDQUNGO0FBT0QsU0FBUyxjQUFjLENBQ3JCLGFBQXdCLEVBQ3hCLEtBQVk7SUFFWixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEtBQUssVUFBVSxDQUFDLENBQUM7Z0JBQ2YsNEVBQTRFO2dCQUM1RSxJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUNkLElBQUksaUJBQWlCLENBQ25CLFFBQVEsYUFBYSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxvQkFBb0IsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDM0YsQ0FDRixDQUFDLENBQUE7aUJBQ0g7Z0JBQ0Qs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QUk7Z0JBQ1AsU0FBUyxFQUFHLFNBQXdCLENBQUMsTUFBTSxDQUN6QyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7b0JBQy9CLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUMsRUFDRCxFQUFzRCxDQUN2RDthQUNGO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNiLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNiLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBUTthQUNqQixDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBQ0QsRUFBNkQsQ0FDOUQsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELE1BQU0sUUFBUTtJQUVNO0lBQ0E7SUFGbEIsWUFDa0IsVUFBa0IsRUFDbEIsSUFBUyxDQUFDLGtDQUFrQzs7UUFENUMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFLO0lBQ3hCLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCAqIGFzIFJTIGZyb20gXCIuL3NjaGVtYS9yb3V0aW5nLmpzXCJcblxudHlwZSBNZXRob2RzID0gXCJHRVRcIiB8IFwiUFVUXCIgfCBcIlBPU1RcIiB8IFwiUEFUQ0hcIiB8IFwiREVMRVRFXCJcblxuY29uc3QgcnggPSAvOihcXHcrKS9nXG5cbnR5cGUgX0E8Qz4gPSBDIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBBPiA/IEEgOiBuZXZlclxuXG5jbGFzcyBQYXRoc1RyZWUge1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW11cbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtczogeyBba2V5OiBudW1iZXJdOiBQYXRoc1RyZWUgfCB1bmRlZmluZWQgfVxuICBwdWJsaWMgcmVhZG9ubHkgc3VicGF0aHM6IHsgW2tleTogc3RyaW5nXTogUGF0aHNUcmVlIHwgdW5kZWZpbmVkIH1cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHBhdGg6IHN0cmluZykge1xuICAgIHRoaXMubWV0aG9kcyA9IFtdXG4gICAgdGhpcy5wYXJhbXMgPSB7fVxuICAgIHRoaXMuc3VicGF0aHMgPSB7fVxuICAgIHRoaXMucGF0aCA9IHBhdGhcbiAgfVxufVxuXG5pbnRlcmZhY2UgTWF0Y2gge1xuICBfdGFnOiBcInJlc291cmNlXCIgfCBcInBhcmFtXCJcbiAgdmFsdWU6IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBjaGVja1NoYWRvd2luZyhcbiAgcGF0aE5hdmlnYXRvcjogUGF0aHNUcmVlLFxuICBtYXRjaDogTWF0Y2hcbikge1xuICByZXR1cm4gRWZmZWN0LmdlbihmdW5jdGlvbiooJCkge1xuICAgIHN3aXRjaCAobWF0Y2guX3RhZykge1xuICAgICAgY2FzZSBcInJlc291cmNlXCI6IHtcbiAgICAgICAgLy8gY2hlY2sgc2hhZG93aW5nOiBpZiAnYS86cGFyYW0nIGNvbWVzIGJlZm9yZSAnYS9iJywgdGhlbiAnYS9iJyBpcyBzaGFkb3dlZFxuICAgICAgICBpZiAocGF0aE5hdmlnYXRvci5wYXJhbXNbMV0pIHtcbiAgICAgICAgICByZXR1cm4geWllbGQqICQoRWZmZWN0LmZhaWwoXG4gICAgICAgICAgICBuZXcgSW52YWxpZFN0YXRlRXJyb3IoXG4gICAgICAgICAgICAgIGBQYXRoICR7cGF0aE5hdmlnYXRvci5wYXRofSR7bWF0Y2gudmFsdWV9LyBpcyBzaGFkb3dlZCBieSAke3BhdGhOYXZpZ2F0b3IucGFyYW1zWzFdLnBhdGh9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJwYXJhbVwiOiB7XG4gICAgICAgIC8vIGNoZWNrIHNoYWRvd2luZzogaWYgJ2EvYicgY29tZXMgYmVmb3JlICdhLzpwYXJhbScsIHRoZW4gJ2EvXCJwYXJhbScgaXMgcGFydGlhbGx5IHNoYWRvd2VkXG4gICAgICAgIGNvbnN0IHN1YnBhdGhzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocGF0aE5hdmlnYXRvci5zdWJwYXRocylcbiAgICAgICAgaWYgKHN1YnBhdGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB5aWVsZCogJChFZmZlY3QuYWxsKHN1YnBhdGhzLm1hcCgocykgPT5cbiAgICAgICAgICAgIEVmZmVjdC5sb2dJbmZvKFxuICAgICAgICAgICAgICBgUGF0aCAke3BhdGhOYXZpZ2F0b3IucGF0aH06JHttYXRjaC52YWx1ZX0vIGlzIHBhcnRpYWxseSBzaGFkb3dlZCBieSAke3BhdGhOYXZpZ2F0b3Iuc3VicGF0aHNbc10hLnBhdGh9YFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tQYXRoczxUIGV4dGVuZHMgeyBwYXRoOiBzdHJpbmc7IG1ldGhvZDogc3RyaW5nIH0+KFxuICBwYXRoczogcmVhZG9ubHkgVFtdXG4pIHtcbiAgcmV0dXJuIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICBjb25zdCBwYXRoTWV0aG9kczogUGF0aHNUcmVlID0gbmV3IFBhdGhzVHJlZShcIi9cIilcbiAgICBjb25zdCByZWdleCA9IC8oPzpefFxcLykoW14vOlxcbl0rKXw6KFxcdyspL2dcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4ucGF0aC5wYXRoLm1hdGNoQWxsKHJlZ2V4KV1cbiAgICAgICAgLm1hcCgobWF0Y2gpID0+XG4gICAgICAgICAgbWF0Y2hbMV1cbiAgICAgICAgICAgID8geyBfdGFnOiBcInJlc291cmNlXCIsIHZhbHVlOiBtYXRjaFsxXSB9IGFzIGNvbnN0XG4gICAgICAgICAgICA6IHsgX3RhZzogXCJwYXJhbVwiLCB2YWx1ZTogbWF0Y2hbMl0hIH0gYXMgY29uc3RcbiAgICAgICAgKVxuXG4gICAgICBsZXQgcGF0aE5hdmlnYXRvciA9IHBhdGhNZXRob2RzXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOykge1xuICAgICAgICBjb25zdCBtYXRjaCA9IG1hdGNoZXNbaV0hXG5cbiAgICAgICAgeWllbGQqICQoY2hlY2tTaGFkb3dpbmcocGF0aE5hdmlnYXRvciwgbWF0Y2gpKVxuXG4gICAgICAgIHN3aXRjaCAobWF0Y2guX3RhZykge1xuICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZVwiOiB7XG4gICAgICAgICAgICBpZiAoIShtYXRjaC52YWx1ZSBpbiBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzKSkge1xuICAgICAgICAgICAgICBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzW21hdGNoLnZhbHVlXSA9IG5ldyBQYXRoc1RyZWUoYCR7cGF0aE5hdmlnYXRvci5wYXRofSR7bWF0Y2gudmFsdWV9L2ApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhdGhOYXZpZ2F0b3IgPSBwYXRoTmF2aWdhdG9yLnN1YnBhdGhzW21hdGNoLnZhbHVlXSFcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBcInBhcmFtXCI6IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc05hbWVzID0gW21hdGNoLnZhbHVlXVxuICAgICAgICAgICAgbGV0IG51bWJlck9mUGFyYW1zID0gMVxuICAgICAgICAgICAgd2hpbGUgKGkgPCBtYXRjaGVzLmxlbmd0aCAmJiBtYXRjaGVzW2kgKyAxXT8uX3RhZyA9PT0gXCJwYXJhbVwiKSB7XG4gICAgICAgICAgICAgIG51bWJlck9mUGFyYW1zKytcbiAgICAgICAgICAgICAgaSsrXG4gICAgICAgICAgICAgIHBhcmFtc05hbWVzLnB1c2gobWF0Y2gudmFsdWUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghKG51bWJlck9mUGFyYW1zIGluIHBhdGhOYXZpZ2F0b3IucGFyYW1zKSkge1xuICAgICAgICAgICAgICBwYXRoTmF2aWdhdG9yLnBhcmFtc1tudW1iZXJPZlBhcmFtc10gPSBuZXcgUGF0aHNUcmVlKFxuICAgICAgICAgICAgICAgIGAke3BhdGhOYXZpZ2F0b3IucGF0aH06JHtwYXJhbXNOYW1lcy5qb2luKFwiLzpcIil9L2BcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGF0aE5hdmlnYXRvciA9IHBhdGhOYXZpZ2F0b3IucGFyYW1zW251bWJlck9mUGFyYW1zXSFcbiAgICAgICAgICAgIGkrK1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHBhdGhOYXZpZ2F0b3IubWV0aG9kcy5pbmNsdWRlcyhwYXRoLm1ldGhvZCkpIHtcbiAgICAgICAgLy8gdGhyb3cgZHVwbGljYXRlIHBhdGgtbWV0aG9kIGVycm9yXG4gICAgICAgIHJldHVybiB5aWVsZCogJChFZmZlY3QuZmFpbChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwYXRoLm1ldGhvZH0gZm9yIHBhdGggJHtwYXRoLnBhdGh9YCkpKVxuICAgICAgfVxuICAgICAgcGF0aE5hdmlnYXRvci5tZXRob2RzLnB1c2gocGF0aC5tZXRob2QpXG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGhzXG4gIH0pXG59XG5cbi8qKlxuICogV29yayBpbiBwcm9ncmVzcyBKU09OU2NoZW1hIGdlbmVyYXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VKc29uU2NoZW1hKHI6IEl0ZXJhYmxlPFJTLlJvdXRlRGVzY3JpcHRvckFueT4pIHtcbiAgcmV0dXJuIENodW5rXG4gICAgLmZyb21JdGVyYWJsZShyKVxuICAgIC5mb3JFYWNoRWZmZWN0KFJTLm1ha2VGcm9tU2NoZW1hKVxuICAgIC5mbGF0TWFwKGNoZWNrUGF0aHMpXG4gICAgLm1hcCgoZSkgPT4ge1xuICAgICAgY29uc3QgbWFwID0gKHsgbWV0aG9kLCBwYXRoLCByZXNwb25zZXMsIC4uLnJlc3QgfTogX0E8dHlwZW9mIGU+KSA9PiAoe1xuICAgICAgICBbbWV0aG9kXToge1xuICAgICAgICAgIC4uLnJlc3QsXG4gICAgICAgICAgcmVzcG9uc2VzOiAocmVzcG9uc2VzIGFzIEFycmF5PGFueT4pLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXIpID0+IHtcbiAgICAgICAgICAgICAgcHJldltjdXIuc3RhdHVzQ29kZV0gPSBjdXIudHlwZVxuICAgICAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHt9IGFzIFJlY29yZDxSZXNwb25zZVtcInN0YXR1c0NvZGVcIl0sIFJlc3BvbnNlW1widHlwZVwiXT5cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gZS5yZWR1Y2UoXG4gICAgICAgIChwcmV2LCBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aCA9IGUucGF0aC5zcGxpdChcIj9cIilbMF0ucmVwbGFjZShyeCwgKF9hLCBiKSA9PiBgeyR7Yn19YClcbiAgICAgICAgICBwcmV2W3BhdGhdID0ge1xuICAgICAgICAgICAgLi4ucHJldltwYXRoXSxcbiAgICAgICAgICAgIC4uLm1hcChlKSBhcyBhbnlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPE1ldGhvZHMsIFJldHVyblR5cGU8dHlwZW9mIG1hcD4+PlxuICAgICAgKVxuICAgIH0pXG59XG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU6IG51bWJlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogYW55IC8vIHN0cmluZyB8IEpTT05TY2hlbWEgfCBTdWJTY2hlbWFcbiAgKSB7fVxufVxuIl19
@@ -1 +0,0 @@
1
- b8406b30e5dc86e8886d361354e8ded840ddf37986c569803276d119c900733c
@@ -1,86 +0,0 @@
1
- import * as CausePretty from "@effect/io/internal_effect_untraced/cause-pretty";
2
- export class NotFoundError {
3
- _tag = "NotFoundError";
4
- message;
5
- constructor(type, id) {
6
- this.message = `Didn't find ${type}#${id}`;
7
- }
8
- }
9
- export class ValidationError {
10
- errors;
11
- _tag = "ValidationError";
12
- constructor(errors) {
13
- this.errors = errors;
14
- }
15
- }
16
- export class NotLoggedInError {
17
- _tag = "NotLoggedInError";
18
- }
19
- export class UnauthorizedError {
20
- _tag = "UnauthorizedError";
21
- }
22
- /**
23
- * The user carries a valid Userprofile, but there is a problem with the login none the less.
24
- */
25
- export class LoginError extends NotLoggedInError {
26
- message;
27
- constructor(message) {
28
- super();
29
- this.message = message;
30
- }
31
- }
32
- export class InvalidStateError {
33
- message;
34
- _tag = "InvalidStateError";
35
- constructor(message) {
36
- this.message = message;
37
- }
38
- }
39
- export class CauseException extends Error {
40
- originalCause;
41
- _tag;
42
- constructor(originalCause, _tag) {
43
- const limit = Error.stackTraceLimit;
44
- Error.stackTraceLimit = 0;
45
- super();
46
- this.originalCause = originalCause;
47
- this._tag = _tag;
48
- Error.stackTraceLimit = limit;
49
- const pretty = CausePretty.prettyErrors(this.originalCause);
50
- if (pretty.length > 0) {
51
- this.name = pretty[0].message.split(":")[0];
52
- this.message = pretty[0].message.substring(this.name.length + 2);
53
- this.stack = `${this.name}: ${this.message}\n` + pretty[0].stack;
54
- }
55
- }
56
- toString() {
57
- return `[${this._tag}] ` + CausePretty.pretty(this.originalCause);
58
- }
59
- [Symbol.for("nodejs.util.inspect.custom")]() {
60
- return this.toString();
61
- }
62
- toJSON() {
63
- return {
64
- _tag: this._tag,
65
- message: this.message,
66
- pretty: this.toString()
67
- // cause: (this.cause as {}).$$.inspect(undefined, 10)
68
- };
69
- }
70
- }
71
- export class OptimisticConcurrencyException {
72
- type;
73
- id;
74
- current;
75
- found;
76
- _tag = "OptimisticConcurrencyException";
77
- message;
78
- constructor(type, id, current, found) {
79
- this.type = type;
80
- this.id = id;
81
- this.current = current;
82
- this.found = found;
83
- this.message = `Existing ${type} ${id} record changed`;
84
- }
85
- }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFdBQVcsTUFBTSxrREFBa0QsQ0FBQTtBQUUvRSxNQUFNLE9BQU8sYUFBYTtJQUNSLElBQUksR0FBRyxlQUFlLENBQUE7SUFDdEIsT0FBTyxDQUFRO0lBQy9CLFlBQVksSUFBTyxFQUFFLEVBQVU7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUVFO0lBRFosSUFBSSxHQUFHLGlCQUFpQixDQUFBO0lBQ3hDLFlBQTRCLE1BQThCO1FBQTlCLFdBQU0sR0FBTixNQUFNLENBQXdCO0lBQUcsQ0FBQztDQUMvRDtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDWCxJQUFJLEdBQUcsa0JBQWtCLENBQUE7Q0FDMUM7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBQ1osSUFBSSxHQUFHLG1CQUFtQixDQUFBO0NBQzNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLGdCQUFnQjtJQUN6QjtJQUFyQixZQUFxQixPQUFlO1FBQ2xDLEtBQUssRUFBRSxDQUFBO1FBRFksWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUVwQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBRUE7SUFEWixJQUFJLEdBQUcsbUJBQW1CLENBQUE7SUFDMUMsWUFBNEIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0NBQ2hEO0FBRUQsTUFBTSxPQUFPLGNBQWtCLFNBQVEsS0FBSztJQUNyQjtJQUFrQztJQUF2RCxZQUFxQixhQUF1QixFQUFXLElBQVk7UUFDakUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQTtRQUNuQyxLQUFLLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQTtRQUN6QixLQUFLLEVBQUUsQ0FBQTtRQUhZLGtCQUFhLEdBQWIsYUFBYSxDQUFVO1FBQVcsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUlqRSxLQUFLLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQTtRQUM3QixNQUFNLE1BQU0sR0FBSSxXQUFtQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDcEUsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7U0FDakU7SUFDSCxDQUFDO0lBQ1EsUUFBUTtRQUNmLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUksV0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQzVFLENBQUM7SUFDRCxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdkIsMkRBQTJEO1NBQzVELENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBR3BCO0lBQXVCO0lBQXFCO0lBQTJCO0lBRm5GLElBQUksR0FBRyxnQ0FBZ0MsQ0FBQTtJQUN2QyxPQUFPLENBQVE7SUFDeEIsWUFBcUIsSUFBWSxFQUFXLEVBQVUsRUFBVyxPQUFnQixFQUFXLEtBQWM7UUFBckYsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFXLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBVyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVcsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUN4RyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksSUFBSSxJQUFJLEVBQUUsaUJBQWlCLENBQUE7SUFDeEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQ2F1c2VQcmV0dHkgZnJvbSBcIkBlZmZlY3QvaW8vaW50ZXJuYWxfZWZmZWN0X3VudHJhY2VkL2NhdXNlLXByZXR0eVwiXG5cbmV4cG9ydCBjbGFzcyBOb3RGb3VuZEVycm9yPFQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+IHtcbiAgcHVibGljIHJlYWRvbmx5IF90YWcgPSBcIk5vdEZvdW5kRXJyb3JcIlxuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nXG4gIGNvbnN0cnVjdG9yKHR5cGU6IFQsIGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgRGlkbid0IGZpbmQgJHt0eXBlfSMke2lkfWBcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IF90YWcgPSBcIlZhbGlkYXRpb25FcnJvclwiXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlcnJvcnM6IFJlYWRvbmx5QXJyYXk8dW5rbm93bj4pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RMb2dnZWRJbkVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IF90YWcgPSBcIk5vdExvZ2dlZEluRXJyb3JcIlxufVxuXG5leHBvcnQgY2xhc3MgVW5hdXRob3JpemVkRXJyb3Ige1xuICBwdWJsaWMgcmVhZG9ubHkgX3RhZyA9IFwiVW5hdXRob3JpemVkRXJyb3JcIlxufVxuXG4vKipcbiAqIFRoZSB1c2VyIGNhcnJpZXMgYSB2YWxpZCBVc2VycHJvZmlsZSwgYnV0IHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBsb2dpbiBub25lIHRoZSBsZXNzLlxuICovXG5leHBvcnQgY2xhc3MgTG9naW5FcnJvciBleHRlbmRzIE5vdExvZ2dlZEluRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRTdGF0ZUVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IF90YWcgPSBcIkludmFsaWRTdGF0ZUVycm9yXCJcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIENhdXNlRXhjZXB0aW9uPEU+IGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBvcmlnaW5hbENhdXNlOiBDYXVzZTxFPiwgcmVhZG9ubHkgX3RhZzogc3RyaW5nKSB7XG4gICAgY29uc3QgbGltaXQgPSBFcnJvci5zdGFja1RyYWNlTGltaXRcbiAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSAwXG4gICAgc3VwZXIoKVxuICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IGxpbWl0XG4gICAgY29uc3QgcHJldHR5ID0gKENhdXNlUHJldHR5IGFzIGFueSkucHJldHR5RXJyb3JzKHRoaXMub3JpZ2luYWxDYXVzZSlcbiAgICBpZiAocHJldHR5Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubmFtZSA9IHByZXR0eVswXS5tZXNzYWdlLnNwbGl0KFwiOlwiKVswXVxuICAgICAgdGhpcy5tZXNzYWdlID0gcHJldHR5WzBdLm1lc3NhZ2Uuc3Vic3RyaW5nKHRoaXMubmFtZS5sZW5ndGggKyAyKVxuICAgICAgdGhpcy5zdGFjayA9IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfVxcbmAgKyBwcmV0dHlbMF0uc3RhY2tcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGBbJHt0aGlzLl90YWd9XSBgICsgKENhdXNlUHJldHR5IGFzIGFueSkucHJldHR5KHRoaXMub3JpZ2luYWxDYXVzZSlcbiAgfVxuICBbU3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpXSgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpXG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF90YWc6IHRoaXMuX3RhZyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIHByZXR0eTogdGhpcy50b1N0cmluZygpXG4gICAgICAvLyAgICAgIGNhdXNlOiAodGhpcy5jYXVzZSBhcyB7fSkuJCQuaW5zcGVjdCh1bmRlZmluZWQsIDEwKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uIHtcbiAgcmVhZG9ubHkgX3RhZyA9IFwiT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uXCJcbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IHR5cGU6IHN0cmluZywgcmVhZG9ubHkgaWQ6IHN0cmluZywgcmVhZG9ubHkgY3VycmVudD86IHN0cmluZywgcmVhZG9ubHkgZm91bmQ/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBgRXhpc3RpbmcgJHt0eXBlfSAke2lkfSByZWNvcmQgY2hhbmdlZGBcbiAgfVxufVxuIl19
@@ -1 +0,0 @@
1
- 2106804d7ed5f62d59b96efcf115903f0f9819d46ae439f0e1304f2d1b729287
@@ -1,49 +0,0 @@
1
- import * as tsplus_module_1 from "@effect/data/ReadonlyArray";
2
- import * as tsplus_module_2 from "@effect-app/core/Array";
3
- import * as tsplus_module_3 from "@effect-app/infra/filter";
4
- import { makeFilters } from "../../filter.js";
5
- import { codeFilter } from "./utils.js";
6
- const somethings = [
7
- { a: 1, b: "b", c: ["c"], d: [{ a: "a2", b: 1 }, { a: "a", b: 1 }], id: "1" },
8
- { a: 2, b: "b2", c: ["c2"], d: [{ a: "a4", b: 2 }, { a: "a5", b: 2 }], id: "2" }
9
- ];
10
- const f_ = makeFilters();
11
- export function makeSomethingFilter_(filter) {
12
- return filter(f_);
13
- }
14
- export function somethingsWhere(makeWhere, mode) {
15
- return makeSomethingFilter_((f) => {
16
- const m = makeWhere ? makeWhere(f) : [];
17
- return ({
18
- mode,
19
- where: (Array.isArray(m) ? m : [m])
20
- });
21
- });
22
- }
23
- test("works", () => {
24
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => "b2"))))))
25
- .toEqual([somethings[1]]);
26
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => tsplus_module_3.$contains(_, "b")))))))
27
- .toEqual([somethings[0], somethings[1]]);
28
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => tsplus_module_3.$contains(_, "2")))))))
29
- .toEqual([somethings[1]]);
30
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => tsplus_module_3.$endsWith(_, "b")))))))
31
- .toEqual([somethings[0]]);
32
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => tsplus_module_3.$endsWith(_, "2")))))))
33
- .toEqual([somethings[1]]);
34
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => tsplus_module_3.$startsWith(_, "b")))))))
35
- .toEqual([somethings[0], somethings[1]]);
36
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => tsplus_module_3.$startsWith(_, "2")))))))
37
- .toEqual([]);
38
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("b", (_) => "b"))))))
39
- .toEqual([somethings[0]]);
40
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("c", (_) => tsplus_module_3.$includes(_, "c")))))))
41
- .toEqual([somethings[0]]);
42
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("d.-1.a", (_) => "a5"))))))
43
- .toEqual([somethings[1]]);
44
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("d.-1.a", (_) => "a"))))))
45
- .toEqual([somethings[0]]);
46
- expect(tsplus_module_2.iterableToArray(tsplus_module_1.filterMap(somethings, codeFilter(somethingsWhere((_) => _("d.-1.a", (_) => tsplus_module_3.$isnt(_, "a")))))))
47
- .toEqual([somethings[1]]);
48
- });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZUZpbHRlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9jb2RlRmlsdGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdkMsTUFBTSxVQUFVLEdBQUc7SUFDakIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtJQUM3RSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO0NBQ2xELENBQUE7QUFFaEMsTUFBTSxFQUFFLEdBQUcsV0FBVyxFQUFhLENBQUE7QUFHbkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE1BQXFEO0lBQ3hGLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixTQUVnQyxFQUNoQyxJQUFtQjtJQUVuQixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFF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LEdBQUcsQ0FBQyxDQUFDLENBQ2hELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0IsTUFBTSxpQ0FDSiwwQkFBQSxVQUFVLEVBQ0csVUFBVSxDQUNuQixlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHNCQUFBLENBQUMsRUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQUMsRUFFTDtTQUNFLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDN0IsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0b3JlV2hlcmVGaWx0ZXIsIFdoZXJlIH0gZnJvbSBcIkBlZmZlY3QtYXBwL2luZnJhL3NlcnZpY2VzL1N0b3JlXCJcbmltcG9ydCB7IG1ha2VGaWx0ZXJzIH0gZnJvbSBcIi4uLy4uL2ZpbHRlci5qc1wiXG5pbXBvcnQgeyBjb2RlRmlsdGVyIH0gZnJvbSBcIi4vdXRpbHMuanNcIlxuXG5jb25zdCBzb21ldGhpbmdzID0gW1xuICB7IGE6IDEsIGI6IFwiYlwiLCBjOiBbXCJjXCJdLCBkOiBbeyBhOiBcImEyXCIsIGI6IDEgfSwgeyBhOiBcImFcIiwgYjogMSB9XSwgaWQ6IFwiMVwiIH0sXG4gIHsgYTogMiwgYjogXCJiMlwiLCBjOiBbXCJjMlwiXSwgZDogW3sgYTogXCJhNFwiLCBiOiAyIH0sIHsgYTogXCJhNVwiLCBiOiAyIH1dLCBpZDogXCIyXCIgfVxuXSBzYXRpc2ZpZXMgcmVhZG9ubHkgU29tZXRoaW5nW11cblxuY29uc3QgZl8gPSBtYWtlRmlsdGVyczxTb21ldGhpbmc+KClcbmV4cG9ydCB0eXBlIFNvbWV0aGluZ1doZXJlRmlsdGVyID0gdHlwZW9mIGZfXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlU29tZXRoaW5nRmlsdGVyXyhmaWx0ZXI6IChmOiBTb21ldGhpbmdXaGVyZUZpbHRlcikgPT4gU3RvcmVXaGVyZUZpbHRlcikge1xuICByZXR1cm4gZmlsdGVyKGZfKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc29tZXRoaW5nc1doZXJlKFxuICBtYWtlV2hlcmU6IChcbiAgICBmOiBTb21ldGhpbmdXaGVyZUZpbHRlclxuICApID0+IFdoZXJlIHwgW1doZXJlLCAuLi5XaGVyZVtdXSxcbiAgbW9kZT86IFwib3JcIiB8IFwiYW5kXCJcbikge1xuICByZXR1cm4gbWFrZVNvbWV0aGluZ0ZpbHRlcl8oKGYpID0+IHtcbiAgICBjb25zdCBtID0gbWFrZVdoZXJlID8gbWFrZVdoZXJlKGYpIDogW11cbiAgICByZXR1cm4gKHtcbiAgICAgIG1vZGUsXG4gICAgICB3aGVyZTogKEFycmF5LmlzQXJyYXkobSkgPyBtIGFzIHVua25vd24gYXMgW1doZXJlLCAuLi5XaGVyZVtdXSA6IFttXSkgYXMgcmVhZG9ubHkgW1doZXJlLCAuLi5XaGVyZVtdXVxuICAgIH0pXG4gIH0pXG59XG5cbnR5cGUgU29tZXRoaW5nRWxzZSA9IHtcbiAgYTogc3RyaW5nXG4gIGI6IG51bWJlclxufVxuXG50eXBlIFNvbWV0aGluZyA9IHtcbiAgYTogbnVtYmVyXG4gIGlkOiBzdHJpbmdcbiAgYjogc3RyaW5nXG4gIGM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gIGQ6IHJlYWRvbmx5IFNvbWV0aGluZ0Vsc2VbXVxufVxuXG50ZXN0KFwid29ya3NcIiwgKCkgPT4ge1xuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJiXCIsIChfKSA9PiBcImIyXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1sxXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXy4kY29udGFpbnMoXCJiXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF0sIHNvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJGNvbnRhaW5zKFwiMlwiKSkpXG4gICAgICApKVxuICAgICAgLnRvQXJyYXlcbiAgKVxuICAgIC50b0VxdWFsKFtzb21ldGhpbmdzWzFdXSlcblxuICBleHBlY3QoXG4gICAgc29tZXRoaW5nc1xuICAgICAgLmZpbHRlck1hcChjb2RlRmlsdGVyKFxuICAgICAgICBzb21ldGhpbmdzV2hlcmUoKF8pID0+IF8oXCJiXCIsIChfKSA9PiBfLiRlbmRzV2l0aChcImJcIikpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXy4kZW5kc1dpdGgoXCIyXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJHN0YXJ0c1dpdGgoXCJiXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF0sIHNvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImJcIiwgKF8pID0+IF8uJHN0YXJ0c1dpdGgoXCIyXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW10pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiYlwiLCAoXykgPT4gXCJiXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiY1wiLCAoXykgPT4gXy4kaW5jbHVkZXMoXCJjXCIpKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMF1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImQuLTEuYVwiLCAoXykgPT4gXCJhNVwiKSlcbiAgICAgICkpXG4gICAgICAudG9BcnJheVxuICApXG4gICAgLnRvRXF1YWwoW3NvbWV0aGluZ3NbMV1dKVxuXG4gIGV4cGVjdChcbiAgICBzb21ldGhpbmdzXG4gICAgICAuZmlsdGVyTWFwKGNvZGVGaWx0ZXIoXG4gICAgICAgIHNvbWV0aGluZ3NXaGVyZSgoXykgPT4gXyhcImQuLTEuYVwiLCAoXykgPT4gXCJhXCIpKVxuICAgICAgKSlcbiAgICAgIC50b0FycmF5XG4gIClcbiAgICAudG9FcXVhbChbc29tZXRoaW5nc1swXV0pXG5cbiAgZXhwZWN0KFxuICAgIHNvbWV0aGluZ3NcbiAgICAgIC5maWx0ZXJNYXAoY29kZUZpbHRlcihcbiAgICAgICAgc29tZXRoaW5nc1doZXJlKChfKSA9PiBfKFwiZC4tMS5hXCIsIChfKSA9PiBfLiRpc250KFwiYVwiKSkpXG4gICAgICApKVxuICAgICAgLnRvQXJyYXlcbiAgKVxuICAgIC50b0VxdWFsKFtzb21ldGhpbmdzWzFdXSlcbn0pXG4iXX0=
@@ -1 +0,0 @@
1
- cc2e90554066973e1b31534d5490d33b59233503ebcbafddd5483cecb7c817dd
@@ -1,70 +0,0 @@
1
- import * as tsplus_module_1 from "@effect-app/prelude/service";
2
- import * as tsplus_module_2 from "@effect/io/Effect";
3
- /**
4
- * @tsplus type StoreMaker
5
- * @tsplus companion StoreMaker.Ops
6
- */
7
- export class StoreMaker extends tsplus_module_1.TagClass() {
8
- }
9
- /**
10
- * @tsplus static ContextMap.Ops Make
11
- */
12
- export const makeMap = tsplus_module_2.sync(() => {
13
- const etags = new Map();
14
- const getEtag = (id) => etags.get(id);
15
- const setEtag = (id, eTag) => {
16
- eTag === undefined ? etags.delete(id) : etags.set(id, eTag);
17
- };
18
- const parsedCache = new Map();
19
- const parserCache = new Map();
20
- const setAndReturn = (p, np) => {
21
- parserCache.set(p, np);
22
- return np;
23
- };
24
- const parserEnv = {
25
- // TODO: lax: true would turn off refinement checks, may help on large payloads
26
- // but of course removes confirming of validation rules (which may be okay for a database owned by the app, as we write safely)
27
- lax: false,
28
- cache: {
29
- getOrSetParser: (p) => parserCache.get(p) ?? setAndReturn(p, (i) => parserEnv.cache.getOrSet(i, p)),
30
- getOrSetParsers: (parsers) => {
31
- return Object.entries(parsers).reduce((prev, [k, v]) => {
32
- prev[k] = parserEnv.cache.getOrSetParser(v);
33
- return prev;
34
- }, {});
35
- },
36
- getOrSet: (i, parse) => {
37
- const c = parsedCache.get(parse);
38
- if (c) {
39
- const f = c.get(i);
40
- if (f) {
41
- // console.log("$$$ cache hit", i)
42
- return f;
43
- }
44
- else {
45
- const nf = parse(i, parserEnv);
46
- c.set(i, nf);
47
- return nf;
48
- }
49
- }
50
- else {
51
- const nf = parse(i, parserEnv);
52
- parsedCache.set(parse, new Map([[i, nf]]));
53
- return nf;
54
- }
55
- }
56
- }
57
- };
58
- return {
59
- get: getEtag,
60
- set: setEtag,
61
- parserEnv
62
- };
63
- });
64
- /**
65
- * @tsplus type ContextMap
66
- * @tsplus companion ContextMap.Ops
67
- */
68
- export class ContextMap extends tsplus_module_1.TagClass() {
69
- }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1GQTs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLFVBQVcsU0FBUSxnQkFBQSxRQUFRLEVBQWM7Q0FNOUQ7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxxQkFBWSxHQUFlLEVBQUU7SUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsSUFBd0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQTtJQUVELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUd4QixDQUFBO0lBRUgsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBR3hCLENBQUE7SUFFSCxNQUFNLFlBQVksR0FBRyxDQUNuQixDQUFrQixFQUNsQixFQUErQixFQUMvQixFQUFFO1FBQ0YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdEIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDLENBQUE7SUFFRCxNQUFNLFNBQVMsR0FBYztRQUMzQiwrRUFBK0U7UUFDL0UsK0hBQStIO1FBQy9ILEdBQUcsRUFBRSxLQUFLO1FBQ1YsS0FBSyxFQUFFO1lBQ0wsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRyxlQUFlLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNyRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQzVDLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUMsRUFBRSxFQUFTLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFPLEVBQUU7Z0JBQzFCLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2hDLElBQUksQ0FBQyxFQUFFO29CQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ2xCLElBQUksQ0FBQyxFQUFFO3dCQUNMLGtDQUFrQzt3QkFDbEMsT0FBTyxDQUFDLENBQUE7cUJBQ1Q7eUJBQU07d0JBQ0wsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTt3QkFDOUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7d0JBQ1osT0FBTyxFQUFFLENBQUE7cUJBQ1Y7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQTtvQkFDOUIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDMUMsT0FBTyxFQUFFLENBQUE7aUJBQ1Y7WUFDSCxDQUFDO1NBQ0Y7S0FDRixDQUFBO0lBRUQsT0FBTztRQUNMLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE9BQU87UUFDWixTQUFTO0tBQ1YsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUFBO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixVQUFXLFNBQVEsZ0JBQUEsUUFBUSxFQUFjO0NBSTlEIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHR5cGUgeyBVbmlxdWVLZXkgfSBmcm9tIFwiQGF6dXJlL2Nvc21vc1wiXG5pbXBvcnQgdHlwZSB7IFBhcnNlciwgUGFyc2VyRW52IH0gZnJvbSBcIkBlZmZlY3QtYXBwL3NjaGVtYS9jdXN0b20vUGFyc2VyXCJcblxuaW1wb3J0IHR5cGUgeyBUaGVzZSB9IGZyb20gXCJAZWZmZWN0LWFwcC9wcmVsdWRlL3NjaGVtYVwiXG5pbXBvcnQgdHlwZSB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuXG5leHBvcnQgdHlwZSBTdG9yZUNvbmZpZzxFPiA9IHtcbiAgdW5pcXVlS2V5cz86IFVuaXF1ZUtleVtdXG4gIG1heEJ1bGtTaXplPzogbnVtYmVyXG4gIHBhcnRpdGlvblZhbHVlOiAoZTogRSkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGFsbG93TmFtZXNwYWNlPzogKG5hbWVzcGFjZTogc3RyaW5nKSA9PiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRlZFZhbHVlcyA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBudWxsXG5leHBvcnQgdHlwZSBTdXBwb3J0ZWRWYWx1ZXMyID0gc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlclxuXG4vLyBkZWZhdWx0IGlzIGVxXG5leHBvcnQgdHlwZSBXaGVyZSA9XG4gIHwgeyBrZXk6IHN0cmluZzsgdD86IFwiZXFcIiB8IFwibm90LWVxXCI7IHZhbHVlOiBTdXBwb3J0ZWRWYWx1ZXMgfVxuICB8IHsga2V5OiBzdHJpbmc7IHQ6IFwiZ3RcIiB8IFwibHRcIiB8IFwiZ3RlXCIgfCBcImx0ZVwiOyB2YWx1ZTogU3VwcG9ydGVkVmFsdWVzMiB9XG4gIHwgeyBrZXk6IHN0cmluZzsgdDogXCJjb250YWluc1wiIHwgXCJzdGFydHMtd2l0aFwiIHwgXCJlbmRzLXdpdGhcIjsgdmFsdWU6IHN0cmluZyB9XG4gIHwgeyBrZXk6IHN0cmluZzsgdDogXCJpbmNsdWRlc1wiIHwgXCJub3QtaW5jbHVkZXNcIjsgdmFsdWU6IHN0cmluZyB9XG4gIHwge1xuICAgIGtleTogc3RyaW5nXG4gICAgdDogXCJpblwiIHwgXCJub3QtaW5cIlxuICAgIHZhbHVlOiByZWFkb25seSAoU3VwcG9ydGVkVmFsdWVzKVtdXG4gIH1cblxuLy8gZGVmYXVsdCBpcyB3aGVyZVxuZXhwb3J0IHR5cGUgU3RvcmVXaGVyZUZpbHRlciA9IHtcbiAgdHlwZT86IFwid2hlcmVcIlxuICBtb2RlPzogXCJhbmRcIiB8IFwib3JcIiAvLyBkZWZhdWx0IGlzIGFuZFxuICB3aGVyZTogcmVhZG9ubHkgW1xuICAgIFdoZXJlLFxuICAgIC4uLihXaGVyZVtdKVxuICBdXG59XG5leHBvcnQgdHlwZSBMZWdhY3lGaWx0ZXI8RT4gPVxuICB8IHsgYnk6IGtleW9mIEU7IHR5cGU6IFwic3RhcnRzV2l0aFwiOyB2YWx1ZTogYW55IH1cbiAgfCB7IGJ5OiBrZXlvZiBFOyB0eXBlOiBcImVuZHNXaXRoXCI7IHZhbHVlOiBhbnkgfVxuICB8IHsgYnk6IGtleW9mIEU7IHR5cGU6IFwiY29udGFpbnNcIjsgdmFsdWU6IGFueSB9XG5leHBvcnQgdHlwZSBKb2luRmluZEZpbHRlciA9IHtcbiAgdHlwZTogXCJqb2luX2ZpbmRcIlxuICBrZXlzOiByZWFkb25seSBzdHJpbmdbXSAvKiB2YWx1ZSBwYXRocyBvZiBFICovXG4gIHZhbHVlS2V5OiBzdHJpbmcgLyogdmFsdWUgcGF0aHMgb2YgRVtrZXlzXVt2YWx1ZUtleV0gKi9cbiAgdmFsdWU6IGFueSAvKiB2YWx1ZSBwYXRoW3ZhbHVlS2V5XSBvZiBFICovXG59XG5leHBvcnQgdHlwZSBGaWx0ZXI8RT4gPVxuICB8IEpvaW5GaW5kRmlsdGVyXG4gIHwgU3RvcmVXaGVyZUZpbHRlclxuICB8IExlZ2FjeUZpbHRlcjxFPlxuXG5leHBvcnQgdHlwZSBGaWx0ZXJKb2luU2VsZWN0ID0ge1xuICB0eXBlOiBcImZpbHRlcl9qb2luX3NlbGVjdFwiXG4gIGtleXM6IHJlYWRvbmx5IHN0cmluZ1tdIC8qIHZhbHVlIHBhdGhzIG9mIEUgKi9cbiAgdmFsdWVLZXk6IHN0cmluZyAvKiB2YWx1ZSBwYXRocyBvZiBFW2tleXNdW3ZhbHVlS2V5XSAqL1xuICB2YWx1ZTogYW55IC8qIHZhbHVlIHBhdGhbdmFsdWVLZXldIG9mIEUgKi9cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZTxQTSBleHRlbmRzIFBlcnNpc3RlbmNlTW9kZWxUeXBlPElkPiwgSWQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgYWxsOiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCBQTVtdPlxuICBmaWx0ZXI6IChcbiAgICBmaWx0ZXI6IEZpbHRlcjxQTT4sXG4gICAgY3Vyc29yPzogeyBsaW1pdD86IG51bWJlcjsgc2tpcD86IG51bWJlciB9XG4gICkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgUE1bXT5cbiAgZmlsdGVySm9pblNlbGVjdDogPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIGZpbHRlcjogRmlsdGVySm9pblNlbGVjdFxuICApID0+IEVmZmVjdDxuZXZlciwgbmV2ZXIsIChUICYgeyBfcm9vdElkOiBzdHJpbmcgfSlbXT5cbiAgZmluZDogKGlkOiBJZCkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgT3B0aW9uPFBNPj5cbiAgc2V0OiAoZTogUE0pID0+IEVmZmVjdDxuZXZlciwgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uLCBQTT5cbiAgYmF0Y2hTZXQ6IChcbiAgICBpdGVtczogTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPlxuICApID0+IEVmZmVjdDxuZXZlciwgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uLCBOb25FbXB0eVJlYWRvbmx5QXJyYXk8UE0+PlxuICBidWxrU2V0OiAoXG4gICAgaXRlbXM6IE5vbkVtcHR5UmVhZG9ubHlBcnJheTxQTT5cbiAgKSA9PiBFZmZlY3Q8bmV2ZXIsIE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiwgTm9uRW1wdHlSZWFkb25seUFycmF5PFBNPj5cbiAgLyoqXG4gICAqIFJlcXVpcmVzIHRoZSBQTSB0eXBlLCBub3QgSWQsIGJlY2F1c2UgdmFyaW91cyBzdG9yZXMgbWF5IG5lZWQgdG8gY2FsY3VsYXRlIGUuZyBwYXJ0aXRpb24ga2V5cy5cbiAgICovXG4gIHJlbW92ZTogKGU6IFBNKSA9PiBFZmZlY3Q8bmV2ZXIsIG5ldmVyLCB2b2lkPlxufVxuXG4vKipcbiAqIEB0c3BsdXMgdHlwZSBTdG9yZU1ha2VyXG4gKiBAdHNwbHVzIGNvbXBhbmlvbiBTdG9yZU1ha2VyLk9wc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RvcmVNYWtlciBleHRlbmRzIFRhZ0NsYXNzPFN0b3JlTWFrZXI+KCkge1xuICBhYnN0cmFjdCBtYWtlOiA8UE0gZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4sIElkIGV4dGVuZHMgc3RyaW5nPihcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc2VlZD86IEVmZmVjdDxuZXZlciwgbmV2ZXIsIEl0ZXJhYmxlPFBNPj4sXG4gICAgY29uZmlnPzogU3RvcmVDb25maWc8UE0+XG4gICkgPT4gRWZmZWN0PG5ldmVyLCBuZXZlciwgU3RvcmU8UE0sIElkPj5cbn1cblxuLyoqXG4gKiBAdHNwbHVzIHN0YXRpYyBDb250ZXh0TWFwLk9wcyBNYWtlXG4gKi9cbmV4cG9ydCBjb25zdCBtYWtlTWFwID0gRWZmZWN0LnN5bmMoKCk6IENvbnRleHRNYXAgPT4ge1xuICBjb25zdCBldGFncyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgY29uc3QgZ2V0RXRhZyA9IChpZDogc3RyaW5nKSA9PiBldGFncy5nZXQoaWQpXG4gIGNvbnN0IHNldEV0YWcgPSAoaWQ6IHN0cmluZywgZVRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgZVRhZyA9PT0gdW5kZWZpbmVkID8gZXRhZ3MuZGVsZXRlKGlkKSA6IGV0YWdzLnNldChpZCwgZVRhZylcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZENhY2hlID0gbmV3IE1hcDxcbiAgICBQYXJzZXI8YW55LCBhbnksIGFueT4sXG4gICAgTWFwPHVua25vd24sIFRoZXNlLlRoZXNlPHVua25vd24sIHVua25vd24+PlxuICA+KClcblxuICBjb25zdCBwYXJzZXJDYWNoZSA9IG5ldyBNYXA8XG4gICAgUGFyc2VyPGFueSwgYW55LCBhbnk+LFxuICAgIChpOiBhbnkpID0+IFRoZXNlLlRoZXNlPGFueSwgYW55PlxuICA+KClcblxuICBjb25zdCBzZXRBbmRSZXR1cm4gPSA8SSwgRSwgQT4oXG4gICAgcDogUGFyc2VyPEksIEUsIEE+LFxuICAgIG5wOiAoaTogSSkgPT4gVGhlc2UuVGhlc2U8RSwgQT5cbiAgKSA9PiB7XG4gICAgcGFyc2VyQ2FjaGUuc2V0KHAsIG5wKVxuICAgIHJldHVybiBucFxuICB9XG5cbiAgY29uc3QgcGFyc2VyRW52OiBQYXJzZXJFbnYgPSB7XG4gICAgLy8gVE9ETzogbGF4OiB0cnVlIHdvdWxkIHR1cm4gb2ZmIHJlZmluZW1lbnQgY2hlY2tzLCBtYXkgaGVscCBvbiBsYXJnZSBwYXlsb2Fkc1xuICAgIC8vIGJ1dCBvZiBjb3Vyc2UgcmVtb3ZlcyBjb25maXJtaW5nIG9mIHZhbGlkYXRpb24gcnVsZXMgKHdoaWNoIG1heSBiZSBva2F5IGZvciBhIGRhdGFiYXNlIG93bmVkIGJ5IHRoZSBhcHAsIGFzIHdlIHdyaXRlIHNhZmVseSlcbiAgICBsYXg6IGZhbHNlLFxuICAgIGNhY2hlOiB7XG4gICAgICBnZXRPclNldFBhcnNlcjogKHApID0+IHBhcnNlckNhY2hlLmdldChwKSA/PyBzZXRBbmRSZXR1cm4ocCwgKGkpID0+IHBhcnNlckVudi5jYWNoZSEuZ2V0T3JTZXQoaSwgcCkpLFxuICAgICAgZ2V0T3JTZXRQYXJzZXJzOiAocGFyc2VycykgPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyc2VycykucmVkdWNlKChwcmV2LCBbaywgdl0pID0+IHtcbiAgICAgICAgICBwcmV2W2tdID0gcGFyc2VyRW52LmNhY2hlIS5nZXRPclNldFBhcnNlcih2KVxuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH0sIHt9IGFzIGFueSlcbiAgICAgIH0sXG4gICAgICBnZXRPclNldDogKGksIHBhcnNlKTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgYyA9IHBhcnNlZENhY2hlLmdldChwYXJzZSlcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICBjb25zdCBmID0gYy5nZXQoaSlcbiAgICAgICAgICBpZiAoZikge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIkJCQgY2FjaGUgaGl0XCIsIGkpXG4gICAgICAgICAgICByZXR1cm4gZlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZiA9IHBhcnNlKGksIHBhcnNlckVudilcbiAgICAgICAgICAgIGMuc2V0KGksIG5mKVxuICAgICAgICAgICAgcmV0dXJuIG5mXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG5mID0gcGFyc2UoaSwgcGFyc2VyRW52KVxuICAgICAgICAgIHBhcnNlZENhY2hlLnNldChwYXJzZSwgbmV3IE1hcChbW2ksIG5mXV0pKVxuICAgICAgICAgIHJldHVybiBuZlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGdldEV0YWcsXG4gICAgc2V0OiBzZXRFdGFnLFxuICAgIHBhcnNlckVudlxuICB9XG59KVxuXG4vKipcbiAqIEB0c3BsdXMgdHlwZSBDb250ZXh0TWFwXG4gKiBAdHNwbHVzIGNvbXBhbmlvbiBDb250ZXh0TWFwLk9wc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udGV4dE1hcCBleHRlbmRzIFRhZ0NsYXNzPENvbnRleHRNYXA+KCkge1xuICBhYnN0cmFjdCBnZXQ6IChpZDogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgYWJzdHJhY3Qgc2V0OiAoaWQ6IHN0cmluZywgZVRhZzogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB2b2lkXG4gIGFic3RyYWN0IHBhcnNlckVudjogUGFyc2VyRW52XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQgZXh0ZW5kcyBzdHJpbmc+IHtcbiAgaWQ6IElkXG4gIF9ldGFnOiBzdHJpbmcgfCB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlQ29uZmlnIHtcbiAgdXJsOiBDb25maWdTZWNyZXRcbiAgcHJlZml4OiBzdHJpbmdcbiAgZGJOYW1lOiBzdHJpbmdcbn1cbiJdfQ==
@@ -1 +0,0 @@
1
- 6c73d6a53dba8e2732209764f5233c88f81e895dc2e244202cf05253b7fe38f0
@@ -1,178 +0,0 @@
1
- import * as tsplus_module_1 from "@effect-app/prelude/_ext/misc";
2
- import * as tsplus_module_2 from "@effect/data/Option";
3
- import * as tsplus_module_3 from "@effect/io/Effect";
4
- import * as tsplus_module_4 from "@effect-app/core/Option";
5
- import * as tsplus_module_5 from "@effect/data/ReadonlyArray";
6
- import { get } from "@effect-app/prelude/utils";
7
- import { OptimisticConcurrencyException } from "../../errors.js";
8
- import objectHash from "object-hash";
9
- export const makeETag = ({ _etag, ...e }) => ({
10
- ...e,
11
- _etag: objectHash(e)
12
- });
13
- export const makeUpdateETag = (name) => (e, current) => tsplus_module_3.gen(function* ($) {
14
- if (e._etag) {
15
- yield* $(tsplus_module_1.encaseMaybeInEffect_(current, () => new OptimisticConcurrencyException(name, e.id, "", e._etag)));
16
- }
17
- if (tsplus_module_2.isSome(current) && current.value._etag !== e._etag) {
18
- return yield* $(tsplus_module_3.fail(new OptimisticConcurrencyException(name, current.value.id, current.value._etag, e._etag)));
19
- }
20
- const newE = makeETag(e);
21
- return newE;
22
- });
23
- export function codeFilter(filter) {
24
- return (x) => filter.type === "startsWith"
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- ? lowercaseIfString(x[filter.by]).startsWith(filter.value.toLowerCase())
27
- ? tsplus_module_2.some(x)
28
- : tsplus_module_4.none
29
- : filter.type === "endsWith"
30
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
- ? lowercaseIfString(x[filter.by]).endsWith(filter.value.toLowerCase())
32
- ? tsplus_module_2.some(x)
33
- : tsplus_module_4.none
34
- : filter.type === "contains"
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
37
- ? lowercaseIfString(x[filter.by]).includes(filter.value.toLowerCase())
38
- ? tsplus_module_2.some(x)
39
- : tsplus_module_4.none
40
- : filter.type === "join_find"
41
- ? filter.keys.some((k) => {
42
- const value = get(x, k);
43
- // we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
44
- return (value
45
- && value.some((v) => compareCaseInsensitive(v[filter.valueKey], filter.value)));
46
- })
47
- ? tsplus_module_2.some(x)
48
- : tsplus_module_4.none
49
- // TODO: support mixed or/and
50
- : filter.mode === "or"
51
- ? filter
52
- .where
53
- .some((p) => {
54
- const k = get(x, p.key);
55
- switch (p.t) {
56
- case "in":
57
- return p.value.includes(k);
58
- case "not-in":
59
- return !p.value.includes(k);
60
- case "lt":
61
- return ltCaseInsensitive(k, p.value);
62
- case "lte":
63
- return lteCaseInsensitive(k, p.value);
64
- case "gt":
65
- return gtCaseInsensitive(k, p.value);
66
- case "gte":
67
- return gteCaseInsensitive(k, p.value);
68
- case "includes":
69
- return k.includes(p.value);
70
- case "not-includes":
71
- return !k.includes(p.value);
72
- case "contains":
73
- return k.toLowerCase().includes((p.value).toLowerCase());
74
- case "ends-with":
75
- return k.toLowerCase().endsWith((p.value).toLowerCase());
76
- case "starts-with":
77
- return k.toLowerCase().startsWith((p.value).toLowerCase());
78
- case "not-eq":
79
- return !compareCaseInsensitive(k, p.value);
80
- case "eq":
81
- case undefined:
82
- return compareCaseInsensitive(k, p.value);
83
- }
84
- })
85
- ? tsplus_module_2.some(x)
86
- : tsplus_module_4.none
87
- : filter
88
- .where
89
- .every((p) => {
90
- const k = get(x, p.key);
91
- switch (p.t) {
92
- case "in":
93
- return p.value.includes(k);
94
- case "not-in":
95
- return !p.value.includes(k);
96
- case "lt":
97
- return ltCaseInsensitive(k, p.value);
98
- case "lte":
99
- return lteCaseInsensitive(k, p.value);
100
- case "gt":
101
- return gtCaseInsensitive(k, p.value);
102
- case "gte":
103
- return gteCaseInsensitive(k, p.value);
104
- case "includes":
105
- return k.includes(p.value);
106
- case "not-includes":
107
- return !k.includes(p.value);
108
- case "contains":
109
- return k.toLowerCase().includes((p.value).toLowerCase());
110
- case "ends-with":
111
- return k.toLowerCase().endsWith((p.value).toLowerCase());
112
- case "starts-with":
113
- return k.toLowerCase().startsWith((p.value).toLowerCase());
114
- case "not-eq":
115
- return p.key.includes(".-1.")
116
- ? get(x, p.key.split(".-1.")[0])
117
- // TODO: or vs and
118
- .every((_) => !compareCaseInsensitive(get(_, p.key.split(".-1.")[1]), p.value))
119
- : !compareCaseInsensitive(k, p.value);
120
- case "eq":
121
- case undefined:
122
- return p.key.includes(".-1.")
123
- ? get(x, p.key.split(".-1.")[0])
124
- // TODO: or vs and
125
- .some((_) => compareCaseInsensitive(get(_, p.key.split(".-1.")[1]), p.value))
126
- : compareCaseInsensitive(k, p.value);
127
- }
128
- })
129
- ? tsplus_module_2.some(x)
130
- : tsplus_module_4.none;
131
- }
132
- export function codeFilterJoinSelect(filter) {
133
- return (x) => tsplus_module_5.filterMap(filter
134
- .keys, (k) => {
135
- const value = get(x, k);
136
- // we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
137
- return value
138
- ? tsplus_module_2.some(tsplus_module_5.filterMap(value, (v) =>
139
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
140
- compareCaseInsensitive(v[filter.valueKey], filter.value)
141
- ? tsplus_module_2.some({ ...v, _rootId: x.id })
142
- : tsplus_module_4.none))
143
- : tsplus_module_4.none;
144
- })
145
- .flatMap((_) => _);
146
- }
147
- function lowercaseIfString(val) {
148
- if (typeof val === "string") {
149
- return val.toLowerCase();
150
- }
151
- return val;
152
- }
153
- function compareCaseInsensitive(valA, valB) {
154
- return typeof valB === "string" && typeof valA === "string"
155
- ? valA.toLowerCase() === valB.toLowerCase()
156
- : valA === valB;
157
- }
158
- function ltCaseInsensitive(valA, valB) {
159
- return typeof valB === "string" && typeof valA === "string"
160
- ? valA.toLowerCase() < valB.toLowerCase()
161
- : valA < valB;
162
- }
163
- function lteCaseInsensitive(valA, valB) {
164
- return typeof valB === "string" && typeof valA === "string"
165
- ? valA.toLowerCase() <= valB.toLowerCase()
166
- : valA <= valB;
167
- }
168
- function gtCaseInsensitive(valA, valB) {
169
- return typeof valB === "string" && typeof valA === "string"
170
- ? valA.toLowerCase() > valB.toLowerCase()
171
- : valA > valB;
172
- }
173
- function gteCaseInsensitive(valA, valB) {
174
- return typeof valB === "string" && typeof valA === "string"
175
- ? valA.toLowerCase() >= valB.toLowerCase()
176
- : valA >= valB;
177
- }
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRS9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBSWhFLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQ0wsQ0FBQztJQUNDLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVEsQ0FBQTtBQUNYLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQXdELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDcEcsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztJQUNwQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04scUNBQUEsT0FBTyxFQUNXLEdBQUcsRUFBRSxDQUFDLElBQUksOEJBQThCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyRixDQUFBO0tBQ0Y7SUFDRCxJQUFJLHVCQUFBLE9BQU8sQ0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ2IscUJBQVksSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RHLENBQUE7S0FDRjtJQUNELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN4QixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQyxDQUFBO0FBRU4sTUFBTSxVQUFVLFVBQVUsQ0FBeUMsTUFBa0I7SUFDbkYsT0FBTyxDQUFDLENBQUksRUFBRSxFQUFFLENBQ2QsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1FBQzFCLDhEQUE4RDtRQUM5RCxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9FLENBQUMsQ0FBQyxxQkFBTyxDQUFrQixDQUFDO1lBQzVCLENBQUMscUJBQVk7UUFDZixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO1lBQzVCLDhEQUE4RDtZQUM5RCxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUM3RSxDQUFDLENBQUMscUJBQU8sQ0FBa0IsQ0FBQztnQkFDNUIsQ0FBQyxxQkFBWTtZQUNmLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVU7Z0JBQzVCLDhEQUE4RDtnQkFDOUQsNkRBQTZEO2dCQUM3RCxDQUFDLENBQUMsaUJBQWlCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUM3RSxDQUFDLENBQUMscUJBQU8sQ0FBa0IsQ0FBQztvQkFDNUIsQ0FBQyxxQkFBWTtnQkFDZixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxXQUFXO29CQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDckIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQThCLENBQUE7d0JBQ3BELG9IQUFvSDt3QkFDcEgsT0FBTyxDQUNMLEtBQUs7K0JBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDL0UsQ0FBQTtvQkFDSCxDQUFDLENBQUM7d0JBQ0YsQ0FBQyxDQUFDLHFCQUFPLENBQWtCLENBQUM7d0JBQzVCLENBQUMscUJBQVk7b0JBQ2YsNkJBQTZCO29CQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJO3dCQUN0QixDQUFDLENBQUMsTUFBTTs2QkFDSCxLQUFLOzZCQUNMLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUNWLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBOzRCQUN2QixRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ1gsS0FBSyxJQUFJO29DQUNQLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0NBQzVCLEtBQUssUUFBUTtvQ0FDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0NBQzdCLEtBQUssSUFBSTtvQ0FDUCxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3RDLEtBQUssS0FBSztvQ0FDUixPQUFPLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3ZDLEtBQUssSUFBSTtvQ0FDUCxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3RDLEtBQUssS0FBSztvQ0FDUixPQUFPLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3ZDLEtBQUssVUFBVTtvQ0FDYixPQUFRLENBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQ0FDL0MsS0FBSyxjQUFjO29DQUNqQixPQUFPLENBQUUsQ0FBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUNoRCxLQUFLLFVBQVU7b0NBQ2IsT0FBUSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0NBQ3RFLEtBQUssV0FBVztvQ0FDZCxPQUFRLENBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQ0FDdEUsS0FBSyxhQUFhO29DQUNoQixPQUFRLENBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQ0FDeEUsS0FBSyxRQUFRO29DQUNYLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUM1QyxLQUFLLElBQUksQ0FBQztnQ0FDVixLQUFLLFNBQVM7b0NBQ1osT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBOzZCQUM1Qzt3QkFDSCxDQUFDLENBQUM7NEJBQ0osQ0FBQyxDQUFDLHFCQUFPLENBQWtCLENBQUM7NEJBQzVCLENBQUMscUJBQVk7d0JBQ2YsQ0FBQyxDQUFDLE1BQU07NkJBQ0gsS0FBSzs2QkFDTCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTs0QkFDWCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTs0QkFDdkIsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUNYLEtBQUssSUFBSTtvQ0FDUCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dDQUM1QixLQUFLLFFBQVE7b0NBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dDQUM3QixLQUFLLElBQUk7b0NBQ1AsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN0QyxLQUFLLEtBQUs7b0NBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN2QyxLQUFLLElBQUk7b0NBQ1AsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN0QyxLQUFLLEtBQUs7b0NBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO2dDQUN2QyxLQUFLLFVBQVU7b0NBQ2IsT0FBUSxDQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQy9DLEtBQUssY0FBYztvQ0FDakIsT0FBTyxDQUFFLENBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQ0FDaEQsS0FBSyxVQUFVO29DQUNiLE9BQVEsQ0FBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO2dDQUN0RSxLQUFLLFdBQVc7b0NBQ2QsT0FBUSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0NBQ3RFLEtBQUssYUFBYTtvQ0FDaEIsT0FBUSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7Z0NBQ3hFLEtBQUssUUFBUTtvQ0FDWCxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3Q0FDM0IsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQVc7NENBQ3pDLGtCQUFrQjs2Q0FDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7d0NBQ2xGLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7Z0NBQ3pDLEtBQUssSUFBSSxDQUFDO2dDQUNWLEtBQUssU0FBUztvQ0FDWixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzt3Q0FDM0IsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQVc7NENBQ3pDLGtCQUFrQjs2Q0FDakIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dDQUNoRixDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTs2QkFDekM7d0JBQ0gsQ0FBQyxDQUFDOzRCQUNOLENBQUMsQ0FBQyxxQkFBTyxDQUFrQixDQUFDOzRCQUM1QixDQUFDLHFCQUFZLENBQUE7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsTUFBd0I7SUFFeEIsT0FBTyxDQUFDLENBQUksRUFBRSxFQUFFLENBQ2QsMEJBQUEsTUFBTTtTQUNILElBQUksRUFDTSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN2QixvSEFBb0g7UUFDcEgsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLHFCQUNBLDBCQUFDLEtBQXVCLEVBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2Qyw4REFBOEQ7WUFDOUQsc0JBQXNCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMvRCxDQUFDLENBQUMscUJBQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxDQUFDLHFCQUFZLENBQ2hCLENBQ0Y7WUFDRCxDQUFDLHFCQUFZLENBQUE7SUFDakIsQ0FBQyxDQUFDO1NBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUN4QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBSSxHQUFNO0lBQ2xDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1FBQzNCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQ3pCO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxJQUFhLEVBQUUsSUFBYTtJQUMxRCxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUMzQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3ZFLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDeEUsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDMUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUE7QUFDbEIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN2RSxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRO1FBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUN6QyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtBQUNqQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ3hFLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgfSBmcm9tIFwiQGVmZmVjdC1hcHAvcHJlbHVkZS91dGlsc1wiXG5cbmltcG9ydCB7IE9wdGltaXN0aWNDb25jdXJyZW5jeUV4Y2VwdGlvbiB9IGZyb20gXCIuLi8uLi9lcnJvcnMuanNcIlxuXG5pbXBvcnQgdHlwZSB7IEZpbHRlciwgRmlsdGVySm9pblNlbGVjdCwgUGVyc2lzdGVuY2VNb2RlbFR5cGUsIFN1cHBvcnRlZFZhbHVlczIgfSBmcm9tIFwiLi9zZXJ2aWNlLmpzXCJcblxuaW1wb3J0IG9iamVjdEhhc2ggZnJvbSBcIm9iamVjdC1oYXNoXCJcblxuZXhwb3J0IGNvbnN0IG1ha2VFVGFnID0gPEUgZXh0ZW5kcyBQZXJzaXN0ZW5jZU1vZGVsVHlwZTxJZD4sIElkIGV4dGVuZHMgc3RyaW5nPihcbiAgeyBfZXRhZywgLi4uZSB9OiBFXG4pOiBFID0+XG4gICh7XG4gICAgLi4uZSxcbiAgICBfZXRhZzogb2JqZWN0SGFzaChlKVxuICB9KSBhcyBhbnlcbmV4cG9ydCBjb25zdCBtYWtlVXBkYXRlRVRhZyA9XG4gIChuYW1lOiBzdHJpbmcpID0+IDxFIGV4dGVuZHMgUGVyc2lzdGVuY2VNb2RlbFR5cGU8SWQ+LCBJZCBleHRlbmRzIHN0cmluZz4oZTogRSwgY3VycmVudDogT3B0aW9uPEU+KSA9PlxuICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qKCQpIHtcbiAgICAgIGlmIChlLl9ldGFnKSB7XG4gICAgICAgIHlpZWxkKiAkKFxuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgIC5lbmNhc2VJbkVmZmVjdCgoKSA9PiBuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGUuaWQsIFwiXCIsIGUuX2V0YWcpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudC5pc1NvbWUoKSAmJiBjdXJyZW50LnZhbHVlLl9ldGFnICE9PSBlLl9ldGFnKSB7XG4gICAgICAgIHJldHVybiB5aWVsZCogJChcbiAgICAgICAgICBFZmZlY3QuZmFpbChuZXcgT3B0aW1pc3RpY0NvbmN1cnJlbmN5RXhjZXB0aW9uKG5hbWUsIGN1cnJlbnQudmFsdWUuaWQsIGN1cnJlbnQudmFsdWUuX2V0YWcsIGUuX2V0YWcpKVxuICAgICAgICApXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdFID0gbWFrZUVUYWcoZSlcbiAgICAgIHJldHVybiBuZXdFXG4gICAgfSlcblxuZXhwb3J0IGZ1bmN0aW9uIGNvZGVGaWx0ZXI8RSBleHRlbmRzIHsgaWQ6IHN0cmluZyB9LCBORSBleHRlbmRzIEU+KGZpbHRlcjogRmlsdGVyPE5FPikge1xuICByZXR1cm4gKHg6IEUpID0+XG4gICAgZmlsdGVyLnR5cGUgPT09IFwic3RhcnRzV2l0aFwiXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgPyBsb3dlcmNhc2VJZlN0cmluZygoeCBhcyBhbnkpW2ZpbHRlci5ieV0pLnN0YXJ0c1dpdGgoZmlsdGVyLnZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXIudHlwZSA9PT0gXCJlbmRzV2l0aFwiXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgPyBsb3dlcmNhc2VJZlN0cmluZygoeCBhcyBhbnkpW2ZpbHRlci5ieV0pLmVuZHNXaXRoKGZpbHRlci52YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgIDogZmlsdGVyLnR5cGUgPT09IFwiY29udGFpbnNcIlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGxcbiAgICAgID8gbG93ZXJjYXNlSWZTdHJpbmcoKHggYXMgYW55KVtmaWx0ZXIuYnldKS5pbmNsdWRlcyhmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICA6IGZpbHRlci50eXBlID09PSBcImpvaW5fZmluZFwiXG4gICAgICA/IGZpbHRlci5rZXlzLnNvbWUoKGspID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldCh4LCBrKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG4gICAgICAgICAgLy8gd2UgbWltaWMgdGhlIGJlaGF2aW9yIG9mIGNvc21vc2RiOyBpZiB0aGUgc2hhcGUgaW4gZGIgZG9lcyBub3QgbWF0Y2ggd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgd2UgaW1hZ2luZSBmYWxzZSBoaXRcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICAgICYmIHZhbHVlLnNvbWUoKHYpID0+IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUodltmaWx0ZXIudmFsdWVLZXldLCBmaWx0ZXIudmFsdWUpKVxuICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICAgICAgPyBPcHRpb24oeCBhcyB1bmtub3duIGFzIE5FKVxuICAgICAgICA6IE9wdGlvbi5ub25lXG4gICAgICAvLyBUT0RPOiBzdXBwb3J0IG1peGVkIG9yL2FuZFxuICAgICAgOiBmaWx0ZXIubW9kZSA9PT0gXCJvclwiXG4gICAgICA/IGZpbHRlclxuICAgICAgICAgIC53aGVyZVxuICAgICAgICAgIC5zb21lKChwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrID0gZ2V0KHgsIHAua2V5KVxuICAgICAgICAgICAgc3dpdGNoIChwLnQpIHtcbiAgICAgICAgICAgICAgY2FzZSBcImluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHAudmFsdWUuaW5jbHVkZXMoaylcbiAgICAgICAgICAgICAgY2FzZSBcIm5vdC1pblwiOlxuICAgICAgICAgICAgICAgIHJldHVybiAhcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibHRcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gbHRDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImx0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0XCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGd0Q2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJndGVcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJpbmNsdWRlc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoayBhcyBBcnJheTxzdHJpbmc+KS5pbmNsdWRlcyhwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiY29udGFpbnNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwiZW5kcy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgocC52YWx1ZSkudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgY2FzZSBcInN0YXJ0cy13aXRoXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWVxXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKGssIHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJlcVwiOlxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgID8gT3B0aW9uKHggYXMgdW5rbm93biBhcyBORSlcbiAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgOiBmaWx0ZXJcbiAgICAgICAgICAud2hlcmVcbiAgICAgICAgICAuZXZlcnkoKHApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGsgPSBnZXQoeCwgcC5rZXkpXG4gICAgICAgICAgICBzd2l0Y2ggKHAudCkge1xuICAgICAgICAgICAgICBjYXNlIFwiaW5cIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC52YWx1ZS5pbmNsdWRlcyhrKVxuICAgICAgICAgICAgICBjYXNlIFwibm90LWluXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICFwLnZhbHVlLmluY2x1ZGVzKGspXG4gICAgICAgICAgICAgIGNhc2UgXCJsdFwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBsdENhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwibHRlXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGx0ZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgICBjYXNlIFwiZ3RcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZ3RDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImd0ZVwiOlxuICAgICAgICAgICAgICAgIHJldHVybiBndGVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImluY2x1ZGVzXCI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIChrIGFzIEFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtaW5jbHVkZXNcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIShrIGFzIEFycmF5PHN0cmluZz4pLmluY2x1ZGVzKHAudmFsdWUpXG4gICAgICAgICAgICAgIGNhc2UgXCJjb250YWluc1wiOlxuICAgICAgICAgICAgICAgIHJldHVybiAoayBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoKHAudmFsdWUpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJlbmRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKChwLnZhbHVlKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICBjYXNlIFwic3RhcnRzLXdpdGhcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gKGsgYXMgc3RyaW5nKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoKHAudmFsdWUpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICAgIGNhc2UgXCJub3QtZXFcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gcC5rZXkuaW5jbHVkZXMoXCIuLTEuXCIpXG4gICAgICAgICAgICAgICAgICA/IChnZXQoeCwgcC5rZXkuc3BsaXQoXCIuLTEuXCIpWzBdKSBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogb3IgdnMgYW5kXG4gICAgICAgICAgICAgICAgICAgIC5ldmVyeSgoXykgPT4gIWNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoZ2V0KF8sIHAua2V5LnNwbGl0KFwiLi0xLlwiKVsxXSEpLCBwLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIDogIWNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoaywgcC52YWx1ZSlcbiAgICAgICAgICAgICAgY2FzZSBcImVxXCI6XG4gICAgICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgICAgIHJldHVybiBwLmtleS5pbmNsdWRlcyhcIi4tMS5cIilcbiAgICAgICAgICAgICAgICAgID8gKGdldCh4LCBwLmtleS5zcGxpdChcIi4tMS5cIilbMF0pIGFzIGFueVtdKVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBvciB2cyBhbmRcbiAgICAgICAgICAgICAgICAgICAgLnNvbWUoKF8pID0+IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoZ2V0KF8sIHAua2V5LnNwbGl0KFwiLi0xLlwiKVsxXSEpLCBwLnZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIDogY29tcGFyZUNhc2VJbnNlbnNpdGl2ZShrLCBwLnZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICA/IE9wdGlvbih4IGFzIHVua25vd24gYXMgTkUpXG4gICAgICA6IE9wdGlvbi5ub25lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb2RlRmlsdGVySm9pblNlbGVjdDxFIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0sIE5FPihcbiAgZmlsdGVyOiBGaWx0ZXJKb2luU2VsZWN0XG4pIHtcbiAgcmV0dXJuICh4OiBFKSA9PlxuICAgIGZpbHRlclxuICAgICAgLmtleXNcbiAgICAgIC5maWx0ZXJNYXAoKGspID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoeCwgaylcbiAgICAgICAgLy8gd2UgbWltaWMgdGhlIGJlaGF2aW9yIG9mIGNvc21vc2RiOyBpZiB0aGUgc2hhcGUgaW4gZGIgZG9lcyBub3QgbWF0Y2ggd2hhdCB3ZSdyZSBsb29raW5nIGZvciwgd2UgaW1hZ2luZSBmYWxzZSBoaXRcbiAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgPyBPcHRpb24oXG4gICAgICAgICAgICAodmFsdWUgYXMgcmVhZG9ubHkgTkVbXSkuZmlsdGVyTWFwKCh2KSA9PlxuICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKCh2IGFzIGFueSlbZmlsdGVyLnZhbHVlS2V5XSwgZmlsdGVyLnZhbHVlKVxuICAgICAgICAgICAgICAgID8gT3B0aW9uKHsgLi4udiwgX3Jvb3RJZDogeC5pZCB9KVxuICAgICAgICAgICAgICAgIDogT3B0aW9uLm5vbmVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgOiBPcHRpb24ubm9uZVxuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChfKSA9PiBfKVxufVxuXG5mdW5jdGlvbiBsb3dlcmNhc2VJZlN0cmluZzxUPih2YWw6IFQpIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gdmFsLnRvTG93ZXJDYXNlKClcbiAgfVxuICByZXR1cm4gdmFsXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUodmFsQTogdW5rbm93biwgdmFsQjogdW5rbm93bikge1xuICByZXR1cm4gdHlwZW9mIHZhbEIgPT09IFwic3RyaW5nXCIgJiYgdHlwZW9mIHZhbEEgPT09IFwic3RyaW5nXCJcbiAgICA/IHZhbEEudG9Mb3dlckNhc2UoKSA9PT0gdmFsQi50b0xvd2VyQ2FzZSgpXG4gICAgOiB2YWxBID09PSB2YWxCXG59XG5cbmZ1bmN0aW9uIGx0Q2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPCB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPCB2YWxCXG59XG5cbmZ1bmN0aW9uIGx0ZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiBTdXBwb3J0ZWRWYWx1ZXMyLCB2YWxCOiBTdXBwb3J0ZWRWYWx1ZXMyKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpIDw9IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA8PSB2YWxCXG59XG5cbmZ1bmN0aW9uIGd0Q2FzZUluc2Vuc2l0aXZlKHZhbEE6IFN1cHBvcnRlZFZhbHVlczIsIHZhbEI6IFN1cHBvcnRlZFZhbHVlczIpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWxCID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiB2YWxBID09PSBcInN0cmluZ1wiXG4gICAgPyB2YWxBLnRvTG93ZXJDYXNlKCkgPiB2YWxCLnRvTG93ZXJDYXNlKClcbiAgICA6IHZhbEEgPiB2YWxCXG59XG5cbmZ1bmN0aW9uIGd0ZUNhc2VJbnNlbnNpdGl2ZSh2YWxBOiBTdXBwb3J0ZWRWYWx1ZXMyLCB2YWxCOiBTdXBwb3J0ZWRWYWx1ZXMyKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsQiA9PT0gXCJzdHJpbmdcIiAmJiB0eXBlb2YgdmFsQSA9PT0gXCJzdHJpbmdcIlxuICAgID8gdmFsQS50b0xvd2VyQ2FzZSgpID49IHZhbEIudG9Mb3dlckNhc2UoKVxuICAgIDogdmFsQSA+PSB2YWxCXG59XG4iXX0=