@effect-app/infra 4.0.0-beta.25 → 4.0.0-beta.250

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 (472) hide show
  1. package/CHANGELOG.md +1892 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +30 -11
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +35 -14
  6. package/dist/ContextProvider.d.ts +34 -0
  7. package/dist/ContextProvider.d.ts.map +1 -0
  8. package/dist/ContextProvider.js +40 -0
  9. package/dist/Emailer/Sendgrid.d.ts +111 -147
  10. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  11. package/dist/Emailer/Sendgrid.js +24 -19
  12. package/dist/Emailer/fake.d.ts +2 -2
  13. package/dist/Emailer/fake.d.ts.map +1 -1
  14. package/dist/Emailer/fake.js +4 -4
  15. package/dist/MainFiberSet.d.ts +12 -9
  16. package/dist/MainFiberSet.d.ts.map +1 -1
  17. package/dist/MainFiberSet.js +10 -6
  18. package/dist/QueueMaker/SQLQueue.d.ts +8 -9
  19. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  20. package/dist/QueueMaker/SQLQueue.js +138 -120
  21. package/dist/QueueMaker/errors.d.ts +5 -3
  22. package/dist/QueueMaker/errors.d.ts.map +1 -1
  23. package/dist/QueueMaker/errors.js +4 -2
  24. package/dist/QueueMaker/memQueue.d.ts +10 -6
  25. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  26. package/dist/QueueMaker/memQueue.js +84 -68
  27. package/dist/QueueMaker/sbqueue.d.ts +9 -5
  28. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  29. package/dist/QueueMaker/sbqueue.js +60 -58
  30. package/dist/RequestFiberSet.d.ts +10 -7
  31. package/dist/RequestFiberSet.d.ts.map +1 -1
  32. package/dist/RequestFiberSet.js +13 -8
  33. package/dist/SQL/Model.d.ts +468 -0
  34. package/dist/SQL/Model.d.ts.map +1 -0
  35. package/dist/SQL/Model.js +469 -0
  36. package/dist/SQL.d.ts +2 -0
  37. package/dist/SQL.d.ts.map +1 -0
  38. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  39. package/dist/ServiceBus.d.ts +61 -0
  40. package/dist/ServiceBus.d.ts.map +1 -0
  41. package/dist/ServiceBus.js +108 -0
  42. package/dist/Store/Cosmos/query.d.ts +15 -4
  43. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  44. package/dist/Store/Cosmos/query.js +179 -41
  45. package/dist/Store/Cosmos.d.ts +3 -3
  46. package/dist/Store/Cosmos.d.ts.map +1 -1
  47. package/dist/Store/Cosmos.js +345 -246
  48. package/dist/Store/Disk.d.ts +5 -5
  49. package/dist/Store/Disk.d.ts.map +1 -1
  50. package/dist/Store/Disk.js +77 -37
  51. package/dist/Store/Memory.d.ts +9 -6
  52. package/dist/Store/Memory.d.ts.map +1 -1
  53. package/dist/Store/Memory.js +328 -63
  54. package/dist/Store/SQL/Pg.d.ts +4 -0
  55. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  56. package/dist/Store/SQL/Pg.js +233 -0
  57. package/dist/Store/SQL/query.d.ts +49 -0
  58. package/dist/Store/SQL/query.d.ts.map +1 -0
  59. package/dist/Store/SQL/query.js +527 -0
  60. package/dist/Store/SQL.d.ts +21 -0
  61. package/dist/Store/SQL.d.ts.map +1 -0
  62. package/dist/Store/SQL.js +450 -0
  63. package/dist/Store/codeFilter.d.ts +5 -5
  64. package/dist/Store/codeFilter.d.ts.map +1 -1
  65. package/dist/Store/codeFilter.js +6 -3
  66. package/dist/Store/index.d.ts +7 -5
  67. package/dist/Store/index.d.ts.map +1 -1
  68. package/dist/Store/index.js +18 -5
  69. package/dist/Store/utils.d.ts +4 -3
  70. package/dist/Store/utils.d.ts.map +1 -1
  71. package/dist/Store/utils.js +5 -5
  72. package/dist/arbs.d.ts +2 -2
  73. package/dist/arbs.d.ts.map +1 -1
  74. package/dist/arbs.js +5 -3
  75. package/dist/codec.d.ts +5 -0
  76. package/dist/codec.d.ts.map +1 -0
  77. package/dist/codec.js +5 -0
  78. package/dist/cosmos-client.d.ts +16 -0
  79. package/dist/cosmos-client.d.ts.map +1 -0
  80. package/dist/cosmos-client.js +11 -0
  81. package/dist/errorReporter.d.ts +7 -5
  82. package/dist/errorReporter.d.ts.map +1 -1
  83. package/dist/errorReporter.js +23 -27
  84. package/dist/errors.d.ts +1 -1
  85. package/dist/fileUtil.d.ts +2 -2
  86. package/dist/fileUtil.d.ts.map +1 -1
  87. package/dist/fileUtil.js +2 -2
  88. package/dist/index.d.ts +3 -2
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +3 -2
  91. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  92. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  93. package/dist/internal/RequestContextMiddleware.js +46 -0
  94. package/dist/internal/auth.d.ts +53 -0
  95. package/dist/internal/auth.d.ts.map +1 -0
  96. package/dist/internal/auth.js +180 -0
  97. package/dist/internal/events.d.ts +11 -0
  98. package/dist/internal/events.d.ts.map +1 -0
  99. package/dist/internal/events.js +49 -0
  100. package/dist/internal/health.d.ts +3 -0
  101. package/dist/internal/health.d.ts.map +1 -0
  102. package/dist/internal/health.js +5 -0
  103. package/dist/layerUtils.d.ts +32 -0
  104. package/dist/layerUtils.d.ts.map +1 -0
  105. package/dist/layerUtils.js +17 -0
  106. package/dist/logger/jsonLogger.d.ts +2 -2
  107. package/dist/logger/jsonLogger.d.ts.map +1 -1
  108. package/dist/logger/jsonLogger.js +5 -3
  109. package/dist/logger/logFmtLogger.d.ts +2 -2
  110. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  111. package/dist/logger/logFmtLogger.js +3 -3
  112. package/dist/logger/shared.d.ts +3 -3
  113. package/dist/logger/shared.d.ts.map +1 -1
  114. package/dist/logger/shared.js +4 -4
  115. package/dist/logger.d.ts +1 -1
  116. package/dist/logger.d.ts.map +1 -1
  117. package/dist/memQueue.d.ts +15 -0
  118. package/dist/memQueue.d.ts.map +1 -0
  119. package/dist/memQueue.js +21 -0
  120. package/dist/middlewares.d.ts +10 -0
  121. package/dist/middlewares.d.ts.map +1 -0
  122. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  123. package/dist/mongo-client.d.ts +11 -0
  124. package/dist/mongo-client.d.ts.map +1 -0
  125. package/dist/mongo-client.js +15 -0
  126. package/dist/otel.d.ts +75 -0
  127. package/dist/otel.d.ts.map +1 -0
  128. package/dist/otel.js +65 -0
  129. package/dist/rateLimit.d.ts +12 -4
  130. package/dist/rateLimit.d.ts.map +1 -1
  131. package/dist/rateLimit.js +7 -12
  132. package/dist/redis-client.d.ts +42 -0
  133. package/dist/redis-client.d.ts.map +1 -0
  134. package/dist/redis-client.js +98 -0
  135. package/dist/reportError.d.ts +4 -0
  136. package/dist/reportError.d.ts.map +1 -0
  137. package/dist/reportError.js +28 -0
  138. package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
  139. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  140. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  141. package/dist/routing/middleware/middleware.d.ts +48 -0
  142. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  143. package/dist/routing/middleware/middleware.js +128 -0
  144. package/dist/routing/middleware.d.ts +3 -0
  145. package/dist/routing/middleware.d.ts.map +1 -0
  146. package/dist/{api/routing → routing}/middleware.js +1 -2
  147. package/dist/routing/schema/jwt.d.ts +4 -0
  148. package/dist/routing/schema/jwt.d.ts.map +1 -0
  149. package/dist/routing/schema/jwt.js +13 -0
  150. package/dist/routing/tsort.d.ts +8 -0
  151. package/dist/routing/tsort.d.ts.map +1 -0
  152. package/dist/routing/tsort.js +51 -0
  153. package/dist/routing/utils.d.ts +19 -0
  154. package/dist/routing/utils.d.ts.map +1 -0
  155. package/dist/routing/utils.js +45 -0
  156. package/dist/routing.d.ts +184 -0
  157. package/dist/routing.d.ts.map +1 -0
  158. package/dist/routing.js +236 -0
  159. package/dist/setupRequest.d.ts +19 -0
  160. package/dist/setupRequest.d.ts.map +1 -0
  161. package/dist/setupRequest.js +70 -0
  162. package/dist/test.d.ts +3 -3
  163. package/dist/test.d.ts.map +1 -1
  164. package/dist/test.js +2 -2
  165. package/dist/util.d.ts +3 -0
  166. package/dist/util.d.ts.map +1 -0
  167. package/dist/util.js +14 -0
  168. package/dist/vitest.d.ts +1 -1
  169. package/examples/query.ts +47 -39
  170. package/package.json +123 -234
  171. package/src/CUPS.ts +52 -13
  172. package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
  173. package/src/Emailer/Sendgrid.ts +82 -59
  174. package/src/Emailer/fake.ts +3 -3
  175. package/src/MainFiberSet.ts +12 -10
  176. package/src/QueueMaker/SQLQueue.ts +153 -156
  177. package/src/QueueMaker/errors.ts +3 -1
  178. package/src/QueueMaker/memQueue.ts +113 -107
  179. package/src/QueueMaker/sbqueue.ts +78 -90
  180. package/src/RequestFiberSet.ts +13 -8
  181. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  182. package/src/ServiceBus.ts +219 -0
  183. package/src/Store/Cosmos/query.ts +216 -52
  184. package/src/Store/Cosmos.ts +494 -353
  185. package/src/Store/Disk.ts +108 -68
  186. package/src/Store/Memory.ts +367 -93
  187. package/src/Store/SQL/Pg.ts +364 -0
  188. package/src/Store/SQL/query.ts +603 -0
  189. package/src/Store/SQL.ts +736 -0
  190. package/src/Store/codeFilter.ts +8 -5
  191. package/src/Store/index.ts +21 -6
  192. package/src/Store/utils.ts +26 -24
  193. package/src/arbs.ts +5 -3
  194. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  195. package/src/errorReporter.ts +66 -76
  196. package/src/fileUtil.ts +1 -1
  197. package/src/index.ts +2 -1
  198. package/src/internal/RequestContextMiddleware.ts +60 -0
  199. package/src/internal/auth.ts +272 -0
  200. package/src/{api/internal → internal}/events.ts +22 -13
  201. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  202. package/src/logger/jsonLogger.ts +4 -2
  203. package/src/logger/logFmtLogger.ts +2 -2
  204. package/src/logger/shared.ts +4 -3
  205. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  206. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  207. package/src/otel.ts +152 -0
  208. package/src/rateLimit.ts +34 -23
  209. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  210. package/src/{api/reportError.ts → reportError.ts} +3 -2
  211. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  212. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  213. package/src/routing/middleware.ts +4 -0
  214. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  215. package/src/{api/routing → routing}/utils.ts +2 -1
  216. package/src/routing.ts +768 -0
  217. package/src/setupRequest.ts +135 -0
  218. package/src/test.ts +2 -2
  219. package/test/auth.test.ts +101 -0
  220. package/test/contextProvider.test.ts +15 -12
  221. package/test/controller.test.ts +28 -32
  222. package/test/cosmos-query.test.ts +159 -0
  223. package/test/dist/auth.test.d.ts.map +1 -0
  224. package/test/dist/contextProvider.test.d.ts.map +1 -1
  225. package/test/dist/controller.test.d.ts.map +1 -1
  226. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  227. package/test/dist/date-query.test.d.ts.map +1 -0
  228. package/test/dist/fixtures.d.ts +30 -12
  229. package/test/dist/fixtures.d.ts.map +1 -1
  230. package/test/dist/fixtures.js +17 -10
  231. package/test/dist/query.test.d.ts.map +1 -1
  232. package/test/dist/rawQuery.test.d.ts.map +1 -1
  233. package/test/dist/repository-ext.test.d.ts.map +1 -0
  234. package/test/dist/requires.test.d.ts.map +1 -1
  235. package/test/dist/router-generator.test.d.ts.map +1 -0
  236. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  237. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  238. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  239. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  240. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  241. package/test/dist/sql-store.test.d.ts.map +1 -0
  242. package/test/fixtures.ts +16 -9
  243. package/test/layerUtils.test.ts +2 -2
  244. package/test/query.test.ts +903 -40
  245. package/test/rawQuery.test.ts +340 -22
  246. package/test/repository-ext.test.ts +62 -0
  247. package/test/requires.test.ts +10 -5
  248. package/test/router-generator.test.ts +187 -0
  249. package/test/routing-interruptibility.test.ts +66 -0
  250. package/test/rpc-context-map-streaming.test.ts +262 -0
  251. package/test/rpc-e2e-invalidation.test.ts +256 -0
  252. package/test/rpc-multi-middleware.test.ts +85 -10
  253. package/test/rpc-stream-fullstack.test.ts +304 -0
  254. package/test/sql-store.test.ts +1711 -0
  255. package/test/validateSample.test.ts +19 -14
  256. package/tsconfig.examples.json +1 -1
  257. package/tsconfig.json +2 -1
  258. package/tsconfig.json.bak +2 -2
  259. package/tsconfig.src.json +35 -35
  260. package/tsconfig.test.json +2 -2
  261. package/dist/Emailer/service.d.ts +0 -55
  262. package/dist/Emailer/service.d.ts.map +0 -1
  263. package/dist/Emailer/service.js +0 -6
  264. package/dist/Emailer.d.ts +0 -2
  265. package/dist/Emailer.d.ts.map +0 -1
  266. package/dist/Emailer.js +0 -2
  267. package/dist/Model/Repository/ext.d.ts +0 -41
  268. package/dist/Model/Repository/ext.d.ts.map +0 -1
  269. package/dist/Model/Repository/ext.js +0 -65
  270. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  271. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  272. package/dist/Model/Repository/internal/internal.js +0 -316
  273. package/dist/Model/Repository/legacy.d.ts +0 -19
  274. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  275. package/dist/Model/Repository/legacy.js +0 -2
  276. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  277. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  278. package/dist/Model/Repository/makeRepo.js +0 -24
  279. package/dist/Model/Repository/service.d.ts +0 -89
  280. package/dist/Model/Repository/service.d.ts.map +0 -1
  281. package/dist/Model/Repository/service.js +0 -2
  282. package/dist/Model/Repository/validation.d.ts +0 -42
  283. package/dist/Model/Repository/validation.d.ts.map +0 -1
  284. package/dist/Model/Repository/validation.js +0 -32
  285. package/dist/Model/Repository.d.ts +0 -6
  286. package/dist/Model/Repository.d.ts.map +0 -1
  287. package/dist/Model/Repository.js +0 -6
  288. package/dist/Model/dsl.d.ts +0 -32
  289. package/dist/Model/dsl.d.ts.map +0 -1
  290. package/dist/Model/dsl.js +0 -44
  291. package/dist/Model/filter/filterApi.d.ts +0 -30
  292. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  293. package/dist/Model/filter/filterApi.js +0 -2
  294. package/dist/Model/filter/types/errors.d.ts +0 -29
  295. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  296. package/dist/Model/filter/types/errors.js +0 -2
  297. package/dist/Model/filter/types/fields.d.ts +0 -15
  298. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  299. package/dist/Model/filter/types/fields.js +0 -2
  300. package/dist/Model/filter/types/path/common.d.ts +0 -316
  301. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  302. package/dist/Model/filter/types/path/common.js +0 -2
  303. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  304. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  305. package/dist/Model/filter/types/path/eager.js +0 -31
  306. package/dist/Model/filter/types/path/index.d.ts +0 -4
  307. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  308. package/dist/Model/filter/types/path/index.js +0 -3
  309. package/dist/Model/filter/types/utils.d.ts +0 -79
  310. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  311. package/dist/Model/filter/types/utils.js +0 -2
  312. package/dist/Model/filter/types/validator.d.ts +0 -30
  313. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  314. package/dist/Model/filter/types/validator.js +0 -2
  315. package/dist/Model/filter/types.d.ts +0 -5
  316. package/dist/Model/filter/types.d.ts.map +0 -1
  317. package/dist/Model/filter/types.js +0 -7
  318. package/dist/Model/query/dsl.d.ts +0 -248
  319. package/dist/Model/query/dsl.d.ts.map +0 -1
  320. package/dist/Model/query/dsl.js +0 -104
  321. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  322. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  323. package/dist/Model/query/new-kid-interpreter.js +0 -165
  324. package/dist/Model/query.d.ts +0 -15
  325. package/dist/Model/query.d.ts.map +0 -1
  326. package/dist/Model/query.js +0 -3
  327. package/dist/Model.d.ts +0 -4
  328. package/dist/Model.d.ts.map +0 -1
  329. package/dist/Model.js +0 -4
  330. package/dist/Operations.d.ts +0 -55
  331. package/dist/Operations.d.ts.map +0 -1
  332. package/dist/Operations.js +0 -102
  333. package/dist/OperationsRepo.d.ts +0 -41
  334. package/dist/OperationsRepo.d.ts.map +0 -1
  335. package/dist/OperationsRepo.js +0 -14
  336. package/dist/QueueMaker/service.d.ts +0 -11
  337. package/dist/QueueMaker/service.d.ts.map +0 -1
  338. package/dist/QueueMaker/service.js +0 -4
  339. package/dist/RequestContext.d.ts +0 -63
  340. package/dist/RequestContext.d.ts.map +0 -1
  341. package/dist/RequestContext.js +0 -49
  342. package/dist/Store/ContextMapContainer.d.ts +0 -14
  343. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  344. package/dist/Store/ContextMapContainer.js +0 -16
  345. package/dist/Store/service.d.ts +0 -108
  346. package/dist/Store/service.d.ts.map +0 -1
  347. package/dist/Store/service.js +0 -71
  348. package/dist/Store.d.ts +0 -2
  349. package/dist/Store.d.ts.map +0 -1
  350. package/dist/Store.js +0 -2
  351. package/dist/adapters/SQL/Model.d.ts +0 -479
  352. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  353. package/dist/adapters/SQL/Model.js +0 -478
  354. package/dist/adapters/SQL.d.ts +0 -2
  355. package/dist/adapters/SQL.d.ts.map +0 -1
  356. package/dist/adapters/ServiceBus.d.ts +0 -58
  357. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  358. package/dist/adapters/ServiceBus.js +0 -99
  359. package/dist/adapters/cosmos-client.d.ts +0 -14
  360. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  361. package/dist/adapters/cosmos-client.js +0 -9
  362. package/dist/adapters/index.d.ts +0 -2
  363. package/dist/adapters/index.d.ts.map +0 -1
  364. package/dist/adapters/index.js +0 -2
  365. package/dist/adapters/logger.d.ts +0 -9
  366. package/dist/adapters/logger.d.ts.map +0 -1
  367. package/dist/adapters/logger.js +0 -3
  368. package/dist/adapters/memQueue.d.ts +0 -13
  369. package/dist/adapters/memQueue.d.ts.map +0 -1
  370. package/dist/adapters/memQueue.js +0 -20
  371. package/dist/adapters/mongo-client.d.ts +0 -10
  372. package/dist/adapters/mongo-client.d.ts.map +0 -1
  373. package/dist/adapters/mongo-client.js +0 -13
  374. package/dist/adapters/redis-client.d.ts +0 -39
  375. package/dist/adapters/redis-client.d.ts.map +0 -1
  376. package/dist/adapters/redis-client.js +0 -94
  377. package/dist/api/ContextProvider.d.ts +0 -31
  378. package/dist/api/ContextProvider.d.ts.map +0 -1
  379. package/dist/api/ContextProvider.js +0 -38
  380. package/dist/api/codec.d.ts +0 -5
  381. package/dist/api/codec.d.ts.map +0 -1
  382. package/dist/api/codec.js +0 -5
  383. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  384. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  385. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  386. package/dist/api/internal/auth.d.ts +0 -15
  387. package/dist/api/internal/auth.d.ts.map +0 -1
  388. package/dist/api/internal/auth.js +0 -47
  389. package/dist/api/internal/events.d.ts +0 -9
  390. package/dist/api/internal/events.d.ts.map +0 -1
  391. package/dist/api/internal/events.js +0 -42
  392. package/dist/api/internal/health.d.ts +0 -3
  393. package/dist/api/internal/health.d.ts.map +0 -1
  394. package/dist/api/internal/health.js +0 -5
  395. package/dist/api/layerUtils.d.ts +0 -24
  396. package/dist/api/layerUtils.d.ts.map +0 -1
  397. package/dist/api/layerUtils.js +0 -16
  398. package/dist/api/middlewares.d.ts +0 -10
  399. package/dist/api/middlewares.d.ts.map +0 -1
  400. package/dist/api/reportError.d.ts +0 -4
  401. package/dist/api/reportError.d.ts.map +0 -1
  402. package/dist/api/reportError.js +0 -27
  403. package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
  404. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  405. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  406. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  407. package/dist/api/routing/middleware/middleware.js +0 -92
  408. package/dist/api/routing/middleware.d.ts +0 -4
  409. package/dist/api/routing/middleware.d.ts.map +0 -1
  410. package/dist/api/routing/schema/jwt.d.ts +0 -4
  411. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  412. package/dist/api/routing/schema/jwt.js +0 -12
  413. package/dist/api/routing/tsort.d.ts +0 -8
  414. package/dist/api/routing/tsort.d.ts.map +0 -1
  415. package/dist/api/routing/tsort.js +0 -51
  416. package/dist/api/routing/utils.d.ts +0 -19
  417. package/dist/api/routing/utils.d.ts.map +0 -1
  418. package/dist/api/routing/utils.js +0 -44
  419. package/dist/api/routing.d.ts +0 -138
  420. package/dist/api/routing.d.ts.map +0 -1
  421. package/dist/api/routing.js +0 -166
  422. package/dist/api/setupRequest.d.ts +0 -12
  423. package/dist/api/setupRequest.d.ts.map +0 -1
  424. package/dist/api/setupRequest.js +0 -44
  425. package/dist/api/util.d.ts +0 -3
  426. package/dist/api/util.d.ts.map +0 -1
  427. package/dist/api/util.js +0 -14
  428. package/eslint.config.mjs +0 -24
  429. package/src/Emailer/service.ts +0 -52
  430. package/src/Emailer.ts +0 -1
  431. package/src/Model/Repository/ext.ts +0 -283
  432. package/src/Model/Repository/internal/internal.ts +0 -577
  433. package/src/Model/Repository/legacy.ts +0 -27
  434. package/src/Model/Repository/makeRepo.ts +0 -139
  435. package/src/Model/Repository/service.ts +0 -627
  436. package/src/Model/Repository/validation.ts +0 -31
  437. package/src/Model/Repository.ts +0 -5
  438. package/src/Model/dsl.ts +0 -128
  439. package/src/Model/filter/filterApi.ts +0 -60
  440. package/src/Model/filter/types/errors.ts +0 -47
  441. package/src/Model/filter/types/fields.ts +0 -50
  442. package/src/Model/filter/types/path/common.ts +0 -404
  443. package/src/Model/filter/types/path/eager.ts +0 -298
  444. package/src/Model/filter/types/path/index.ts +0 -4
  445. package/src/Model/filter/types/utils.ts +0 -128
  446. package/src/Model/filter/types/validator.ts +0 -46
  447. package/src/Model/filter/types.ts +0 -6
  448. package/src/Model/query/dsl.ts +0 -2110
  449. package/src/Model/query/new-kid-interpreter.ts +0 -210
  450. package/src/Model/query.ts +0 -13
  451. package/src/Model.ts +0 -3
  452. package/src/Operations.ts +0 -235
  453. package/src/OperationsRepo.ts +0 -16
  454. package/src/QueueMaker/service.ts +0 -17
  455. package/src/RequestContext.ts +0 -63
  456. package/src/Store/ContextMapContainer.ts +0 -20
  457. package/src/Store/service.ts +0 -184
  458. package/src/Store.ts +0 -1
  459. package/src/adapters/ServiceBus.ts +0 -209
  460. package/src/adapters/index.ts +0 -0
  461. package/src/adapters/logger.ts +0 -3
  462. package/src/api/internal/RequestContextMiddleware.ts +0 -42
  463. package/src/api/internal/auth.ts +0 -68
  464. package/src/api/routing/middleware.ts +0 -6
  465. package/src/api/routing.ts +0 -598
  466. package/src/api/setupRequest.ts +0 -84
  467. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  468. /package/src/{api/codec.ts → codec.ts} +0 -0
  469. /package/src/{api/internal → internal}/health.ts +0 -0
  470. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  471. /package/src/{api/routing → routing}/tsort.ts +0 -0
  472. /package/src/{api/util.ts → util.ts} +0 -0
@@ -1,11 +1,14 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-return */
3
- import { Array, Effect, type NonEmptyReadonlyArray } from "effect-app"
3
+ import * as Array from "effect-app/Array"
4
+ import type { NonEmptyReadonlyArray } from "effect-app/Array"
5
+ import * as Effect from "effect-app/Effect"
6
+ import type { FilterR, FilterResult, Ops } from "effect-app/Model/filter/filterApi"
7
+ import type { AggregateIrExpression, ComputedProjectionIrExpression, ComputedProjectionMathIrExpression } from "effect-app/Model/query"
8
+ import type { SupportedValues } from "effect-app/Store"
4
9
  import { assertUnreachable } from "effect-app/utils"
5
10
  import { InfraLogger } from "../../logger.js"
6
- import type { FilterR, FilterResult, Ops } from "../../Model/filter/filterApi.js"
7
11
  import { isRelationCheck } from "../codeFilter.js"
8
- import type { SupportedValues } from "../service.js"
9
12
 
10
13
  export function logQuery(q: {
11
14
  query: string
@@ -40,12 +43,26 @@ export function buildWhereCosmosQuery3(
40
43
  filter: readonly FilterResult[],
41
44
  name: string,
42
45
  defaultValues: Record<string, unknown>,
43
- select?: NonEmptyReadonlyArray<string | { key: string; subKeys: readonly string[] }>,
46
+ select?: NonEmptyReadonlyArray<
47
+ string | {
48
+ key: string
49
+ subKeys: readonly string[]
50
+ } | {
51
+ key: string
52
+ computed: ComputedProjectionIrExpression
53
+ } | {
54
+ key: string
55
+ path: string
56
+ } | {
57
+ key: string
58
+ aggregate: AggregateIrExpression
59
+ }
60
+ >,
44
61
  order?: NonEmptyReadonlyArray<{ key: string; direction: "ASC" | "DESC" }>,
45
62
  skip?: number,
46
63
  limit?: number
47
64
  ) {
48
- const statement = (x: FilterR, i: number, values: any[]) => {
65
+ const statement = (x: FilterR, i: number) => {
49
66
  if (x.path === idKey) {
50
67
  x = { ...x, path: "id" }
51
68
  }
@@ -60,8 +77,6 @@ export function buildWhereCosmosQuery3(
60
77
 
61
78
  const v = "@v" + i
62
79
 
63
- const realValue = values[i]
64
-
65
80
  switch (x.op) {
66
81
  case "in":
67
82
  return `ARRAY_CONTAINS(${v}, ${k})`
@@ -74,14 +89,22 @@ export function buildWhereCosmosQuery3(
74
89
  return `(NOT ARRAY_CONTAINS(${k}, ${v}))`
75
90
 
76
91
  case "includes-any":
77
- return `ARRAY_CONTAINS_ANY(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")})`
92
+ return `ARRAY_CONTAINS_ANY(${k}, ${
93
+ (x.value as unknown as readonly unknown[]).map((_, i) => `${v}__${i}`).join(", ")
94
+ })`
78
95
  case "notIncludes-any":
79
- return `(NOT ARRAY_CONTAINS_ANY(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")}))`
96
+ return `(NOT ARRAY_CONTAINS_ANY(${k}, ${
97
+ (x.value as unknown as readonly unknown[]).map((_, i) => `${v}__${i}`).join(", ")
98
+ }))`
80
99
 
81
100
  case "includes-all":
82
- return `ARRAY_CONTAINS_ALL(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")})`
101
+ return `ARRAY_CONTAINS_ALL(${k}, ${
102
+ (x.value as unknown as readonly unknown[]).map((_, i) => `${v}__${i}`).join(", ")
103
+ })`
83
104
  case "notIncludes-all":
84
- return `(NOT ARRAY_CONTAINS_ALL(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")}))`
105
+ return `(NOT ARRAY_CONTAINS_ALL(${k}, ${
106
+ (x.value as unknown as readonly unknown[]).map((_, i) => `${v}__${i}`).join(", ")
107
+ }))`
85
108
 
86
109
  case "contains":
87
110
  return `CONTAINS(${k}, ${v}, true)`
@@ -165,7 +188,7 @@ export function buildWhereCosmosQuery3(
165
188
  : _
166
189
  : _
167
190
 
168
- const print = (state: readonly FilterResult[], values: any[], isRelation: string | null, every: boolean) => {
191
+ const print = (state: readonly FilterResult[], isRelation: string | null, every: boolean) => {
169
192
  let s = ""
170
193
  let l = 0
171
194
  const printN = (n: number) => {
@@ -174,13 +197,13 @@ export function buildWhereCosmosQuery3(
174
197
  for (const e of state) {
175
198
  switch (e.t) {
176
199
  case "where":
177
- s += statement(e, i++, values)
200
+ s += statement(e, i++)
178
201
  break
179
202
  case "or":
180
- s += ` OR ${statement(e, i++, values)}`
203
+ s += ` OR ${statement(e, i++)}`
181
204
  break
182
205
  case "and":
183
- s += ` AND ${statement(e, i++, values)}`
206
+ s += ` AND ${statement(e, i++)}`
184
207
  break
185
208
  case "or-scope": {
186
209
  ++l
@@ -189,7 +212,7 @@ export function buildWhereCosmosQuery3(
189
212
  if (rel) {
190
213
  const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
191
214
  s += isRelation
192
- ? ` OR (\n${printN(l + 1)}${print(e.result, values, rel, every)}\n${printN(l)})`
215
+ ? ` OR (\n${printN(l + 1)}${print(e.result, rel, every)}\n${printN(l)})`
193
216
  : ` OR (\n${printN(l + 1)}${
194
217
  every ? "NOT " : ""
195
218
  }EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
@@ -197,13 +220,12 @@ export function buildWhereCosmosQuery3(
197
220
  e
198
221
  .result
199
222
  .map(flip(every)),
200
- values,
201
223
  rel,
202
224
  every
203
225
  )
204
226
  }))`
205
227
  } else {
206
- s += ` OR (\n${printN(l + 1)}${print(e.result, values, null, every)}\n${printN(l)})`
228
+ s += ` OR (\n${printN(l + 1)}${print(e.result, null, every)}\n${printN(l)})`
207
229
  }
208
230
  --l
209
231
  break
@@ -215,14 +237,14 @@ export function buildWhereCosmosQuery3(
215
237
  if (rel) {
216
238
  const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
217
239
  s += isRelation
218
- ? ` AND (\n${printN(l + 1)}${print(e.result, values, rel, every)}\n${printN(l)})`
240
+ ? ` AND (\n${printN(l + 1)}${print(e.result, rel, every)}\n${printN(l)})`
219
241
  : ` AND (\n${printN(l + 1)}${
220
242
  every ? "NOT " : ""
221
243
  }EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
222
- print(e.result.map(flip(every)), values, rel, every)
244
+ print(e.result.map(flip(every)), rel, every)
223
245
  }))`
224
246
  } else {
225
- s += ` AND (\n${printN(l + 1)}${print(e.result, values, null, every)}\n${printN(l)})`
247
+ s += ` AND (\n${printN(l + 1)}${print(e.result, null, every)}\n${printN(l)})`
226
248
  }
227
249
  --l
228
250
  break
@@ -234,12 +256,12 @@ export function buildWhereCosmosQuery3(
234
256
  if (rel) {
235
257
  const rel = (e.result[0]! as { path: string }).path.split(".-1.")[0]
236
258
  s += isRelation
237
- ? `(\n${printN(l + 1)}${print(e.result, values, rel, every)}\n${printN(l)})`
259
+ ? `(\n${printN(l + 1)}${print(e.result, rel, every)}\n${printN(l)})`
238
260
  : `(\n${printN(l + 1)}${every ? "NOT " : ""}EXISTS(SELECT VALUE ${rel} FROM ${rel} IN f.${rel} WHERE ${
239
- print(e.result.map(flip(every)), values, rel, every)
261
+ print(e.result.map(flip(every)), rel, every)
240
262
  }))`
241
263
  } else {
242
- s += `(\n${printN(l + 1)}${print(e.result, values, null, every)}\n${printN(l)})`
264
+ s += `(\n${printN(l + 1)}${print(e.result, null, every)}\n${printN(l)})`
243
265
  }
244
266
  // ;--l
245
267
  break
@@ -272,40 +294,182 @@ export function buildWhereCosmosQuery3(
272
294
  ? getValues(_.result)
273
295
  : [_]
274
296
  )
275
- const values = getValues(filter)
297
+ const computedFilters = select
298
+ ? select.flatMap((_) =>
299
+ typeof _ === "object" && "computed" in _ && "filter" in _.computed ? getValues(_.computed.filter) : []
300
+ )
301
+ : []
302
+ const aggregateFilters = select
303
+ ? select.flatMap((_) =>
304
+ typeof _ === "object" && "aggregate" in _ && "filter" in _.aggregate ? getValues(_.aggregate.filter) : []
305
+ )
306
+ : []
307
+ const values = [...computedFilters, ...aggregateFilters, ...getValues(filter)]
308
+
309
+ const hasAggregates = select
310
+ ? select.some((s) => typeof s === "object" && s !== null && "aggregate" in s)
311
+ : false
312
+
313
+ const aggregateSelectExpr = (key: string, agg: AggregateIrExpression): string => {
314
+ switch (agg._tag) {
315
+ case "agg-count":
316
+ return `COUNT(1) AS ${key}`
317
+ case "agg-count-when": {
318
+ if (agg.filter.length === 0) return `COUNT(1) AS ${key}`
319
+ const cond = print(agg.filter, null, false)
320
+ // Cosmos supports SUM(IIF(cond, 1, 0)) as a conditional count
321
+ return `SUM(IIF(${cond}, 1, 0)) AS ${key}`
322
+ }
323
+ case "agg-sum": {
324
+ const fieldRef = dottedToAccess(`f.${agg.field}`)
325
+ return `SUM(${fieldRef}) AS ${key}`
326
+ }
327
+ case "agg-min": {
328
+ const fieldRef = dottedToAccess(`f.${agg.field}`)
329
+ return `MIN(${fieldRef}) AS ${key}`
330
+ }
331
+ case "agg-max": {
332
+ const fieldRef = dottedToAccess(`f.${agg.field}`)
333
+ return `MAX(${fieldRef}) AS ${key}`
334
+ }
335
+ default:
336
+ return assertUnreachable(agg)
337
+ }
338
+ }
339
+
340
+ const computedSelectExpr = (key: string, computed: ComputedProjectionIrExpression) => {
341
+ const relationPath = computed.path
342
+ const relationAlias = relationPath
343
+ const relationSource = dottedToAccess(`f.${relationPath}`)
344
+ const compileExpr = (expression: ComputedProjectionMathIrExpression): string => {
345
+ switch (expression._tag) {
346
+ case "field":
347
+ return dottedToAccess(`${relationAlias}.${expression.field}`)
348
+ case "mul":
349
+ return `(${compileExpr(expression.left)} * ${compileExpr(expression.right)})`
350
+ default:
351
+ return assertUnreachable(expression)
352
+ }
353
+ }
354
+ const factorExpr = (unitExpr: string, toBase: string, factors: Readonly<Record<string, number>>) => {
355
+ const entries = Object.entries(factors).filter(([, factor]) => Number.isFinite(factor))
356
+ return entries.reduceRight<string>(
357
+ (acc, [unit, factor]) => `IIF(${unitExpr} = ${JSON.stringify(unit)}, ${factor}, ${acc})`,
358
+ `IIF(${unitExpr} = ${JSON.stringify(toBase)}, 1, 0)`
359
+ )
360
+ }
361
+ const filter = "filter" in computed ? computed.filter : []
362
+ // Print filter once — `print` mutates the outer `i` parameter counter, so
363
+ // re-walking the same filter would double-bump it and desync @v indices.
364
+ const filterSql = filter.length > 0 ? print(filter, relationPath, false) : ""
365
+ const where = filterSql ? ` WHERE ${filterSql}` : ""
366
+ switch (computed._tag) {
367
+ case "relation-count":
368
+ return `(SELECT VALUE COUNT(1) FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
369
+ case "relation-any":
370
+ return `EXISTS(SELECT VALUE ${relationAlias} FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
371
+ case "relation-every": {
372
+ // ∀x.P(x) ≡ ¬∃x.¬P(x). Cosmos has no NOT(...) on EXISTS subqueries directly,
373
+ // but we can flip via NOT EXISTS(... WHERE NOT (filter)).
374
+ if (filter.length === 0) return `true AS ${key}`
375
+ return `NOT EXISTS(SELECT VALUE ${relationAlias} FROM ${relationAlias} IN ${relationSource} WHERE NOT (${filterSql})) AS ${key}`
376
+ }
377
+ case "relation-distinct-count": {
378
+ const fieldRef = dottedToAccess(`${relationAlias}.${computed.field}`)
379
+ return `(SELECT VALUE COUNT(1) FROM (SELECT DISTINCT VALUE ${fieldRef} FROM ${relationAlias} IN ${relationSource}${where})) AS ${key}`
380
+ }
381
+ case "relation-sum": {
382
+ const fieldRef = dottedToAccess(`${relationAlias}.${computed.field}`)
383
+ return `(SELECT VALUE SUM(${fieldRef}) FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
384
+ }
385
+ case "relation-sum-expr": {
386
+ const expression = compileExpr(computed.expression)
387
+ return `(SELECT VALUE SUM(${expression}) FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
388
+ }
389
+ case "relation-sum-expr-by": {
390
+ const unitRef = dottedToAccess(`${relationAlias}.${computed.unit}`)
391
+ const expression = compileExpr(computed.expression)
392
+ return `ARRAY(SELECT VALUE { "unit": ${unitRef}, "total": SUM(${expression}) } FROM ${relationAlias} IN ${relationSource}${where} GROUP BY ${unitRef}) AS ${key}`
393
+ }
394
+ case "relation-sum-expr-normalized": {
395
+ const unitRef = dottedToAccess(`${relationAlias}.${computed.unit}`)
396
+ const expression = compileExpr(computed.expression)
397
+ const factor = factorExpr(unitRef, computed.toBase, computed.factors)
398
+ return `(SELECT VALUE SUM((${expression}) * (${factor})) FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
399
+ }
400
+ case "relation-collect": {
401
+ const fieldRef = dottedToAccess(`${relationAlias}.${computed.field}`)
402
+ if (computed.distinct) {
403
+ return `ARRAY(SELECT DISTINCT VALUE ${fieldRef} FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
404
+ }
405
+ return `ARRAY(SELECT VALUE ${fieldRef} FROM ${relationAlias} IN ${relationSource}${where}) AS ${key}`
406
+ }
407
+ case "relation-length":
408
+ return `ARRAY_LENGTH(${relationSource}) AS ${key}`
409
+ case "relation-collect-fields": {
410
+ const subqueries = computed.fields.map((field) => {
411
+ const fieldRef = dottedToAccess(`${relationAlias}.${field}`)
412
+ return computed.distinct
413
+ ? `ARRAY(SELECT DISTINCT VALUE ${fieldRef} FROM ${relationAlias} IN ${relationSource}${where})`
414
+ : `ARRAY(SELECT VALUE ${fieldRef} FROM ${relationAlias} IN ${relationSource}${where})`
415
+ })
416
+ const combined = computed.distinct
417
+ ? subqueries.reduce((acc, sq) => `SetUnion(${acc}, ${sq})`)
418
+ : subqueries.reduce((acc, sq) => `ARRAY_CONCAT(${acc}, ${sq})`)
419
+ return `${combined} AS ${key}`
420
+ }
421
+ }
422
+ }
423
+
424
+ const buildSelectList = (): string => {
425
+ if (!select) return "f"
426
+ return select
427
+ .map((s) => {
428
+ if (typeof s === "string") {
429
+ return dottedToAccess(s === idKey ? "f.id" : `f.${s}`)
430
+ }
431
+ if ("computed" in s) return computedSelectExpr(s.key, s.computed)
432
+ if ("aggregate" in s) return aggregateSelectExpr(s.key, s.aggregate)
433
+ if ("path" in s) return `${dottedToAccess(`f.${s.path}`)} AS ${s.key}`
434
+ // subKeys
435
+ return `ARRAY (SELECT ${s.subKeys.map((_) => dottedToAccess(`t.${_}`)).join(",")}
436
+ FROM t in ${dottedToAccess(`f.${s.key}`)}) AS ${s.key}`
437
+ })
438
+ .join(", ")
439
+ }
440
+
441
+ const groupByClause = hasAggregates && select
442
+ ? (() => {
443
+ const groupByExprs = select
444
+ .filter((s): s is { key: string; path: string } =>
445
+ typeof s === "object" && s !== null && "path" in s && !("aggregate" in s)
446
+ )
447
+ .map((s) => dottedToAccess(`f.${s.path}`))
448
+ return groupByExprs.length > 0 ? `GROUP BY ${groupByExprs.join(", ")}` : ""
449
+ })()
450
+ : ""
451
+
452
+ const orderExpr = (key: string) => hasAggregates ? key : dottedToAccess(`f.${key}`)
453
+
276
454
  // with joins, you should use DISTINCT
277
455
  // or you can end up with duplicates
278
456
  return {
279
457
  query: `
280
- SELECT ${
281
- select
282
- ? `${
283
- select
284
- .map((s) =>
285
- typeof s === "string"
286
- ? dottedToAccess(s === idKey ? "f.id" : `f.${s}`) // x["y"} vs x.y, helps with reserved keywords like "value"
287
- : `ARRAY (SELECT ${s.subKeys.map((_) => dottedToAccess(`t.${_}`)).join(",")}
288
- FROM t in ${dottedToAccess(`f.${s.key}`)}) AS ${s.key}`
289
- )
290
- .join(", ")
291
- }`
292
- : "f"
293
- }
458
+ SELECT ${buildSelectList()}
294
459
  FROM ${name} f
295
460
 
296
- ${filter.length ? `WHERE (${print(filter, values.map((_) => _.value), null, false)})` : ""}
297
- ${order ? `ORDER BY ${order.map((_) => `${dottedToAccess(`f.${_.key}`)} ${_.direction}`).join(", ")}` : ""}
461
+ ${filter.length ? `WHERE (${print(filter, null, false)})` : ""}
462
+ ${groupByClause}
463
+ ${order ? `ORDER BY ${order.map((_) => `${orderExpr(_.key)} ${_.direction}`).join(", ")}` : ""}
298
464
  ${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
299
- parameters: [
300
- ...values
301
- .flatMap((x, i) =>
302
- [{
303
- name: `@v${i}`,
304
- value: x.value as any
305
- }]
306
- // TODO: only for arrays that are used with _ANY or _ALL
307
- .concat(Array.isArray(x.value) ? x.value.map((_, i2) => ({ name: `@v${i}__${i2}`, value: _ as any })) : [])
308
- )
309
- ]
465
+ parameters: values
466
+ .flatMap((x, i) =>
467
+ [{
468
+ name: `@v${i}`,
469
+ value: x.value as any
470
+ }]
471
+ // TODO: only for arrays that are used with _ANY or _ALL
472
+ .concat(Array.isArray(x.value) ? x.value.map((_, i2) => ({ name: `@v${i}__${i2}`, value: _ as any })) : [])
473
+ )
310
474
  }
311
475
  }