@effect-app/infra 0.108.4 → 0.109.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/_cjs/RequestContext.cjs +2 -2
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +1 -1
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +1 -1
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +1 -1
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +1 -1
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_src/RequestContext.ts +2 -2
- package/_src/api/setupRequest.ts +1 -1
- package/_src/services/Emailer/service.ts +2 -2
- package/_src/services/Operations/live.ts +3 -3
- package/_src/services/QueueMaker/memQueue.ts +1 -1
- package/_src/services/QueueMaker/sbqueue.ts +1 -1
- package/_src/services/RequestContextContainer.ts +1 -1
- package/dist/RequestContext.d.ts +11 -11
- package/dist/RequestContext.js +3 -3
- package/dist/api/setupRequest.js +2 -2
- package/dist/services/Emailer/service.d.ts +3 -3
- package/dist/services/Emailer/service.d.ts.map +1 -1
- package/dist/services/Operations/live.js +4 -4
- package/dist/services/QueueMaker/memQueue.js +2 -2
- package/dist/services/QueueMaker/sbqueue.js +2 -2
- package/dist/services/Repository.d.ts +2 -2
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +2 -2
- package/dist/services/RequestContextContainer.d.ts +4 -4
- package/dist/services/RequestContextContainer.js +2 -2
- package/package.json +5 -5
- package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.content +0 -275
- package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.hash +0 -1
- package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.content +0 -43
- package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.hash +0 -1
- package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.content +0 -122
- package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.hash +0 -1
- package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.content +0 -86
- package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.hash +0 -1
- package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.content +0 -49
- package/.cache/effect/49c1bd9ec26e6df78b994d8df0bfe21b119803fa4aa46349bf4679fd0f1e7cda.hash +0 -1
- package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.content +0 -70
- package/.cache/effect/58d4ccde8bd2db7829706db5bebd01b99900ee83f0f6a8413b53d17cbd69f510.hash +0 -1
- package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.content +0 -178
- package/.cache/effect/72a5a16a6b62b63cd71719c833091128207d7e6c823cb32293549b3dd58c451b.hash +0 -1
- package/.cache/effect/7a9c33db6aedaf00093a132c1d4e48e9d043cef05e932b8a37da24d44e224248.content +0 -57
- package/.cache/effect/7a9c33db6aedaf00093a132c1d4e48e9d043cef05e932b8a37da24d44e224248.hash +0 -1
- package/.cache/effect/8594f0f42afc0641b00e88998000cc47382a1d07da31f4a148f7976701ca22d5.content +0 -97
- package/.cache/effect/8594f0f42afc0641b00e88998000cc47382a1d07da31f4a148f7976701ca22d5.hash +0 -1
- package/.cache/effect/c67d971634d2dc8118b40452b61c9a51620c35809be4a89982476aa80701d852.content +0 -11
- package/.cache/effect/c67d971634d2dc8118b40452b61c9a51620c35809be4a89982476aa80701d852.hash +0 -1
- package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.content +0 -364
- package/.cache/effect/f38adf43700dab905456a534a0690eaf882cff2cd576c731f23d6d14a3c3d659.hash +0 -1
package/.cache/effect/095519d034161945a8d2616a506d3e7f35a9b3d868814f44c747429c60fc4e7f.content
DELETED
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
export const $in = $in_1;
|
|
2
|
-
export const $notIn = $notIn_1;
|
|
3
|
-
export const $is = $is_1;
|
|
4
|
-
export const $includes = $includes_1;
|
|
5
|
-
export const $notIncludes = $notIncludes_1;
|
|
6
|
-
export const $isnt = $isnt_1;
|
|
7
|
-
export const $gt = $gt_1;
|
|
8
|
-
export const $gte = $gte_1;
|
|
9
|
-
export const $lt = $lt_1;
|
|
10
|
-
export const $lte = $lte_1;
|
|
11
|
-
export const $startsWith = $startsWith_1;
|
|
12
|
-
export const $endsWith = $endsWith_1;
|
|
13
|
-
export const $contains = $contains_1;
|
|
14
|
-
export function makeWhereFilter() {
|
|
15
|
-
const f = makeWhereFilter_();
|
|
16
|
-
return f;
|
|
17
|
-
}
|
|
18
|
-
function makeHelpers() {
|
|
19
|
-
const helpers = makeHelpers_();
|
|
20
|
-
return helpers;
|
|
21
|
-
}
|
|
22
|
-
function makeHelpers_() {
|
|
23
|
-
return {
|
|
24
|
-
in(path, value) {
|
|
25
|
-
return { key: path, value, t: "in" };
|
|
26
|
-
},
|
|
27
|
-
notIn(path, value) {
|
|
28
|
-
return { key: path, value, t: "not-in" };
|
|
29
|
-
},
|
|
30
|
-
includes(path, value) {
|
|
31
|
-
return { key: path, value, t: "includes" };
|
|
32
|
-
},
|
|
33
|
-
notIncludes(path, value) {
|
|
34
|
-
return { key: path, value, t: "not-includes" };
|
|
35
|
-
},
|
|
36
|
-
eq(path, value) {
|
|
37
|
-
return { key: path, value, t: "eq" };
|
|
38
|
-
},
|
|
39
|
-
notEq(path, value) {
|
|
40
|
-
return { key: path, value, t: "not-eq" };
|
|
41
|
-
},
|
|
42
|
-
gt(path, value) {
|
|
43
|
-
return { key: path, value, t: "gt" };
|
|
44
|
-
},
|
|
45
|
-
gte(path, value) {
|
|
46
|
-
return { key: path, value, t: "gte" };
|
|
47
|
-
},
|
|
48
|
-
lt(path, value) {
|
|
49
|
-
return { key: path, value, t: "lt" };
|
|
50
|
-
},
|
|
51
|
-
lte(path, value) {
|
|
52
|
-
return { key: path, value, t: "lte" };
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function makeWhereFilter_() {
|
|
57
|
-
const helpers = makeHelpers();
|
|
58
|
-
const f = Object.assign(helpers.eq, helpers);
|
|
59
|
-
return f;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* @tsplus fluent string $in
|
|
63
|
-
* @tsplus fluent boolean $in
|
|
64
|
-
* @tsplus fluent number $in
|
|
65
|
-
*/
|
|
66
|
-
function $in_1(_, ...v) {
|
|
67
|
-
return $$in(v);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* @tsplus fluent string $notIn
|
|
71
|
-
* @tsplus fluent boolean $notIn
|
|
72
|
-
* @tsplus fluent number $notIn
|
|
73
|
-
*/
|
|
74
|
-
function $notIn_1(_, ...v) {
|
|
75
|
-
return $$notIn(v);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* @tsplus fluent string $is
|
|
79
|
-
* @tsplus fluent Date $is
|
|
80
|
-
* @tsplus fluent boolean $is
|
|
81
|
-
* @tsplus fluent number $is
|
|
82
|
-
* @tsplus fluent Object $is
|
|
83
|
-
*/
|
|
84
|
-
function $is_1(_, v) {
|
|
85
|
-
return $$is(v);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* @tsplus fluent ReadonlyArray $includes
|
|
89
|
-
*/
|
|
90
|
-
function $includes_1(_, v) {
|
|
91
|
-
return $$includes(v);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* @tsplus fluent ReadonlyArray $notIncludes
|
|
95
|
-
*/
|
|
96
|
-
function $notIncludes_1(_, v) {
|
|
97
|
-
return $$notIncludes(v);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* @tsplus fluent string $isnt
|
|
101
|
-
* @tsplus fluent Date $isnt
|
|
102
|
-
* @tsplus fluent boolean $isnt
|
|
103
|
-
* @tsplus fluent number $isnt
|
|
104
|
-
* @tsplus fluent Object $isnt
|
|
105
|
-
*/
|
|
106
|
-
function $isnt_1(_, v) {
|
|
107
|
-
return $$isnt(v);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* @tsplus fluent string $gt
|
|
111
|
-
* @tsplus fluent Date $gt
|
|
112
|
-
* @tsplus fluent boolean $gt
|
|
113
|
-
* @tsplus fluent number $gt
|
|
114
|
-
* @tsplus fluent Object $gt
|
|
115
|
-
*/
|
|
116
|
-
function $gt_1(_, v) {
|
|
117
|
-
return $$gt(v);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* @tsplus fluent string $gte
|
|
121
|
-
* @tsplus fluent Date $gte
|
|
122
|
-
* @tsplus fluent boolean $gte
|
|
123
|
-
* @tsplus fluent number $gte
|
|
124
|
-
* @tsplus fluent Object $gte
|
|
125
|
-
*/
|
|
126
|
-
function $gte_1(_, v) {
|
|
127
|
-
return $$gte(v);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* @tsplus fluent string $lt
|
|
131
|
-
* @tsplus fluent Date $lt
|
|
132
|
-
* @tsplus fluent boolean $lt
|
|
133
|
-
* @tsplus fluent number $lt
|
|
134
|
-
* @tsplus fluent Object $lt
|
|
135
|
-
*/
|
|
136
|
-
function $lt_1(_, v) {
|
|
137
|
-
return $$lt(v);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* @tsplus fluent string $lte
|
|
141
|
-
* @tsplus fluent Date $lte
|
|
142
|
-
* @tsplus fluent boolean $lte
|
|
143
|
-
* @tsplus fluent number $lte
|
|
144
|
-
* @tsplus fluent Object $lte
|
|
145
|
-
*/
|
|
146
|
-
function $lte_1(_, v) {
|
|
147
|
-
return $$lte(v);
|
|
148
|
-
}
|
|
149
|
-
function $is__(v) {
|
|
150
|
-
return (_) => $is_1(_, v);
|
|
151
|
-
}
|
|
152
|
-
function $isnt__(v) {
|
|
153
|
-
return (_) => $isnt_1(_, v);
|
|
154
|
-
}
|
|
155
|
-
function $includes__(v) {
|
|
156
|
-
return (_) => $includes_1(_, v);
|
|
157
|
-
}
|
|
158
|
-
function $notIncludes__(v) {
|
|
159
|
-
return (_) => $notIncludes_1(_, v);
|
|
160
|
-
}
|
|
161
|
-
function $lt__(v) {
|
|
162
|
-
return (_) => $lt_1(_, v);
|
|
163
|
-
}
|
|
164
|
-
function $lte__(v) {
|
|
165
|
-
return (_) => $lte_1(_, v);
|
|
166
|
-
}
|
|
167
|
-
function $gt__(v) {
|
|
168
|
-
return (_) => $gt_1(_, v);
|
|
169
|
-
}
|
|
170
|
-
function $gte__(v) {
|
|
171
|
-
return (_) => $gte_1(_, v);
|
|
172
|
-
}
|
|
173
|
-
function $in__(...v) {
|
|
174
|
-
return (_) => $in_1(_, ...v);
|
|
175
|
-
}
|
|
176
|
-
function $notIn__(...v) {
|
|
177
|
-
return (_) => $notIn_1(_, ...v);
|
|
178
|
-
}
|
|
179
|
-
function $startsWith__(v) {
|
|
180
|
-
return (_) => $startsWith_1(_, v);
|
|
181
|
-
}
|
|
182
|
-
function $endsWith__(v) {
|
|
183
|
-
return (_) => $endsWith_1(_, v);
|
|
184
|
-
}
|
|
185
|
-
function $contains__(v) {
|
|
186
|
-
return (_) => $contains_1(_, v);
|
|
187
|
-
}
|
|
188
|
-
export const Filters = {
|
|
189
|
-
$is: $is__,
|
|
190
|
-
$isnt: $isnt__,
|
|
191
|
-
$in: $in__,
|
|
192
|
-
$notIn: $notIn__,
|
|
193
|
-
$gt: $gt__,
|
|
194
|
-
$gte: $gte__,
|
|
195
|
-
$lt: $lt__,
|
|
196
|
-
$lte: $lte__,
|
|
197
|
-
$contains: $contains__,
|
|
198
|
-
$endsWith: $endsWith__,
|
|
199
|
-
$startsWith: $startsWith__,
|
|
200
|
-
$includes: $includes__,
|
|
201
|
-
$notIncludes: $notIncludes__
|
|
202
|
-
};
|
|
203
|
-
/**
|
|
204
|
-
* @tsplus fluent string $startsWith
|
|
205
|
-
*/
|
|
206
|
-
function $startsWith_1(_, v) {
|
|
207
|
-
return $$startsWith(v);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* @tsplus fluent string $endsWith
|
|
211
|
-
*/
|
|
212
|
-
function $endsWith_1(_, v) {
|
|
213
|
-
return $$endsWith(v);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* @tsplus fluent string $contains
|
|
217
|
-
*/
|
|
218
|
-
function $contains_1(_, v) {
|
|
219
|
-
return $$contains(v);
|
|
220
|
-
}
|
|
221
|
-
function $$in(v) {
|
|
222
|
-
return { t: "in", v };
|
|
223
|
-
}
|
|
224
|
-
function $$notIn(v) {
|
|
225
|
-
return { t: "not-in", v };
|
|
226
|
-
}
|
|
227
|
-
function $$is(v) {
|
|
228
|
-
return { t: "eq", v };
|
|
229
|
-
}
|
|
230
|
-
function $$isnt(v) {
|
|
231
|
-
return { t: "not-eq", v };
|
|
232
|
-
}
|
|
233
|
-
function $$includes(v) {
|
|
234
|
-
return { t: "includes", v };
|
|
235
|
-
}
|
|
236
|
-
function $$notIncludes(v) {
|
|
237
|
-
return { t: "not-includes", v };
|
|
238
|
-
}
|
|
239
|
-
function $$lt(v) {
|
|
240
|
-
return { t: "lt", v };
|
|
241
|
-
}
|
|
242
|
-
function $$lte(v) {
|
|
243
|
-
return { t: "lte", v };
|
|
244
|
-
}
|
|
245
|
-
function $$gt(v) {
|
|
246
|
-
return { t: "gt", v };
|
|
247
|
-
}
|
|
248
|
-
function $$gte(v) {
|
|
249
|
-
return { t: "gte", v };
|
|
250
|
-
}
|
|
251
|
-
function $$contains(v) {
|
|
252
|
-
return { t: "contains", v };
|
|
253
|
-
}
|
|
254
|
-
function $$startsWith(v) {
|
|
255
|
-
return { t: "starts-with", v };
|
|
256
|
-
}
|
|
257
|
-
function $$endsWith(v) {
|
|
258
|
-
return { t: "ends-with", v };
|
|
259
|
-
}
|
|
260
|
-
function f(p, b) {
|
|
261
|
-
if (typeof b === "function")
|
|
262
|
-
b = b(undefined);
|
|
263
|
-
const obj = typeof b === "object" && b !== null;
|
|
264
|
-
return makeFilter(p, obj ? b.v : b, obj ? b.t ?? "eq" : "eq");
|
|
265
|
-
}
|
|
266
|
-
function makeFilter(path, value, t) {
|
|
267
|
-
return { key: path, t, value };
|
|
268
|
-
}
|
|
269
|
-
export function makeFilters() {
|
|
270
|
-
function test(p, v) {
|
|
271
|
-
return f(p, v);
|
|
272
|
-
}
|
|
273
|
-
return test;
|
|
274
|
-
}
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6ImFBdUlnQixHQUFHO2FBWUgsTUFBTTthQWNOLEdBQUc7YUFPSCxTQUFTO2FBT1QsWUFBWTthQWFaLEtBQUs7YUFXTCxHQUFHO2FBV0gsSUFBSTthQVdKLEdBQUc7YUFXSCxJQUFJO2FBK0VKLFdBQVc7YUFPWCxTQUFTO2FBT1QsU0FBUztBQTNUekIsTUFBTSxVQUFVLGVBQWU7SUFDN0IsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLEVBQWdCLENBQUE7SUFDMUMsT0FBTyxDQUE4QixDQUFBO0FBQ3ZDLENBQUM7QUFFRCxTQUFTLFdBQVc7SUFDbEIsTUFBTSxPQUFPLEdBQUcsWUFBWSxFQUFnQixDQUFBO0lBQzVDLE9BQU8sT0FBcUMsQ0FBQTtBQUM5QyxDQUFDO0FBSUQsU0FBUyxZQUFZO0lBSW5CLE9BQU87UUFDTCxFQUFFLENBRUEsSUFBZ0IsRUFDaEIsS0FBbUI7WUFFbkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFhLEVBQUUsQ0FBQTtRQUMvQyxDQUFDO1FBQ0QsS0FBSyxDQUVILElBQWdCLEVBQ2hCLEtBQW1CO1lBRW5CLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsUUFBaUIsRUFBRSxDQUFBO1FBQ25ELENBQUM7UUFDRCxRQUFRLENBRU4sSUFBZ0IsRUFDaEIsS0FBUTtZQUVSLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBbUIsRUFBRSxDQUFBO1FBQ3JELENBQUM7UUFDRCxXQUFXLENBRVQsSUFBZ0IsRUFDaEIsS0FBUTtZQUVSLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsY0FBdUIsRUFBRSxDQUFBO1FBQ3pELENBQUM7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QTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkVmFsdWVzIH0gZnJvbSBcIi4vZmlsdGVyL3R5cGVzL2ZpZWxkcy5qc1wiXG5pbXBvcnQgdHlwZSB7IEZpZWxkUGF0aCwgRmllbGRQYXRoVmFsdWUgfSBmcm9tIFwiLi9maWx0ZXIvdHlwZXMvcGF0aC9lYWdlci5qc1wiXG5pbXBvcnQgdHlwZSB7IFN1cHBvcnRlZFZhbHVlcywgV2hlcmUgfSBmcm9tIFwiLi9zZXJ2aWNlcy9TdG9yZS5qc1wiXG5cbi8qKlxuICogdGhlIGZ1bmN0aW9uIGRlZmF1bHRzIHRvIFwiZXFcIiwgYnV0IGhhcyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIG5vdEVxLCBpbiBhbmQgbm90SW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz5cbiAgZXh0ZW5kcyBSZXR1cm5UeXBlPHR5cGVvZiBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcz4+XG57fVxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIGNvbnN0IGYgPSBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcz4oKVxuICByZXR1cm4gZiBhcyBXaGVyZUZpbHRlcjxURmllbGRWYWx1ZXM+XG59XG5cbmZ1bmN0aW9uIG1ha2VIZWxwZXJzPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbiAgY29uc3QgaGVscGVycyA9IG1ha2VIZWxwZXJzXzxURmllbGRWYWx1ZXM+KClcbiAgcmV0dXJuIGhlbHBlcnMgYXMgV2hlcmVIZWxwZXJzPFRGaWVsZFZhbHVlcz5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaGVyZUhlbHBlcnM8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgbWFrZUhlbHBlcnNfPFRGaWVsZFZhbHVlcz4+IHt9XG5cbmZ1bmN0aW9uIG1ha2VIZWxwZXJzXzxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIHR5cGUgUGF0aHMgPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPlxuICB0eXBlIFZhbHVlPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocz4gPSBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+XG5cbiAgcmV0dXJuIHtcbiAgICBpbjxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiByZWFkb25seSBWW11cbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwiaW5cIiBhcyBjb25zdCB9XG4gICAgfSxcbiAgICBub3RJbjxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiByZWFkb25seSBWW11cbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWluXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgaW5jbHVkZXM8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJpbmNsdWRlc1wiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIG5vdEluY2x1ZGVzPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWluY2x1ZGVzXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgZXE8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJlcVwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIG5vdEVxPFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibm90LWVxXCIgYXMgY29uc3QgfVxuICAgIH0sXG4gICAgZ3Q8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJndFwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIGd0ZTxURmllbGROYW1lIGV4dGVuZHMgUGF0aHMsIFYgZXh0ZW5kcyBWYWx1ZTxURmllbGROYW1lPj4oXG4gICAgICB0aGlzOiB2b2lkLFxuICAgICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICAgIHZhbHVlOiBWXG4gICAgKSB7XG4gICAgICByZXR1cm4geyBrZXk6IHBhdGgsIHZhbHVlLCB0OiBcImd0ZVwiIGFzIGNvbnN0IH1cbiAgICB9LFxuICAgIGx0PFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocywgViBleHRlbmRzIFZhbHVlPFRGaWVsZE5hbWU+PihcbiAgICAgIHRoaXM6IHZvaWQsXG4gICAgICBwYXRoOiBURmllbGROYW1lLFxuICAgICAgdmFsdWU6IFZcbiAgICApIHtcbiAgICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwibHRcIiBhcyBjb25zdCB9XG4gICAgfSxcbiAgICBsdGU8VEZpZWxkTmFtZSBleHRlbmRzIFBhdGhzLCBWIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4+KFxuICAgICAgdGhpczogdm9pZCxcbiAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4gICAgICB2YWx1ZTogVlxuICAgICkge1xuICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJsdGVcIiBhcyBjb25zdCB9XG4gICAgfVxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFdoZXJlPlxufVxuXG5mdW5jdGlvbiBtYWtlV2hlcmVGaWx0ZXJfPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbiAgY29uc3QgaGVscGVycyA9IG1ha2VIZWxwZXJzPFRGaWVsZFZhbHVlcz4oKVxuICBjb25zdCBmID0gT2JqZWN0LmFzc2lnbihoZWxwZXJzLmVxLCBoZWxwZXJzKVxuICByZXR1cm4gZlxufVxuXG5leHBvcnQgdHlwZSBXaGVyZVZhbHVlPFxuICBUIGV4dGVuZHNcbiAgICB8IFwiZXFcIlxuICAgIHwgXCJub3QtZXFcIlxuICAgIHwgXCJsdFwiXG4gICAgfCBcImd0XCJcbiAgICB8IFwibHRlXCJcbiAgICB8IFwiZ3RlXCJcbiAgICB8IFwic3RhcnRzLXdpdGhcIlxuICAgIHwgXCJlbmRzLXdpdGhcIlxuICAgIHwgXCJjb250YWluc1wiXG4gICAgfCBcImluXCJcbiAgICB8IFwibm90LWluXCJcbiAgICB8IFwiaW5jbHVkZXNcIlxuICAgIHwgXCJub3QtaW5jbHVkZXNcIixcbiAgQSwgLy8gZXh0ZW5kcyBTdXBwb3J0ZWRWYWx1ZXMsXG4gIFYgZXh0ZW5kcyBBID0gQVxuPiA9IHsgdDogVDsgdjogViB9XG5cbmV4cG9ydCB0eXBlIFdoZXJlSW48VCBleHRlbmRzIFwiaW5cIiB8IFwibm90LWluXCIsIFYsIFZhbHVlcyBleHRlbmRzIHJlYWRvbmx5IFZbXSA9IHJlYWRvbmx5IFZbXT4gPSB7XG4gIHQ6IFRcbiAgdjogVmFsdWVzXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRpblxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkaW5cbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpbjxBIGV4dGVuZHMgU3VwcG9ydGVkVmFsdWVzLCBWYWx1ZXMgZXh0ZW5kcyByZWFkb25seSBBW10+KFxuICBfOiBBLFxuICAuLi52OiBWYWx1ZXNcbik6IFdoZXJlSW48XCJpblwiLCBBLCBWYWx1ZXM+IHtcbiAgcmV0dXJuICQkaW4odilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJG5vdEluXG4gKiBAdHNwbHVzIGZsdWVudCBib29sZWFuICRub3RJblxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRub3RJblxuICovXG5leHBvcnQgZnVuY3Rpb24gJG5vdEluPEEgZXh0ZW5kcyBTdXBwb3J0ZWRWYWx1ZXMsIFZhbHVlcyBleHRlbmRzIHJlYWRvbmx5IEFbXT4oXG4gIF86IEEsXG4gIC4uLnY6IFZhbHVlc1xuKTogV2hlcmVJbjxcIm5vdC1pblwiLCBBLCBWYWx1ZXM+IHtcbiAgcmV0dXJuICQkbm90SW4odilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGlzXG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRpc1xuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkaXNcbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkaXNcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkaXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpczxBLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJlcVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGlzKHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgUmVhZG9ubHlBcnJheSAkaW5jbHVkZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpbmNsdWRlczxBIGV4dGVuZHMgcmVhZG9ubHkgYW55W10sIFYgZXh0ZW5kcyBBW251bWJlcl0+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiaW5jbHVkZXNcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRpbmNsdWRlcyh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IFJlYWRvbmx5QXJyYXkgJG5vdEluY2x1ZGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkbm90SW5jbHVkZXM8QSBleHRlbmRzIHJlYWRvbmx5IGFueVtdLCBWIGV4dGVuZHMgQVtudW1iZXJdPihcbiAgXzogQSxcbiAgdjogVlxuKTogV2hlcmVWYWx1ZTxcIm5vdC1pbmNsdWRlc1wiLCBBLCBWPiB7XG4gIHJldHVybiAkJG5vdEluY2x1ZGVzKHYpXG59XG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkaXNudFxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRpc250XG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGlzbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRpc250PEEsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcIm5vdC1lcVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGlzbnQodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGd0XG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRndFxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkZ3RcbiAqIEB0c3BsdXMgZmx1ZW50IG51bWJlciAkZ3RcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkZ3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRndDxBLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJndFwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGd0KHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRndGVcbiAqIEB0c3BsdXMgZmx1ZW50IERhdGUgJGd0ZVxuICogQHRzcGx1cyBmbHVlbnQgYm9vbGVhbiAkZ3RlXG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGd0ZVxuICogQHRzcGx1cyBmbHVlbnQgT2JqZWN0ICRndGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uICRndGU8QSwgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiZ3RlXCIsIEEsIFY+IHtcbiAgcmV0dXJuICQkZ3RlKHYpXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRsdFxuICogQHRzcGx1cyBmbHVlbnQgRGF0ZSAkbHRcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGx0XG4gKiBAdHNwbHVzIGZsdWVudCBudW1iZXIgJGx0XG4gKiBAdHNwbHVzIGZsdWVudCBPYmplY3QgJGx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkbHQ8QSwgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwibHRcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRsdCh2KVxufVxuXG4vKipcbiAqIEB0c3BsdXMgZmx1ZW50IHN0cmluZyAkbHRlXG4gKiBAdHNwbHVzIGZsdWVudCBEYXRlICRsdGVcbiAqIEB0c3BsdXMgZmx1ZW50IGJvb2xlYW4gJGx0ZVxuICogQHRzcGx1cyBmbHVlbnQgbnVtYmVyICRsdGVcbiAqIEB0c3BsdXMgZmx1ZW50IE9iamVjdCAkbHRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkbHRlPEEsIFYgZXh0ZW5kcyBBPihfOiBBLCB2OiBWKTogV2hlcmVWYWx1ZTxcImx0ZVwiLCBBLCBWPiB7XG4gIHJldHVybiAkJGx0ZSh2KVxufVxuXG5mdW5jdGlvbiAkaXNfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRpcyhfLCB2KVxufVxuXG5mdW5jdGlvbiAkaXNudF9fPFYgZXh0ZW5kcyBBLCBBPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGlzbnQoXywgdilcbn1cblxuZnVuY3Rpb24gJGluY2x1ZGVzX188ViBleHRlbmRzIEFbbnVtYmVyXSwgQSBleHRlbmRzIHJlYWRvbmx5IGFueVtdPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGluY2x1ZGVzKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRub3RJbmNsdWRlc19fPFYgZXh0ZW5kcyBBW251bWJlcl0sIEEgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRub3RJbmNsdWRlcyhfLCB2KVxufVxuXG5mdW5jdGlvbiAkbHRfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRsdChfLCB2KVxufVxuXG5mdW5jdGlvbiAkbHRlX188ViBleHRlbmRzIEEsIEE+KHY6IFYpIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkbHRlKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRndF9fPFYgZXh0ZW5kcyBBLCBBPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGd0KF8sIHYpXG59XG5cbmZ1bmN0aW9uICRndGVfXzxWIGV4dGVuZHMgQSwgQT4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRndGUoXywgdilcbn1cblxuZnVuY3Rpb24gJGluX188QSBleHRlbmRzIFN1cHBvcnRlZFZhbHVlcywgVmFsdWVzIGV4dGVuZHMgcmVhZG9ubHkgQVtdPihcbiAgLi4udjogVmFsdWVzXG4pIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkaW4oXywgLi4udilcbn1cblxuZnVuY3Rpb24gJG5vdEluX188QSBleHRlbmRzIFN1cHBvcnRlZFZhbHVlcywgVmFsdWVzIGV4dGVuZHMgcmVhZG9ubHkgQVtdPihcbiAgLi4udjogVmFsdWVzXG4pIHtcbiAgcmV0dXJuIChfOiBBKSA9PiAkbm90SW4oXywgLi4udilcbn1cblxuZnVuY3Rpb24gJHN0YXJ0c1dpdGhfXzxWIGV4dGVuZHMgQSwgQSBleHRlbmRzIHN0cmluZz4odjogVikge1xuICByZXR1cm4gKF86IEEpID0+ICRzdGFydHNXaXRoKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRlbmRzV2l0aF9fPFYgZXh0ZW5kcyBBLCBBIGV4dGVuZHMgc3RyaW5nPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGVuZHNXaXRoKF8sIHYpXG59XG5cbmZ1bmN0aW9uICRjb250YWluc19fPFYgZXh0ZW5kcyBBLCBBIGV4dGVuZHMgc3RyaW5nPih2OiBWKSB7XG4gIHJldHVybiAoXzogQSkgPT4gJGNvbnRhaW5zKF8sIHYpXG59XG5cbmV4cG9ydCBjb25zdCBGaWx0ZXJzID0ge1xuICAkaXM6ICRpc19fLFxuICAkaXNudDogJGlzbnRfXyxcbiAgJGluOiAkaW5fXyxcbiAgJG5vdEluOiAkbm90SW5fXyxcbiAgJGd0OiAkZ3RfXyxcbiAgJGd0ZTogJGd0ZV9fLFxuICAkbHQ6ICRsdF9fLFxuICAkbHRlOiAkbHRlX18sXG4gICRjb250YWluczogJGNvbnRhaW5zX18sXG4gICRlbmRzV2l0aDogJGVuZHNXaXRoX18sXG4gICRzdGFydHNXaXRoOiAkc3RhcnRzV2l0aF9fLFxuICAkaW5jbHVkZXM6ICRpbmNsdWRlc19fLFxuICAkbm90SW5jbHVkZXM6ICRub3RJbmNsdWRlc19fXG59XG5cbi8qKlxuICogQHRzcGx1cyBmbHVlbnQgc3RyaW5nICRzdGFydHNXaXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkc3RhcnRzV2l0aDxBIGV4dGVuZHMgc3RyaW5nLCBWIGV4dGVuZHMgQT4oXzogQSwgdjogVik6IFdoZXJlVmFsdWU8XCJzdGFydHMtd2l0aFwiLCBBLCBWPiB7XG4gIHJldHVybiAkJHN0YXJ0c1dpdGgodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGVuZHNXaXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkZW5kc1dpdGg8QSBleHRlbmRzIHN0cmluZywgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiZW5kcy13aXRoXCIsIEEsIFY+IHtcbiAgcmV0dXJuICQkZW5kc1dpdGgodilcbn1cblxuLyoqXG4gKiBAdHNwbHVzIGZsdWVudCBzdHJpbmcgJGNvbnRhaW5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiAkY29udGFpbnM8QSBleHRlbmRzIHN0cmluZywgViBleHRlbmRzIEE+KF86IEEsIHY6IFYpOiBXaGVyZVZhbHVlPFwiY29udGFpbnNcIiwgQSwgVj4ge1xuICByZXR1cm4gJCRjb250YWlucyh2KVxufVxuXG5mdW5jdGlvbiAkJGluPEwgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4odjogTCkge1xuICByZXR1cm4geyB0OiBcImluXCIgYXMgY29uc3QsIHYgfVxufVxuXG5mdW5jdGlvbiAkJG5vdEluPEwgZXh0ZW5kcyByZWFkb25seSBhbnlbXT4odjogTCkge1xuICByZXR1cm4geyB0OiBcIm5vdC1pblwiIGFzIGNvbnN0LCB2IH1cbn1cbmZ1bmN0aW9uICQkaXM8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcImVxXCIgYXMgY29uc3QsIHYgfVxufVxuZnVuY3Rpb24gJCRpc250PEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJub3QtZXFcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJGluY2x1ZGVzPEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJpbmNsdWRlc1wiIGFzIGNvbnN0LCB2IH1cbn1cbmZ1bmN0aW9uICQkbm90SW5jbHVkZXM8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcIm5vdC1pbmNsdWRlc1wiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRsdDxBPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwibHRcIiBhcyBjb25zdCwgdiB9XG59XG5cbmZ1bmN0aW9uICQkbHRlPEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJsdGVcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJGd0PEE+KHY6IEEpIHtcbiAgcmV0dXJuIHsgdDogXCJndFwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRndGU8QT4odjogQSkge1xuICByZXR1cm4geyB0OiBcImd0ZVwiIGFzIGNvbnN0LCB2IH1cbn1cblxuZnVuY3Rpb24gJCRjb250YWluczxBIGV4dGVuZHMgc3RyaW5nPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiY29udGFpbnNcIiBhcyBjb25zdCwgdiB9XG59XG5mdW5jdGlvbiAkJHN0YXJ0c1dpdGg8QSBleHRlbmRzIHN0cmluZz4odjogQSkge1xuICByZXR1cm4geyB0OiBcInN0YXJ0cy13aXRoXCIgYXMgY29uc3QsIHYgfVxufVxuZnVuY3Rpb24gJCRlbmRzV2l0aDxBIGV4dGVuZHMgc3RyaW5nPih2OiBBKSB7XG4gIHJldHVybiB7IHQ6IFwiZW5kcy13aXRoXCIgYXMgY29uc3QsIHYgfVxufVxuXG50eXBlIFZhbHVlVHlwZTxWPiA9IHtcbiAgdDogXCJpblwiIHwgXCJub3QtaW5cIlxuICB2OiByZWFkb25seSBWW11cbn0gfCB7IHQ6IFwiZXFcIiB8IFwibm90LWVxXCI7IHY6IFYgfVxuXG50eXBlIFRUeXBlPFQ+ID0gVCBleHRlbmRzIFZhbHVlVHlwZTxhbnk+ID8gVFtcInRcIl0gOiBuZXZlclxudHlwZSBWVHlwZTxUPiA9IFQgZXh0ZW5kcyBWYWx1ZVR5cGU8YW55PiA/IFRbXCJ2XCJdIDogbmV2ZXJcblxuZnVuY3Rpb24gZihwOiBzdHJpbmcsIGI6IGFueSkge1xuICBpZiAodHlwZW9mIGIgPT09IFwiZnVuY3Rpb25cIikgYiA9IGIodW5kZWZpbmVkKVxuICBjb25zdCBvYmogPSB0eXBlb2YgYiA9PT0gXCJvYmplY3RcIiAmJiBiICE9PSBudWxsXG4gIHJldHVybiBtYWtlRmlsdGVyKHAsIG9iaiA/IGIudiA6IGIsIG9iaiA/IGIudCA/PyBcImVxXCIgOiBcImVxXCIpXG59XG5cbmZ1bmN0aW9uIG1ha2VGaWx0ZXI8VCBleHRlbmRzIFwiaW5cIiB8IFwibm90LWluXCIgfCBcImVxXCIgfCBcIm5vdC1lcVwiPihwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnksIHQ6IFQpIHtcbiAgcmV0dXJuIHsga2V5OiBwYXRoLCB0LCB2YWx1ZSB9XG59XG5cbnR5cGUgRklMPFMsIEsgZXh0ZW5kcyBzdHJpbmcsIFQgZXh0ZW5kcyBcImluXCIgfCBcIm5vdC1pblwiIHwgXCJlcVwiIHwgXCJub3QtZXFcIiwgVj4gPSB7XG4gIGtleTogS1xuICB0OiBUXG4gIHZhbHVlOiBWXG4gIHJlYWRvbmx5IFM6IFNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VGaWx0ZXJzPFQgZXh0ZW5kcyBGaWVsZFZhbHVlcz4oKSB7XG4gIHR5cGUgUGF0aHMgPSBGaWVsZFBhdGg8VD5cbiAgdHlwZSBWYWx1ZTxURmllbGROYW1lIGV4dGVuZHMgUGF0aHM+ID0gRmllbGRQYXRoVmFsdWU8VCwgVEZpZWxkTmFtZT5cblxuICBmdW5jdGlvbiB0ZXN0PFxuICAgIFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocyxcbiAgICBBIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT4sXG4gICAgVmFsXG4gID4oXG4gICAgcGF0aDogVEZpZWxkTmFtZSxcbiAgICB2YWx1ZTogKHY6IEEpID0+IFZhbFxuICApOiBGSUw8VCwgc3RyaW5nLCBUVHlwZTxWYWw+LCBWVHlwZTxWYWw+PlxuICBmdW5jdGlvbiB0ZXN0PFxuICAgIFRGaWVsZE5hbWUgZXh0ZW5kcyBQYXRocyxcbiAgICBBIGV4dGVuZHMgVmFsdWU8VEZpZWxkTmFtZT5cbiAgPihcbiAgICBwYXRoOiBURmllbGROYW1lLFxuICAgIHZhbHVlOiBBXG4gICk6IEZJTDxULCBzdHJpbmcsIFwiZXFcIiwgQT5cbiAgZnVuY3Rpb24gdGVzdChwOiBzdHJpbmcsIHY6IGFueSkge1xuICAgIHJldHVybiBmKHAsIHYpIGFzIGFueVxuICB9XG4gIHJldHVybiB0ZXN0XG59XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBtYWtlRmlsdGVyPFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzPigpIHtcbi8vICAgY29uc3QgZiA9IG1ha2VGaWx0ZXJfPFRGaWVsZFZhbHVlcz4oKVxuLy8gICByZXR1cm4gZiBhcyBXaGVyZUZpbHRlckhlbHBlcjxURmllbGRWYWx1ZXM+XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgV2hlcmVGaWx0ZXJIZWxwZXI8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgbWFrZUZpbHRlcl88VEZpZWxkVmFsdWVzPj4ge31cblxuLy8gZnVuY3Rpb24gbWFrZUZpbHRlcl88VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXM+KCkge1xuLy8gICBmdW5jdGlvbiBlcTxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICBwYXRoOiBURmllbGROYW1lLFxuLy8gICAgIHZhbHVlOiBWXG4vLyAgICkge1xuLy8gICAgIHJldHVybiB7IGtleTogcGF0aCwgdmFsdWUsIHQ6IFwiZXFcIiBhcyBjb25zdCB9XG4vLyAgIH1cbi8vICAgY29uc3QgZiA9IE9iamVjdC5hc3NpZ24oZXEgc2F0aXNmaWVzICguLi5hcmdzOiBhbnlbXSkgPT4gV2hlcmUsIHtcbi8vICAgICBpbjxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4vLyAgICAgICB2YWx1ZTogcmVhZG9ubHkgVltdXG4vLyAgICAgKSB7XG4vLyAgICAgICByZXR1cm4geyBrZXk6IHBhdGgsIHZhbHVlLCB0OiBcImluXCIgYXMgY29uc3QgfVxuLy8gICAgIH0sXG4vLyAgICAgbm90SW48VEZpZWxkTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LCBWIGV4dGVuZHMgRmllbGRQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBURmllbGROYW1lPj4oXG4vLyAgICAgICBwYXRoOiBURmllbGROYW1lLFxuLy8gICAgICAgdmFsdWU6IHJlYWRvbmx5IFZbXVxuLy8gICAgICkge1xuLy8gICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJub3QtaW5cIiBhcyBjb25zdCB9XG4vLyAgICAgfSxcbi8vICAgICBlcSxcbi8vICAgICBub3RFcTxURmllbGROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sIFYgZXh0ZW5kcyBGaWVsZFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFRGaWVsZE5hbWU+Pihcbi8vICAgICAgIHBhdGg6IFRGaWVsZE5hbWUsXG4vLyAgICAgICB2YWx1ZTogVlxuLy8gICAgICkge1xuLy8gICAgICAgcmV0dXJuIHsga2V5OiBwYXRoLCB2YWx1ZSwgdDogXCJub3QtZXFcIiBhcyBjb25zdCB9XG4vLyAgICAgfVxuLy8gICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogYW55W10pID0+IFdoZXJlPilcbi8vICAgcmV0dXJuIGZcbi8vIH1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
3fdb756675565f3f5e5cdb6e2680f07a60ced261a3790df2cdfc23a21d160956
|
package/.cache/effect/134218688132dfbdea493cbe1f26e73449f2759121df35ddd5448346b59c9a8d.content
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
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";
|
|
4
|
-
import { InvalidStateError } from "../../errors.js";
|
|
5
|
-
import { checkPaths } from "./makeJsonSchema.js";
|
|
6
|
-
const path = { path: "/securities/:id/search/:id2", method: "get" };
|
|
7
|
-
const equalPaths = [
|
|
8
|
-
"/securities/:idt/search/:id2",
|
|
9
|
-
"/securities/:id/search/:id2t",
|
|
10
|
-
"/securities/:idt/search/:id2t"
|
|
11
|
-
]
|
|
12
|
-
.map((path) => ({ path, method: "get" }));
|
|
13
|
-
const differentPaths = [
|
|
14
|
-
"/securities/search/:id2",
|
|
15
|
-
"/securities/:id/search/",
|
|
16
|
-
"/securities/:id/search/:id2",
|
|
17
|
-
"/securities/:id/:id2/search/:id3"
|
|
18
|
-
]
|
|
19
|
-
.map((path) => ({ path, method: "get" }))
|
|
20
|
-
.concat([
|
|
21
|
-
"/securities/:idt/search/:id2"
|
|
22
|
-
]
|
|
23
|
-
.map((path) => ({ path, method: "post" })));
|
|
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/`]);
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZUpzb25TY2hlbWEudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFaEQsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBRW5FLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLDhCQUE4QjtJQUM5Qiw4QkFBOEI7SUFDOUIsK0JBQStCO0NBQ2hDO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFFM0MsTUFBTSxjQUFjLEdBR2Q7SUFDSix5QkFBeUI7SUFDekIseUJBQXlCO0lBQ3pCLDZCQUE2QjtJQUM3QixrQ0FBa0M7Q0FDbkM7S0FDRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDeEMsTUFBTSxDQUFDO0lBQ04sOEJBQThCO0NBQy9CO0tBQ0UsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUUvQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQ3ZCLE1BQU0sQ0FBQyxpQ0FBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFbkYsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUU7UUFDMUIsTUFBTSxDQUFDLHVDQUFNLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFpQixDQUFDLENBQUMsYUFBYSxDQUNoRSxxQkFBWSxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLENBQUE7S0FDRjtJQUVELE1BQU0sQ0FBQyx1Q0FBTSxVQUFVLENBQUMsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBaUIsQ0FBQztTQUN2RyxhQUFhLENBQ1oscUJBQVksSUFBSSxpQkFBaUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQ3hFLENBQUE7SUFFSCxNQUFNLENBQUMsdUNBQU0sVUFBVSxDQUFDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQWlCLENBQUM7U0FDL0csYUFBYSxDQUNaLHFCQUFZLElBQUksaUJBQWlCLENBQUMsK0NBQStDLENBQUMsQ0FBQyxDQUNwRixDQUFBO0FBQ0wsQ0FBQyxDQUFDLENBQUE7QUFFRixJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFO0lBQy9CLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQTtJQUN4QixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUV0RSxNQUFNLFlBQVksR0FBRyxxQkFBMEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ2hFLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbkIsQ0FBQyxDQUFDLENBQUE7SUFFRixpQ0FBTSw2QkFBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ1AsdURBQXFDLFlBQVksQ0FBQyxDQUFDLENBQ3RELENBQUE7SUFFYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsNENBQTRDLENBQUMsQ0FBQyxDQUFBO0FBQzNFLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFN0YXRlRXJyb3IgfSBmcm9tIFwiLi4vLi4vZXJyb3JzLmpzXCJcbmltcG9ydCB7IGNoZWNrUGF0aHMgfSBmcm9tIFwiLi9tYWtlSnNvblNjaGVtYS5qc1wiXG5cbmNvbnN0IHBhdGggPSB7IHBhdGg6IFwiL3NlY3VyaXRpZXMvOmlkL3NlYXJjaC86aWQyXCIsIG1ldGhvZDogXCJnZXRcIiB9XG5cbmNvbnN0IGVxdWFsUGF0aHMgPSBbXG4gIFwiL3NlY3VyaXRpZXMvOmlkdC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMnRcIixcbiAgXCIvc2VjdXJpdGllcy86aWR0L3NlYXJjaC86aWQydFwiXG5dXG4gIC5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuY29uc3QgZGlmZmVyZW50UGF0aHM6IHtcbiAgcGF0aDogc3RyaW5nXG4gIG1ldGhvZDogc3RyaW5nXG59W10gPSBbXG4gIFwiL3NlY3VyaXRpZXMvc2VhcmNoLzppZDJcIixcbiAgXCIvc2VjdXJpdGllcy86aWQvc2VhcmNoL1wiLFxuICBcIi9zZWN1cml0aWVzLzppZC9zZWFyY2gvOmlkMlwiLFxuICBcIi9zZWN1cml0aWVzLzppZC86aWQyL3NlYXJjaC86aWQzXCJcbl1cbiAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcImdldFwiIH0pKVxuICAuY29uY2F0KFtcbiAgICBcIi9zZWN1cml0aWVzLzppZHQvc2VhcmNoLzppZDJcIlxuICBdXG4gICAgLm1hcCgocGF0aCkgPT4gKHsgcGF0aCwgbWV0aG9kOiBcInBvc3RcIiB9KSkpXG5cbnRlc3QoXCJ3b3Jrc1wiLCBhc3luYyAoKSA9PiB7XG4gIGV4cGVjdChhd2FpdCAoY2hlY2tQYXRocyhkaWZmZXJlbnRQYXRocykpLnJ1blByb21pc2UpLnRvU3RyaWN0RXF1YWwoZGlmZmVyZW50UGF0aHMpXG5cbiAgZm9yIChjb25zdCBwIG9mIGVxdWFsUGF0aHMpIHtcbiAgICBleHBlY3QoYXdhaXQgY2hlY2tQYXRocyhbcGF0aCwgcF0pLnJ1blByb21pc2VFaXRoZXIpLnRvU3RyaWN0RXF1YWwoXG4gICAgICBFaXRoZXIubGVmdChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYER1cGxpY2F0ZSBtZXRob2QgJHtwLm1ldGhvZH0gZm9yIHBhdGggJHtwLnBhdGh9YCkpXG4gICAgKVxuICB9XG5cbiAgZXhwZWN0KGF3YWl0IGNoZWNrUGF0aHMoW1wiYS86cDEvYy86cDJcIiwgXCJhL2JcIl0ubWFwKChwYXRoKSA9PiAoeyBwYXRoLCBtZXRob2Q6IFwiZ2V0XCIgfSkpKS5ydW5Qcm9taXNlRWl0aGVyKVxuICAgIC50b1N0cmljdEVxdWFsKFxuICAgICAgRWl0aGVyLmxlZnQobmV3IEludmFsaWRTdGF0ZUVycm9yKGBQYXRoIC9hL2IvIGlzIHNoYWRvd2VkIGJ5IC9hLzpwMS9gKSlcbiAgICApXG5cbiAgZXhwZWN0KGF3YWl0IGNoZWNrUGF0aHMoW1wiYS86cDEvYy86cDJcIiwgXCJhLzpwMTExL2MvZFwiXS5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSkpLnJ1blByb21pc2VFaXRoZXIpXG4gICAgLnRvU3RyaWN0RXF1YWwoXG4gICAgICBFaXRoZXIubGVmdChuZXcgSW52YWxpZFN0YXRlRXJyb3IoYFBhdGggL2EvOnAxL2MvZC8gaXMgc2hhZG93ZWQgYnkgL2EvOnAxL2MvOnAyL2ApKVxuICAgIClcbn0pXG5cbnRlc3QoXCJsb2cgc2hhZG93aW5nXCIsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgYXJyOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IHBhdGhzID0gW1wiYS9iXCIsIFwiYS86cFwiXS5tYXAoKHBhdGgpID0+ICh7IHBhdGgsIG1ldGhvZDogXCJnZXRcIiB9KSlcblxuICBjb25zdCBDdXN0b21Mb2dnZXIgPSBMb2dnZXIubWFrZTxzdHJpbmcsIHZvaWQ+KChfLCBfXywgbWVzc2FnZSkgPT4ge1xuICAgIGFyci5wdXNoKG1lc3NhZ2UpXG4gIH0pXG5cbiAgYXdhaXQgY2hlY2tQYXRocyhwYXRocylcbiAgICAucHJvdmlkZUxheWVyKExvZ2dlci5yZXBsYWNlKExvZ2dlci5kZWZhdWx0TG9nZ2VyLCBDdXN0b21Mb2dnZXIpKVxuICAgIC5ydW5Qcm9taXNlXG5cbiAgZXhwZWN0KGFycikudG9TdHJpY3RFcXVhbChbYFBhdGggL2EvOnAvIGlzIHBhcnRpYWxseSBzaGFkb3dlZCBieSAvYS9iL2BdKVxufSlcbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
227326c96d8f8db11aa5dd8162cb906e55a27b00a9069640a822be51cb025b58
|
package/.cache/effect/14eb9da4ca6d22162888c7fdb7f39ab772d2a2dc6625db6031ecdb32ac89158f.content
DELETED
|
@@ -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
|
package/.cache/effect/1bfd92946b11da4292f2ed99dc0e322462b60559148f9524abc20e26f70779e1.content
DELETED
|
@@ -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
|