@effect-app/infra 2.61.7 → 2.62.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.
- package/CHANGELOG.md +12 -0
- package/dist/Model/filter/filterApi.d.ts +4 -0
- package/dist/Model/filter/filterApi.d.ts.map +1 -1
- package/dist/Model/query/dsl.d.ts +8 -1
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/dist/Model/query/dsl.js +4 -1
- package/dist/Model/query/new-kid-interpreter.d.ts +2 -2
- package/dist/Model/query/new-kid-interpreter.js +7 -7
- package/dist/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/Store/Cosmos/query.js +68 -18
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +4 -2
- package/dist/Store/codeFilter.d.ts.map +1 -1
- package/dist/Store/codeFilter.js +18 -12
- package/dist/adapters/SQL/Model.d.ts +7 -7
- package/package.json +1 -1
- package/src/Model/filter/filterApi.ts +5 -0
- package/src/Model/query/dsl.ts +13 -6
- package/src/Model/query/new-kid-interpreter.ts +6 -6
- package/src/Store/Cosmos/query.ts +83 -21
- package/src/Store/Cosmos.ts +3 -1
- package/src/Store/codeFilter.ts +21 -17
- package/test/dist/controller.test copy.d.ts +169 -0
- package/test/dist/controller.test copy.d.ts.map +1 -0
- package/test/dist/controller.test copy.js +46 -23
- package/test/dist/controller6.test.d.ts.map +1 -1
- package/test/dist/controller7.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/rawQuery.test.ts +79 -38
- package/test/dist/controller5.test.d.ts.map +0 -1
- package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
- package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
- package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
- package/vitest.config.ts.timestamp-1711744615239-dcf257a844e01.mjs +0 -37
|
@@ -54,11 +54,11 @@ const interpret = <
|
|
|
54
54
|
value: () => {
|
|
55
55
|
// data.filter.push(value)
|
|
56
56
|
},
|
|
57
|
-
where: ({ current, operation }) => {
|
|
57
|
+
where: ({ current, operation, relation }) => {
|
|
58
58
|
upd(interpret(current))
|
|
59
59
|
if (typeof operation === "function") {
|
|
60
60
|
data.filter.push(
|
|
61
|
-
{ t: "where-scope", result: interpret(operation(make())).filter }
|
|
61
|
+
{ t: "where-scope", result: interpret(operation(make())).filter, relation }
|
|
62
62
|
)
|
|
63
63
|
} else {
|
|
64
64
|
data.filter.push(
|
|
@@ -71,11 +71,11 @@ const interpret = <
|
|
|
71
71
|
)
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
and: ({ current, operation }) => {
|
|
74
|
+
and: ({ current, operation, relation }) => {
|
|
75
75
|
upd(interpret(current))
|
|
76
76
|
if (typeof operation === "function") {
|
|
77
77
|
data.filter.push(
|
|
78
|
-
{ t: "and-scope", result: interpret(operation(make())).filter }
|
|
78
|
+
{ t: "and-scope", result: interpret(operation(make())).filter, relation }
|
|
79
79
|
)
|
|
80
80
|
} else {
|
|
81
81
|
data.filter.push(
|
|
@@ -88,11 +88,11 @@ const interpret = <
|
|
|
88
88
|
)
|
|
89
89
|
}
|
|
90
90
|
},
|
|
91
|
-
or: ({ current, operation }) => {
|
|
91
|
+
or: ({ current, operation, relation }) => {
|
|
92
92
|
upd(interpret(current))
|
|
93
93
|
if (typeof operation === "function") {
|
|
94
94
|
data.filter.push(
|
|
95
|
-
{ t: "or-scope", result: interpret(operation(make())).filter }
|
|
95
|
+
{ t: "or-scope", result: interpret(operation(make())).filter, relation }
|
|
96
96
|
)
|
|
97
97
|
} else {
|
|
98
98
|
data.filter.push(
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { Array, Effect, type NonEmptyReadonlyArray } from "effect-app"
|
|
4
4
|
import { assertUnreachable } from "effect-app/utils"
|
|
5
5
|
import { InfraLogger } from "../../logger.js"
|
|
6
|
-
import type { FilterR, FilterResult } from "../../Model/filter/filterApi.js"
|
|
6
|
+
import type { FilterR, FilterResult, Ops } from "../../Model/filter/filterApi.js"
|
|
7
7
|
import { isRelationCheck } from "../codeFilter.js"
|
|
8
8
|
import type { SupportedValues } from "../service.js"
|
|
9
9
|
|
|
@@ -29,6 +29,12 @@ export function logQuery(q: {
|
|
|
29
29
|
}))
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
const dottedToAccess = (path: string) =>
|
|
33
|
+
path
|
|
34
|
+
.split(".")
|
|
35
|
+
.map((p, i) => i === 0 ? p : `["${p}"]`)
|
|
36
|
+
.join("")
|
|
37
|
+
|
|
32
38
|
export function buildWhereCosmosQuery3(
|
|
33
39
|
idKey: PropertyKey,
|
|
34
40
|
filter: readonly FilterResult[],
|
|
@@ -45,10 +51,10 @@ export function buildWhereCosmosQuery3(
|
|
|
45
51
|
x = { ...x, path: "id" }
|
|
46
52
|
}
|
|
47
53
|
let k = x.path.includes(".-1.")
|
|
48
|
-
? `${x.path.split(".-1.")[0]}
|
|
54
|
+
? dottedToAccess(`${x.path.split(".-1.")[0]}.${x.path.split(".-1.")[1]!}`)
|
|
49
55
|
: x.path.endsWith(".length")
|
|
50
|
-
? `ARRAY_LENGTH(f.${x.path.split(".length")[0]})`
|
|
51
|
-
: `f
|
|
56
|
+
? `ARRAY_LENGTH(${dottedToAccess(`f.${x.path.split(".length")[0]}`)})`
|
|
57
|
+
: dottedToAccess(`f.${x.path}`)
|
|
52
58
|
|
|
53
59
|
// would have to map id, but shouldnt allow id in defaultValues anyway..
|
|
54
60
|
k = x.path in defaultValues ? `(${k} ?? ${JSON.stringify(defaultValues[x.path])})` : k
|
|
@@ -119,7 +125,48 @@ export function buildWhereCosmosQuery3(
|
|
|
119
125
|
|
|
120
126
|
let i = 0
|
|
121
127
|
|
|
122
|
-
const
|
|
128
|
+
const flipOps = {
|
|
129
|
+
gt: "lt",
|
|
130
|
+
lt: "gt",
|
|
131
|
+
gte: "lte",
|
|
132
|
+
lte: "gte",
|
|
133
|
+
contains: "notContains",
|
|
134
|
+
notContains: "contains",
|
|
135
|
+
startsWith: "notStartsWith",
|
|
136
|
+
notStartsWith: "startsWith",
|
|
137
|
+
endsWith: "notEndsWith",
|
|
138
|
+
notEndsWith: "endsWith",
|
|
139
|
+
eq: "neq",
|
|
140
|
+
neq: "eq",
|
|
141
|
+
includes: "notIncludes",
|
|
142
|
+
notIncludes: "includes",
|
|
143
|
+
"includes-any": "notIncludes-any",
|
|
144
|
+
"notIncludes-any": "includes-any",
|
|
145
|
+
"includes-all": "notIncludes-all",
|
|
146
|
+
"notIncludes-all": "includes-all",
|
|
147
|
+
in: "notIn",
|
|
148
|
+
notIn: "in"
|
|
149
|
+
} satisfies Record<Ops, Ops>
|
|
150
|
+
|
|
151
|
+
const flippies = {
|
|
152
|
+
and: "or",
|
|
153
|
+
or: "and"
|
|
154
|
+
} satisfies Record<"and" | "or", "and" | "or">
|
|
155
|
+
|
|
156
|
+
const flip = (every: boolean) => (_: FilterResult): FilterResult =>
|
|
157
|
+
every
|
|
158
|
+
? _.t === "where" || _.t === "or" || _.t === "and"
|
|
159
|
+
? {
|
|
160
|
+
..._,
|
|
161
|
+
t: _.t === "where"
|
|
162
|
+
? _.t
|
|
163
|
+
: flippies[_.t],
|
|
164
|
+
op: flipOps[_.op]
|
|
165
|
+
}
|
|
166
|
+
: _
|
|
167
|
+
: _
|
|
168
|
+
|
|
169
|
+
const print = (state: readonly FilterResult[], values: any[], isRelation: string | null, every: boolean) => {
|
|
123
170
|
let s = ""
|
|
124
171
|
let l = 0
|
|
125
172
|
const printN = (n: number) => {
|
|
@@ -138,48 +185,62 @@ export function buildWhereCosmosQuery3(
|
|
|
138
185
|
break
|
|
139
186
|
case "or-scope": {
|
|
140
187
|
++l
|
|
188
|
+
if (!every) every = e.relation === "every"
|
|
141
189
|
const rel = isRelationCheck(e.result, isRelation)
|
|
142
190
|
if (rel) {
|
|
143
191
|
const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
|
|
144
192
|
s += isRelation
|
|
145
|
-
? ` OR (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
146
|
-
: ` OR (\n${printN(l + 1)}
|
|
147
|
-
|
|
193
|
+
? ` OR (\n${printN(l + 1)}${print(e.result, values, rel, every)}\n${printN(l)})`
|
|
194
|
+
: ` OR (\n${printN(l + 1)}${
|
|
195
|
+
every ? "NOT " : ""
|
|
196
|
+
}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
|
|
197
|
+
print(
|
|
198
|
+
e
|
|
199
|
+
.result
|
|
200
|
+
.map(flip(every)),
|
|
201
|
+
values,
|
|
202
|
+
rel,
|
|
203
|
+
every
|
|
204
|
+
)
|
|
148
205
|
}))`
|
|
149
206
|
} else {
|
|
150
|
-
s += ` OR (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
207
|
+
s += ` OR (\n${printN(l + 1)}${print(e.result, values, null, every)}\n${printN(l)})`
|
|
151
208
|
}
|
|
152
209
|
--l
|
|
153
210
|
break
|
|
154
211
|
}
|
|
155
212
|
case "and-scope": {
|
|
156
213
|
++l
|
|
214
|
+
if (!every) every = e.relation === "every"
|
|
157
215
|
const rel = isRelationCheck(e.result, isRelation)
|
|
158
216
|
if (rel) {
|
|
159
217
|
const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
|
|
160
218
|
s += isRelation
|
|
161
|
-
? ` AND (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
162
|
-
: ` AND (\n${printN(l + 1)}
|
|
163
|
-
|
|
219
|
+
? ` AND (\n${printN(l + 1)}${print(e.result, values, rel, every)}\n${printN(l)})`
|
|
220
|
+
: ` AND (\n${printN(l + 1)}${
|
|
221
|
+
every ? "NOT " : ""
|
|
222
|
+
}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
|
|
223
|
+
print(e.result.map(flip(every)), values, rel, every)
|
|
164
224
|
}))`
|
|
165
225
|
} else {
|
|
166
|
-
s += ` AND (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
226
|
+
s += ` AND (\n${printN(l + 1)}${print(e.result, values, null, every)}\n${printN(l)})`
|
|
167
227
|
}
|
|
168
228
|
--l
|
|
169
229
|
break
|
|
170
230
|
}
|
|
171
231
|
case "where-scope": {
|
|
172
232
|
// ;++l
|
|
233
|
+
if (!every) every = e.relation === "every"
|
|
173
234
|
const rel = isRelationCheck(e.result, isRelation)
|
|
174
235
|
if (rel) {
|
|
175
236
|
const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
|
|
176
237
|
s += isRelation
|
|
177
|
-
? `(\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
178
|
-
: `(\n${printN(l + 1)}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
|
|
179
|
-
print(e.result, values, rel)
|
|
238
|
+
? `(\n${printN(l + 1)}${print(e.result, values, rel, every)}\n${printN(l)})`
|
|
239
|
+
: `(\n${printN(l + 1)}${every ? "NOT " : ""}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
|
|
240
|
+
print(e.result.map(flip(every)), values, rel, every)
|
|
180
241
|
}))`
|
|
181
242
|
} else {
|
|
182
|
-
s += `(\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
243
|
+
s += `(\n${printN(l + 1)}${print(e.result, values, null, every)}\n${printN(l)})`
|
|
183
244
|
}
|
|
184
245
|
// ;--l
|
|
185
246
|
break
|
|
@@ -223,8 +284,9 @@ export function buildWhereCosmosQuery3(
|
|
|
223
284
|
select
|
|
224
285
|
.map((s) =>
|
|
225
286
|
typeof s === "string"
|
|
226
|
-
? s === idKey ? "f.id" : `f
|
|
227
|
-
: `ARRAY (SELECT ${s.subKeys.map((_) => `t
|
|
287
|
+
? dottedToAccess(s === idKey ? "f.id" : `f.${s}`) // x["y"} vs x.y, helps with reserved keywords like "value"
|
|
288
|
+
: `ARRAY (SELECT ${s.subKeys.map((_) => dottedToAccess(`t.${_}`)).join(",")}
|
|
289
|
+
FROM t in ${dottedToAccess(`f.${s.key}`)}) AS ${s.key}`
|
|
228
290
|
)
|
|
229
291
|
.join(", ")
|
|
230
292
|
}`
|
|
@@ -232,8 +294,8 @@ export function buildWhereCosmosQuery3(
|
|
|
232
294
|
}
|
|
233
295
|
FROM ${name} f
|
|
234
296
|
|
|
235
|
-
WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map((_) => _.value))})` : ""}
|
|
236
|
-
${order ? `ORDER BY ${order.map((_) => `f.${_.key} ${_.direction}`).join(", ")}` : ""}
|
|
297
|
+
WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map((_) => _.value), null, false)})` : ""}
|
|
298
|
+
${order ? `ORDER BY ${order.map((_) => `${dottedToAccess(`f.${_.key}`)} ${_.direction}`).join(", ")}` : ""}
|
|
237
299
|
${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
|
|
238
300
|
parameters: [
|
|
239
301
|
{ name: "@id", value: importedMarkerId },
|
package/src/Store/Cosmos.ts
CHANGED
|
@@ -54,6 +54,8 @@ function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
54
54
|
const container = db.container(containerId)
|
|
55
55
|
const bulk = container.items.bulk.bind(container.items)
|
|
56
56
|
const execBatch = container.items.batch.bind(container.items)
|
|
57
|
+
// TODO: move the marker to a separate container and get rid of the checks on every query
|
|
58
|
+
// then need to clean up the actual data.. perhaps first do with a config toggle to prescribe to it.
|
|
57
59
|
const importedMarkerId = containerId
|
|
58
60
|
|
|
59
61
|
const bulkSet = (items: NonEmptyReadonlyArray<PM>) =>
|
|
@@ -288,7 +290,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
288
290
|
.sync(() =>
|
|
289
291
|
buildWhereCosmosQuery3(
|
|
290
292
|
idKey,
|
|
291
|
-
filter ? [{ t: "where-scope", result: filter }] : [],
|
|
293
|
+
filter ? [{ t: "where-scope", result: filter, relation: "some" }] : [],
|
|
292
294
|
name,
|
|
293
295
|
importedMarkerId,
|
|
294
296
|
defaultValues,
|
package/src/Store/codeFilter.ts
CHANGED
|
@@ -93,7 +93,8 @@ const codeFilter3__ = <E>(
|
|
|
93
93
|
state: readonly FilterResult[],
|
|
94
94
|
sut: E,
|
|
95
95
|
statements: any[],
|
|
96
|
-
isRelation: string | null
|
|
96
|
+
isRelation: string | null,
|
|
97
|
+
every: boolean
|
|
97
98
|
): string => {
|
|
98
99
|
let s = ""
|
|
99
100
|
let l = 0
|
|
@@ -126,32 +127,34 @@ const codeFilter3__ = <E>(
|
|
|
126
127
|
break
|
|
127
128
|
case "or-scope": {
|
|
128
129
|
++l
|
|
130
|
+
if (!every) every = e.relation === "every"
|
|
129
131
|
const rel = isRelationCheck(e.result, isRelation)
|
|
130
132
|
if (rel) {
|
|
131
133
|
const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
|
|
132
134
|
s += isRelation
|
|
133
|
-
? ` || (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, rel)}\n${printN(l)})`
|
|
134
|
-
: ` || (\n${printN(l + 1)}sut.${rel}
|
|
135
|
-
|
|
136
|
-
})`
|
|
135
|
+
? ` || (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, rel, every)}\n${printN(l)})`
|
|
136
|
+
: ` || (\n${printN(l + 1)}sut.${rel}.${every ? "every" : "some"}(el => ${
|
|
137
|
+
codeFilter3__(e.result, sut, statements, rel, every)
|
|
138
|
+
})\n${printN(l)})`
|
|
137
139
|
} else {
|
|
138
|
-
s += ` || (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements)}\n${printN(l)})`
|
|
140
|
+
s += ` || (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, null, every)}\n${printN(l)})`
|
|
139
141
|
}
|
|
140
142
|
--l
|
|
141
143
|
break
|
|
142
144
|
}
|
|
143
145
|
case "and-scope": {
|
|
144
146
|
++l
|
|
147
|
+
if (!every) every = e.relation === "every"
|
|
145
148
|
const rel = isRelationCheck(e.result, isRelation)
|
|
146
149
|
if (rel) {
|
|
147
150
|
const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
|
|
148
151
|
s += isRelation
|
|
149
|
-
? ` && (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, rel)}\n${printN(l)})`
|
|
150
|
-
: ` && (\n${printN(l + 1)}sut.${rel}
|
|
151
|
-
|
|
152
|
-
})`
|
|
152
|
+
? ` && (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, rel, every)}\n${printN(l)})`
|
|
153
|
+
: ` && (\n${printN(l + 1)}sut.${rel}.${every ? "every" : "some"}(el => ${
|
|
154
|
+
codeFilter3__(e.result, sut, statements, rel, every)
|
|
155
|
+
})\n${printN(l)})`
|
|
153
156
|
} else {
|
|
154
|
-
s += ` && (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements)}\n${printN(l)})`
|
|
157
|
+
s += ` && (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, null, every)}\n${printN(l)})`
|
|
155
158
|
}
|
|
156
159
|
--l
|
|
157
160
|
|
|
@@ -159,16 +162,17 @@ const codeFilter3__ = <E>(
|
|
|
159
162
|
}
|
|
160
163
|
case "where-scope": {
|
|
161
164
|
// ;++l
|
|
165
|
+
if (!every) every = e.relation === "every"
|
|
162
166
|
const rel = isRelationCheck(e.result, isRelation)
|
|
163
167
|
if (rel) {
|
|
164
168
|
const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
|
|
165
169
|
s += isRelation
|
|
166
|
-
? `(\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, rel)}\n${printN(l)})`
|
|
167
|
-
: `(\n${printN(l + 1)}sut.${rel}
|
|
168
|
-
|
|
169
|
-
})`
|
|
170
|
+
? `(\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, rel, every)}\n${printN(l)})`
|
|
171
|
+
: `(\n${printN(l + 1)}sut.${rel}.${every ? "every" : "some"}(el => ${
|
|
172
|
+
codeFilter3__(e.result, sut, statements, rel, every)
|
|
173
|
+
})\n${printN(l)})`
|
|
170
174
|
} else {
|
|
171
|
-
s += `(\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements)}\n${printN(l)})`
|
|
175
|
+
s += `(\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements, null, every)}\n${printN(l)})`
|
|
172
176
|
}
|
|
173
177
|
// ;--l
|
|
174
178
|
break
|
|
@@ -181,7 +185,7 @@ const codeFilter3__ = <E>(
|
|
|
181
185
|
export const codeFilter3_ = <E>(state: readonly FilterResult[], sut: E): boolean => {
|
|
182
186
|
const statements: any[] = [] // must be defined here to be used by eval.
|
|
183
187
|
// always put everything inside a root scope.
|
|
184
|
-
const s = codeFilter3__([{ t: "where-scope", result: state }], sut, statements)
|
|
188
|
+
const s = codeFilter3__([{ t: "where-scope", result: state, relation: "some" }], sut, statements, null, false)
|
|
185
189
|
return eval(s)
|
|
186
190
|
}
|
|
187
191
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { RequestContext } from "@effect-app/infra/RequestContext";
|
|
2
|
+
import { Rpc } from "@effect/rpc";
|
|
3
|
+
import { Effect, Layer, S } from "effect-app";
|
|
4
|
+
import { type RPCContextMap, UnauthorizedError } from "effect-app/client";
|
|
5
|
+
import { HttpServerRequest } from "effect-app/http";
|
|
6
|
+
export interface CTX {
|
|
7
|
+
context: RequestContext;
|
|
8
|
+
}
|
|
9
|
+
export type CTXMap = {
|
|
10
|
+
requireRoles: RPCContextMap.Custom<"", never, typeof UnauthorizedError, Array<string>>;
|
|
11
|
+
};
|
|
12
|
+
export declare const matchAll: <T extends {
|
|
13
|
+
[key: string]: {
|
|
14
|
+
Router: {
|
|
15
|
+
router: Effect<import("@effect/platform/HttpRouter").HttpRouter<any, any>, any, any>;
|
|
16
|
+
};
|
|
17
|
+
routes: Layer.Layer<any, any, any>;
|
|
18
|
+
moduleName: string;
|
|
19
|
+
};
|
|
20
|
+
}, A, E, R>(handlers: T, requestLayer: Layer.Layer<A, E, R>) => {
|
|
21
|
+
layer: Layer.Layer<never, Layer.Layer.Error<T[keyof T]["routes"]>, Layer.Layer.Context<T[keyof T]["routes"]>>;
|
|
22
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<"RootRouter", "RootRouter", Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_1 ? T_1 extends T_1 & Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_1 extends import("@effect/platform/HttpRouter").HttpRouter<infer E_1, any> ? E_1 : never : never : never, R | Exclude<Effect.Effect.Success<T[keyof T]["Router"]["router"]> extends infer T_2 ? T_2 extends T_2 & Effect.Effect.Success<T[keyof T]["Router"]["router"]> ? T_2 extends import("@effect/platform/HttpRouter").HttpRouter<any, infer R_1> ? R_1 : never : never : never, A>>;
|
|
23
|
+
}, matchFor: <const ModuleName extends string, const Rsc extends Record<string, any>>(rsc: Rsc & {
|
|
24
|
+
meta: {
|
|
25
|
+
moduleName: ModuleName;
|
|
26
|
+
};
|
|
27
|
+
}) => {
|
|
28
|
+
<const Make extends {
|
|
29
|
+
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
30
|
+
effect: Effect<{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K_1], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
31
|
+
strict?: boolean;
|
|
32
|
+
readonly ಠ_ಠ: never;
|
|
33
|
+
}>(make: Make): {
|
|
34
|
+
moduleName: ModuleName;
|
|
35
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_2 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_2], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_2]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
36
|
+
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
37
|
+
};
|
|
38
|
+
<const Make extends {
|
|
39
|
+
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
40
|
+
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
41
|
+
strict?: boolean;
|
|
42
|
+
readonly ಠ_ಠ: never;
|
|
43
|
+
}>(make: Make): {
|
|
44
|
+
moduleName: ModuleName;
|
|
45
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
46
|
+
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
47
|
+
};
|
|
48
|
+
<const Make extends {
|
|
49
|
+
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
50
|
+
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["strict"] extends false ? any : Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
51
|
+
strict?: boolean;
|
|
52
|
+
readonly ಠ_ಠ: never;
|
|
53
|
+
}>(make: Make): {
|
|
54
|
+
moduleName: ModuleName;
|
|
55
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
56
|
+
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
57
|
+
};
|
|
58
|
+
<const Make extends {
|
|
59
|
+
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
60
|
+
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
61
|
+
strict?: boolean;
|
|
62
|
+
readonly ಠ_ಠ: never;
|
|
63
|
+
}>(make: Make): {
|
|
64
|
+
moduleName: ModuleName;
|
|
65
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
66
|
+
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
67
|
+
};
|
|
68
|
+
<const Make extends {
|
|
69
|
+
dependencies: import("effect-app").Array<Layer.Layer.Any>;
|
|
70
|
+
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, Make["dependencies"] extends infer T ? T extends Make["dependencies"] ? T extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k in keyof T]: Layer.Layer.Success<T[k]>; }[number] : never : never : never>;
|
|
71
|
+
strict?: boolean;
|
|
72
|
+
}>(make: Make): {
|
|
73
|
+
moduleName: ModuleName;
|
|
74
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, Exclude<[{ [K_1 in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: Rpc.Rpc<Rsc[K_1], import("@effect-app/infra/api/routing")._R<ReturnType<import("@effect-app/infra/api/routing").MakeHandlers<Make, { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }>[K_1]["handler"]>>>; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]] extends [Rpc.Rpc<any, infer R>] ? R : never, import("@effect/platform/HttpRouter").HttpRouter.Provided>>;
|
|
75
|
+
routes: Layer.Layer<import("@effect-app/infra/api/routing").RouterShape<Rsc>, import("@effect-app/infra/api/routing").MakeErrors<Make> | (Make["dependencies"] extends infer T_1 ? T_1 extends Make["dependencies"] ? T_1 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_1 in keyof T_1]: Layer.Layer.Error<T_1[k_1]>; }[number] : never : never : never), (Make["dependencies"] extends infer T_2 ? T_2 extends Make["dependencies"] ? T_2 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_2 in keyof T_2]: Layer.Layer.Context<T_2[k_2]>; }[number] : never : never : never) | Exclude<import("@effect-app/infra/api/routing").MakeContext<Make>, Make["dependencies"] extends infer T_3 ? T_3 extends Make["dependencies"] ? T_3 extends readonly [Layer.Layer.Any, ...Layer.Layer.Any[]] ? { [k_3 in keyof T_3]: Layer.Layer.Success<T_3[k_3]>; }[number] : never : never : never>>;
|
|
76
|
+
};
|
|
77
|
+
<const Make extends {
|
|
78
|
+
dependencies: [...Make["dependencies"], ...Exclude<Effect.Effect.Context<Make["effect"]>, import("effect/Types").Contravariant.Type<import("@effect-app/infra/api/routing").MakeDeps<Make>[typeof Layer.LayerTypeId]["_ROut"]>> extends never ? [] : [Layer.Layer<Exclude<Effect.Effect.Context<Make["effect"]>, import("effect/Types").Contravariant.Type<import("@effect-app/infra/api/routing").MakeDeps<Make>[typeof Layer.LayerTypeId]["_ROut"]>>, never, never>]];
|
|
79
|
+
effect: Effect<{ [K in keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }]: import("@effect-app/infra/api/routing").Handler<Rsc[K], any, any>; }, any, any>;
|
|
80
|
+
strict?: boolean;
|
|
81
|
+
}>(make: Make): {
|
|
82
|
+
moduleName: ModuleName;
|
|
83
|
+
Router: import("@effect/platform/HttpRouter").HttpRouter.TagClass<import("@effect-app/infra/api/routing").RouterShape<Rsc>, `${ModuleName}Router`, never, never>;
|
|
84
|
+
routes: any;
|
|
85
|
+
};
|
|
86
|
+
} & import("@effect-app/infra/api/routing").RouteMatcher<CTXMap, Rsc, HttpServerRequest.HttpServerRequest> & {
|
|
87
|
+
router: import("@effect-app/infra/api/routing").AddAction<{ [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }[keyof { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }], {}>;
|
|
88
|
+
router2: { [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; } extends infer T extends Record<string, import("@effect-app/infra/api/routing").AnyRequestModule> ? { [K in keyof T]: import("@effect-app/infra/api/routing").Method<{ [K in keyof Rsc as Rsc[K] extends import("@effect-app/infra/api/routing").AnyRequestModule ? K : never]: Rsc[K]; }, K, "d", {}>; } : never;
|
|
89
|
+
};
|
|
90
|
+
export type RequestConfig = {
|
|
91
|
+
/** Disable authentication requirement */
|
|
92
|
+
allowAnonymous?: true;
|
|
93
|
+
/** Control the roles that are required to access the resource */
|
|
94
|
+
allowRoles?: readonly string[];
|
|
95
|
+
};
|
|
96
|
+
export declare const Req: <Self>() => {
|
|
97
|
+
<Tag extends string, Payload extends S.Struct.Fields, C extends {
|
|
98
|
+
success: S.Schema.Any | S.Struct.Fields;
|
|
99
|
+
failure: S.Schema.Any | S.Struct.Fields;
|
|
100
|
+
}>(tag: Tag, fields: Payload, config: RequestConfig & C): S.TaggedRequestClass<Self, Tag, {
|
|
101
|
+
readonly _tag: S.tag<Tag>;
|
|
102
|
+
} & Payload, (RequestConfig & C)["success"] extends infer T ? T extends (RequestConfig & C)["success"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, ([((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>] extends [never] ? [] : [((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>]) extends infer T_2 ? T_2 extends ([((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>] extends [never] ? [] : [((RequestConfig & C)["failure"] extends infer T_1 ? T_1 extends (RequestConfig & C)["failure"] ? T_1 extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T_1, []> : T_1 extends S.Schema.Any ? T_1 : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C>]) ? T_2 extends readonly S.Schema.All[] ? S.Union<T_2> : typeof S.Never : never : never> & {
|
|
103
|
+
config: Omit<C, "success" | "failure">;
|
|
104
|
+
};
|
|
105
|
+
<Tag extends string, Payload_1 extends S.Struct.Fields, C_1 extends {
|
|
106
|
+
success: S.Schema.Any | S.Struct.Fields;
|
|
107
|
+
}>(tag: Tag, fields: Payload_1, config: RequestConfig & C_1): S.TaggedRequestClass<Self, Tag, {
|
|
108
|
+
readonly _tag: S.tag<Tag>;
|
|
109
|
+
} & Payload_1, (RequestConfig & C_1)["success"] extends infer T ? T extends (RequestConfig & C_1)["success"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never, ([import("effect-app/client").GetEffectError<CTXMap, C_1>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_1>]) extends infer T_1 ? T_1 extends ([import("effect-app/client").GetEffectError<CTXMap, C_1>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_1>]) ? T_1 extends readonly S.Schema.All[] ? S.Union<T_1> : typeof S.Never : never : never> & {
|
|
110
|
+
config: Omit<C_1, "success" | "failure">;
|
|
111
|
+
};
|
|
112
|
+
<Tag extends string, Payload_2 extends S.Struct.Fields, C_2 extends {
|
|
113
|
+
failure: S.Schema.Any | S.Struct.Fields;
|
|
114
|
+
}>(tag: Tag, fields: Payload_2, config: RequestConfig & C_2): S.TaggedRequestClass<Self, Tag, {
|
|
115
|
+
readonly _tag: S.tag<Tag>;
|
|
116
|
+
} & Payload_2, typeof S.Void, ([((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>] extends [never] ? [] : [((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>]) extends infer T_1 ? T_1 extends ([((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>] extends [never] ? [] : [((RequestConfig & C_2)["failure"] extends infer T ? T extends (RequestConfig & C_2)["failure"] ? T extends import("effect/Schema").Struct.Fields ? S.TypeLiteral<T, []> : T extends S.Schema.Any ? T : never : never : never) | import("effect-app/client").GetEffectError<CTXMap, C_2>]) ? T_1 extends readonly S.Schema.All[] ? S.Union<T_1> : typeof S.Never : never : never> & {
|
|
117
|
+
config: Omit<C_2, "success" | "failure">;
|
|
118
|
+
};
|
|
119
|
+
<Tag extends string, Payload_3 extends S.Struct.Fields, C_3 extends Record<string, any>>(tag: Tag, fields: Payload_3, config: C_3 & RequestConfig): S.TaggedRequestClass<Self, Tag, {
|
|
120
|
+
readonly _tag: S.tag<Tag>;
|
|
121
|
+
} & Payload_3, typeof S.Void, ([import("effect-app/client").GetEffectError<CTXMap, C_3>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_3>]) extends infer T ? T extends ([import("effect-app/client").GetEffectError<CTXMap, C_3>] extends [never] ? [] : [import("effect-app/client").GetEffectError<CTXMap, C_3>]) ? T extends readonly S.Schema.All[] ? S.Union<T> : typeof S.Never : never : never> & {
|
|
122
|
+
config: Omit<C_3, "success" | "failure">;
|
|
123
|
+
};
|
|
124
|
+
<Tag extends string, Payload_4 extends S.Struct.Fields>(tag: Tag, fields: Payload_4): S.TaggedRequestClass<Self, Tag, {
|
|
125
|
+
readonly _tag: S.tag<Tag>;
|
|
126
|
+
} & Payload_4, typeof S.Void, never>;
|
|
127
|
+
};
|
|
128
|
+
declare const GetSomething_base: S.TaggedRequestClass<GetSomething, "GetSomething", {
|
|
129
|
+
readonly _tag: S.tag<"GetSomething">;
|
|
130
|
+
} & {
|
|
131
|
+
id: typeof S.String;
|
|
132
|
+
}, typeof S.Void, S.Union<[typeof UnauthorizedError]>> & {
|
|
133
|
+
config: Omit<{
|
|
134
|
+
success: typeof S.Void;
|
|
135
|
+
}, "success" | "failure">;
|
|
136
|
+
};
|
|
137
|
+
export declare class GetSomething extends GetSomething_base {
|
|
138
|
+
}
|
|
139
|
+
declare const GetSomethingElse_base: S.TaggedRequestClass<GetSomethingElse, "GetSomethingElse", {
|
|
140
|
+
readonly _tag: S.tag<"GetSomethingElse">;
|
|
141
|
+
} & {
|
|
142
|
+
id: typeof S.String;
|
|
143
|
+
}, typeof S.String, S.Union<[typeof UnauthorizedError]>> & {
|
|
144
|
+
config: Omit<{
|
|
145
|
+
success: typeof S.String;
|
|
146
|
+
}, "success" | "failure">;
|
|
147
|
+
};
|
|
148
|
+
export declare class GetSomethingElse extends GetSomethingElse_base {
|
|
149
|
+
}
|
|
150
|
+
declare const SomethingService_base: import("effect/Effect").Service.Class<SomethingService, "SomethingService", {
|
|
151
|
+
readonly dependencies: readonly [];
|
|
152
|
+
readonly effect: Effect.Effect<{}, never, never>;
|
|
153
|
+
}>;
|
|
154
|
+
export declare class SomethingService extends SomethingService_base {
|
|
155
|
+
}
|
|
156
|
+
declare const SomethingRepo_base: import("effect/Effect").Service.Class<SomethingRepo, "SomethingRepo", {
|
|
157
|
+
readonly dependencies: readonly [Layer.Layer<SomethingService, never, never>];
|
|
158
|
+
readonly effect: Effect.Effect<{}, never, SomethingService>;
|
|
159
|
+
}>;
|
|
160
|
+
export declare class SomethingRepo extends SomethingRepo_base {
|
|
161
|
+
}
|
|
162
|
+
declare const SomethingService2_base: import("effect/Effect").Service.Class<SomethingService2, "SomethingService2", {
|
|
163
|
+
readonly dependencies: readonly [];
|
|
164
|
+
readonly effect: Effect.Effect<{}, never, never>;
|
|
165
|
+
}>;
|
|
166
|
+
export declare class SomethingService2 extends SomethingService2_base {
|
|
167
|
+
}
|
|
168
|
+
export {};
|
|
169
|
+
//# sourceMappingURL=controller.test%20copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.test copy.d.ts","sourceRoot":"","sources":["../controller.test copy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAW,MAAM,EAAY,KAAK,EAAE,CAAC,EAAY,MAAM,YAAY,CAAA;AAC1E,OAAO,EAAwC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC/G,OAAO,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAOhE,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,MAAM,GAAG;IAGnB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AAmGD,eAAO,MAAQ,QAAQ;;;;;sBA2DnB,KACH;;;;;;GA5DwB,QAAQ;;;;;;uDAmG8B,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAAkyD,KAAK,CAAC,GAAG;;;;;;;;;;uDAA6vD,KAAK,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;CAnG7oO,CAAA;AAElE,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;2CAxEM,MAAM,CAAC,MAAM;mBAgC1C,MA9BA,CAAC,GAAG,KA8BJ,MA5BD,CA4BC,MA5BM;mBA4BN,MA3BC,CAAE,GAAE,KAAM,MAAK,CAAC,MAAM;;;;;;6CASqB,MAAM,CAAC,MAAM;mBACtD,MAAK,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM;;;;;;6CAUpB,MAAM,CAAC,MAAM;mBACG,MAAM,CAAC,GAAG,KAAK,MAAM,CAAE,MAAK;;;;;;6CAclD,MAAG,CAAC,MAAM;;;;;6CAMwC,MAAM,CAAC,MACrE;;;CA4BA,CAAA;;;;;;;;;;AAEF,qBAAa,YAAa,SAAQ,iBAEX;CAAG;;;;;;;;;;AAE1B,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;;AAI5B,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG"}
|