@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.
Files changed (34) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/Model/filter/filterApi.d.ts +4 -0
  3. package/dist/Model/filter/filterApi.d.ts.map +1 -1
  4. package/dist/Model/query/dsl.d.ts +8 -1
  5. package/dist/Model/query/dsl.d.ts.map +1 -1
  6. package/dist/Model/query/dsl.js +4 -1
  7. package/dist/Model/query/new-kid-interpreter.d.ts +2 -2
  8. package/dist/Model/query/new-kid-interpreter.js +7 -7
  9. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  10. package/dist/Store/Cosmos/query.js +68 -18
  11. package/dist/Store/Cosmos.d.ts.map +1 -1
  12. package/dist/Store/Cosmos.js +4 -2
  13. package/dist/Store/codeFilter.d.ts.map +1 -1
  14. package/dist/Store/codeFilter.js +18 -12
  15. package/dist/adapters/SQL/Model.d.ts +7 -7
  16. package/package.json +1 -1
  17. package/src/Model/filter/filterApi.ts +5 -0
  18. package/src/Model/query/dsl.ts +13 -6
  19. package/src/Model/query/new-kid-interpreter.ts +6 -6
  20. package/src/Store/Cosmos/query.ts +83 -21
  21. package/src/Store/Cosmos.ts +3 -1
  22. package/src/Store/codeFilter.ts +21 -17
  23. package/test/dist/controller.test copy.d.ts +169 -0
  24. package/test/dist/controller.test copy.d.ts.map +1 -0
  25. package/test/dist/controller.test copy.js +46 -23
  26. package/test/dist/controller6.test.d.ts.map +1 -1
  27. package/test/dist/controller7.test.d.ts.map +1 -1
  28. package/test/dist/rawQuery.test.d.ts.map +1 -1
  29. package/test/rawQuery.test.ts +79 -38
  30. package/test/dist/controller5.test.d.ts.map +0 -1
  31. package/vitest.config.ts.timestamp-1711656440838-19c636fe320df.mjs +0 -0
  32. package/vitest.config.ts.timestamp-1711724061890-6ecedb0a07fdd.mjs +0 -0
  33. package/vitest.config.ts.timestamp-1711743489537-da8d9e5f66c9f.mjs +0 -0
  34. 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]}["${x.path.split(".-1.")[1]!}"]`
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["${x.path}"]`
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 print = (state: readonly FilterResult[], values: any[], isRelation: string | null = null) => {
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)}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
147
- print(e.result, values, rel)
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)}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
163
- print(e.result, values, rel)
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["${s}"]` // x["y"} vs x.y, helps with reserved keywords like "value"
227
- : `ARRAY (SELECT ${s.subKeys.map((_) => `t["${_}"]`).join(",")} FROM t in f.${s.key}) AS ${s.key}`
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 },
@@ -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,
@@ -93,7 +93,8 @@ const codeFilter3__ = <E>(
93
93
  state: readonly FilterResult[],
94
94
  sut: E,
95
95
  statements: any[],
96
- isRelation: string | null = 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}.some(el => ${codeFilter3__(e.result, sut, statements, rel)})\n${
135
- printN(l)
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}.some(el => ${codeFilter3__(e.result, sut, statements, rel)})\n${
151
- printN(l)
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}.some(el => ${codeFilter3__(e.result, sut, statements, rel)})\n${
168
- printN(l)
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"}