@effect-app/infra 4.0.0-beta.26 → 4.0.0-beta.260

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 (503) hide show
  1. package/CHANGELOG.md +1966 -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/ClusterCosmos.d.ts +64 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +487 -0
  9. package/dist/ClusterServiceBus.d.ts +67 -0
  10. package/dist/ClusterServiceBus.d.ts.map +1 -0
  11. package/dist/ClusterServiceBus.js +82 -0
  12. package/dist/ContextProvider.d.ts +34 -0
  13. package/dist/ContextProvider.d.ts.map +1 -0
  14. package/dist/ContextProvider.js +40 -0
  15. package/dist/Emailer/Sendgrid.d.ts +111 -147
  16. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  17. package/dist/Emailer/Sendgrid.js +24 -19
  18. package/dist/Emailer/fake.d.ts +2 -2
  19. package/dist/Emailer/fake.d.ts.map +1 -1
  20. package/dist/Emailer/fake.js +4 -4
  21. package/dist/MainFiberSet.d.ts +12 -9
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +10 -6
  24. package/dist/QueueMaker/SQLQueue.d.ts +8 -9
  25. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  26. package/dist/QueueMaker/SQLQueue.js +138 -120
  27. package/dist/QueueMaker/errors.d.ts +5 -3
  28. package/dist/QueueMaker/errors.d.ts.map +1 -1
  29. package/dist/QueueMaker/errors.js +4 -2
  30. package/dist/QueueMaker/memQueue.d.ts +10 -6
  31. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  32. package/dist/QueueMaker/memQueue.js +84 -68
  33. package/dist/QueueMaker/sbqueue.d.ts +9 -5
  34. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  35. package/dist/QueueMaker/sbqueue.js +60 -58
  36. package/dist/RequestFiberSet.d.ts +10 -7
  37. package/dist/RequestFiberSet.d.ts.map +1 -1
  38. package/dist/RequestFiberSet.js +13 -8
  39. package/dist/SQL/Model.d.ts +468 -0
  40. package/dist/SQL/Model.d.ts.map +1 -0
  41. package/dist/SQL/Model.js +469 -0
  42. package/dist/SQL.d.ts +2 -0
  43. package/dist/SQL.d.ts.map +1 -0
  44. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  45. package/dist/ServiceBus.d.ts +61 -0
  46. package/dist/ServiceBus.d.ts.map +1 -0
  47. package/dist/ServiceBus.js +108 -0
  48. package/dist/Store/Cosmos/query.d.ts +15 -4
  49. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  50. package/dist/Store/Cosmos/query.js +179 -41
  51. package/dist/Store/Cosmos.d.ts +3 -3
  52. package/dist/Store/Cosmos.d.ts.map +1 -1
  53. package/dist/Store/Cosmos.js +344 -246
  54. package/dist/Store/Disk.d.ts +5 -5
  55. package/dist/Store/Disk.d.ts.map +1 -1
  56. package/dist/Store/Disk.js +78 -38
  57. package/dist/Store/Memory.d.ts +7 -10
  58. package/dist/Store/Memory.d.ts.map +1 -1
  59. package/dist/Store/Memory.js +326 -66
  60. package/dist/Store/SQL/Pg.d.ts +4 -0
  61. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  62. package/dist/Store/SQL/Pg.js +232 -0
  63. package/dist/Store/SQL/query.d.ts +49 -0
  64. package/dist/Store/SQL/query.d.ts.map +1 -0
  65. package/dist/Store/SQL/query.js +527 -0
  66. package/dist/Store/SQL.d.ts +21 -0
  67. package/dist/Store/SQL.d.ts.map +1 -0
  68. package/dist/Store/SQL.js +449 -0
  69. package/dist/Store/codeFilter.d.ts +5 -5
  70. package/dist/Store/codeFilter.d.ts.map +1 -1
  71. package/dist/Store/codeFilter.js +6 -3
  72. package/dist/Store/index.d.ts +7 -5
  73. package/dist/Store/index.d.ts.map +1 -1
  74. package/dist/Store/index.js +18 -5
  75. package/dist/Store/utils.d.ts +4 -3
  76. package/dist/Store/utils.d.ts.map +1 -1
  77. package/dist/Store/utils.js +5 -5
  78. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  79. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  80. package/dist/WorkflowEngineCosmos.js +521 -0
  81. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  82. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  83. package/dist/WorkflowEngineSqlite.js +550 -0
  84. package/dist/arbs.d.ts +2 -2
  85. package/dist/arbs.d.ts.map +1 -1
  86. package/dist/arbs.js +5 -3
  87. package/dist/codec.d.ts +5 -0
  88. package/dist/codec.d.ts.map +1 -0
  89. package/dist/codec.js +5 -0
  90. package/dist/cosmos-client.d.ts +16 -0
  91. package/dist/cosmos-client.d.ts.map +1 -0
  92. package/dist/cosmos-client.js +11 -0
  93. package/dist/errorReporter.d.ts +7 -5
  94. package/dist/errorReporter.d.ts.map +1 -1
  95. package/dist/errorReporter.js +23 -27
  96. package/dist/errors.d.ts +1 -1
  97. package/dist/fileUtil.d.ts +2 -2
  98. package/dist/fileUtil.d.ts.map +1 -1
  99. package/dist/fileUtil.js +2 -2
  100. package/dist/index.d.ts +3 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +3 -2
  103. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  104. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  105. package/dist/internal/RequestContextMiddleware.js +45 -0
  106. package/dist/internal/auth.d.ts +53 -0
  107. package/dist/internal/auth.d.ts.map +1 -0
  108. package/dist/internal/auth.js +180 -0
  109. package/dist/internal/events.d.ts +11 -0
  110. package/dist/internal/events.d.ts.map +1 -0
  111. package/dist/internal/events.js +49 -0
  112. package/dist/internal/health.d.ts +3 -0
  113. package/dist/internal/health.d.ts.map +1 -0
  114. package/dist/internal/health.js +5 -0
  115. package/dist/layerUtils.d.ts +32 -0
  116. package/dist/layerUtils.d.ts.map +1 -0
  117. package/dist/layerUtils.js +17 -0
  118. package/dist/logger/jsonLogger.d.ts +2 -2
  119. package/dist/logger/jsonLogger.d.ts.map +1 -1
  120. package/dist/logger/jsonLogger.js +5 -3
  121. package/dist/logger/logFmtLogger.d.ts +2 -2
  122. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  123. package/dist/logger/logFmtLogger.js +3 -3
  124. package/dist/logger/shared.d.ts +3 -3
  125. package/dist/logger/shared.d.ts.map +1 -1
  126. package/dist/logger/shared.js +5 -5
  127. package/dist/logger.d.ts +1 -1
  128. package/dist/logger.d.ts.map +1 -1
  129. package/dist/memQueue.d.ts +15 -0
  130. package/dist/memQueue.d.ts.map +1 -0
  131. package/dist/memQueue.js +21 -0
  132. package/dist/middlewares.d.ts +10 -0
  133. package/dist/middlewares.d.ts.map +1 -0
  134. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  135. package/dist/mongo-client.d.ts +11 -0
  136. package/dist/mongo-client.d.ts.map +1 -0
  137. package/dist/mongo-client.js +15 -0
  138. package/dist/otel.d.ts +75 -0
  139. package/dist/otel.d.ts.map +1 -0
  140. package/dist/otel.js +65 -0
  141. package/dist/rateLimit.d.ts +12 -4
  142. package/dist/rateLimit.d.ts.map +1 -1
  143. package/dist/rateLimit.js +7 -12
  144. package/dist/redis-client.d.ts +42 -0
  145. package/dist/redis-client.d.ts.map +1 -0
  146. package/dist/redis-client.js +98 -0
  147. package/dist/reportError.d.ts +4 -0
  148. package/dist/reportError.d.ts.map +1 -0
  149. package/dist/reportError.js +28 -0
  150. package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
  151. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  152. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  153. package/dist/routing/middleware/middleware.d.ts +48 -0
  154. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  155. package/dist/routing/middleware/middleware.js +128 -0
  156. package/dist/routing/middleware.d.ts +3 -0
  157. package/dist/routing/middleware.d.ts.map +1 -0
  158. package/dist/{api/routing → routing}/middleware.js +1 -2
  159. package/dist/routing/schema/jwt.d.ts +4 -0
  160. package/dist/routing/schema/jwt.d.ts.map +1 -0
  161. package/dist/routing/schema/jwt.js +13 -0
  162. package/dist/routing/tsort.d.ts +8 -0
  163. package/dist/routing/tsort.d.ts.map +1 -0
  164. package/dist/routing/tsort.js +51 -0
  165. package/dist/routing/utils.d.ts +19 -0
  166. package/dist/routing/utils.d.ts.map +1 -0
  167. package/dist/routing/utils.js +45 -0
  168. package/dist/routing.d.ts +184 -0
  169. package/dist/routing.d.ts.map +1 -0
  170. package/dist/routing.js +236 -0
  171. package/dist/test.d.ts +3 -3
  172. package/dist/test.d.ts.map +1 -1
  173. package/dist/test.js +2 -2
  174. package/dist/util.d.ts +3 -0
  175. package/dist/util.d.ts.map +1 -0
  176. package/dist/util.js +14 -0
  177. package/dist/vitest.d.ts +1 -1
  178. package/docs/cluster-storage.md +26 -0
  179. package/docs/workflow-engine.md +262 -0
  180. package/examples/query.ts +47 -39
  181. package/package.json +31 -345
  182. package/run.sh +1 -0
  183. package/src/CUPS.ts +52 -13
  184. package/src/ClusterCosmos.ts +954 -0
  185. package/src/ClusterServiceBus.ts +242 -0
  186. package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
  187. package/src/Emailer/Sendgrid.ts +82 -59
  188. package/src/Emailer/fake.ts +3 -3
  189. package/src/MainFiberSet.ts +12 -10
  190. package/src/QueueMaker/SQLQueue.ts +153 -156
  191. package/src/QueueMaker/errors.ts +3 -1
  192. package/src/QueueMaker/memQueue.ts +113 -107
  193. package/src/QueueMaker/sbqueue.ts +78 -90
  194. package/src/RequestFiberSet.ts +13 -8
  195. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  196. package/src/ServiceBus.ts +219 -0
  197. package/src/Store/Cosmos/query.ts +216 -52
  198. package/src/Store/Cosmos.ts +493 -353
  199. package/src/Store/Disk.ts +109 -69
  200. package/src/Store/Memory.ts +365 -96
  201. package/src/Store/SQL/Pg.ts +363 -0
  202. package/src/Store/SQL/query.ts +603 -0
  203. package/src/Store/SQL.ts +735 -0
  204. package/src/Store/codeFilter.ts +8 -5
  205. package/src/Store/index.ts +21 -6
  206. package/src/Store/utils.ts +26 -24
  207. package/src/WorkflowEngineCosmos.ts +719 -0
  208. package/src/WorkflowEngineSqlite.ts +813 -0
  209. package/src/arbs.ts +5 -3
  210. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  211. package/src/errorReporter.ts +66 -76
  212. package/src/fileUtil.ts +1 -1
  213. package/src/index.ts +2 -1
  214. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  215. package/src/internal/auth.ts +272 -0
  216. package/src/{api/internal → internal}/events.ts +22 -13
  217. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  218. package/src/logger/jsonLogger.ts +4 -2
  219. package/src/logger/logFmtLogger.ts +2 -2
  220. package/src/logger/shared.ts +5 -4
  221. package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
  222. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  223. package/src/otel.ts +152 -0
  224. package/src/rateLimit.ts +34 -23
  225. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  226. package/src/{api/reportError.ts → reportError.ts} +3 -2
  227. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  228. package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
  229. package/src/routing/middleware.ts +4 -0
  230. package/src/{api/routing → routing}/schema/jwt.ts +2 -1
  231. package/src/{api/routing → routing}/utils.ts +2 -1
  232. package/src/routing.ts +768 -0
  233. package/src/test.ts +2 -2
  234. package/test/auth.test.ts +101 -0
  235. package/test/cluster-cosmos.test.ts +503 -0
  236. package/test/cluster-servicebus.test.ts +180 -0
  237. package/test/contextProvider.test.ts +15 -12
  238. package/test/controller.test.ts +28 -32
  239. package/test/cosmos-query.test.ts +159 -0
  240. package/test/dist/_check-agg-infer.test-d.d.ts +2 -0
  241. package/test/dist/_check-agg-infer.test-d.d.ts.map +1 -0
  242. package/test/dist/_check-agg-infer.test-d.js +19 -0
  243. package/test/dist/_check-proj-infer.test-d.d.ts +2 -0
  244. package/test/dist/_check-proj-infer.test-d.d.ts.map +1 -0
  245. package/test/dist/_check-proj-infer.test-d.js +16 -0
  246. package/test/dist/_check-tighten.test-d.d.ts +2 -0
  247. package/test/dist/_check-tighten.test-d.d.ts.map +1 -0
  248. package/test/dist/_check-tighten.test-d.js +21 -0
  249. package/test/dist/auth.test.d.ts.map +1 -0
  250. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  251. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  252. package/test/dist/contextProvider.test.d.ts.map +1 -1
  253. package/test/dist/controller.test.d.ts.map +1 -1
  254. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  255. package/test/dist/date-query.test.d.ts.map +1 -0
  256. package/test/dist/fixtures.d.ts +30 -12
  257. package/test/dist/fixtures.d.ts.map +1 -1
  258. package/test/dist/fixtures.js +17 -10
  259. package/test/dist/query.test.d.ts.map +1 -1
  260. package/test/dist/rawQuery.test.d.ts.map +1 -1
  261. package/test/dist/repository-ext.test.d.ts.map +1 -0
  262. package/test/dist/requires.test.d.ts.map +1 -1
  263. package/test/dist/router-generator.test.d.ts.map +1 -0
  264. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  265. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  266. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  267. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  268. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  269. package/test/dist/sql-store.test.d.ts.map +1 -0
  270. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  271. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  272. package/test/fixtures.ts +16 -9
  273. package/test/layerUtils.test.ts +2 -2
  274. package/test/query.test.ts +905 -40
  275. package/test/rawQuery.test.ts +340 -22
  276. package/test/repository-ext.test.ts +62 -0
  277. package/test/requires.test.ts +10 -5
  278. package/test/router-generator.test.ts +187 -0
  279. package/test/routing-interruptibility.test.ts +66 -0
  280. package/test/rpc-context-map-streaming.test.ts +262 -0
  281. package/test/rpc-e2e-invalidation.test.ts +256 -0
  282. package/test/rpc-multi-middleware.test.ts +85 -10
  283. package/test/rpc-stream-fullstack.test.ts +304 -0
  284. package/test/sql-store.test.ts +1711 -0
  285. package/test/validateSample.test.ts +26 -14
  286. package/test/workflow-engine-cosmos.test.ts +354 -0
  287. package/test/workflow-engine-sqlite.test.ts +299 -0
  288. package/tsconfig.examples.json +1 -1
  289. package/tsconfig.json +2 -1
  290. package/tsconfig.json.bak +2 -2
  291. package/tsconfig.src.json +35 -35
  292. package/tsconfig.test.json +2 -2
  293. package/dist/Emailer/service.d.ts +0 -55
  294. package/dist/Emailer/service.d.ts.map +0 -1
  295. package/dist/Emailer/service.js +0 -6
  296. package/dist/Emailer.d.ts +0 -2
  297. package/dist/Emailer.d.ts.map +0 -1
  298. package/dist/Emailer.js +0 -2
  299. package/dist/Model/Repository/ext.d.ts +0 -41
  300. package/dist/Model/Repository/ext.d.ts.map +0 -1
  301. package/dist/Model/Repository/ext.js +0 -65
  302. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  303. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  304. package/dist/Model/Repository/internal/internal.js +0 -316
  305. package/dist/Model/Repository/legacy.d.ts +0 -19
  306. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  307. package/dist/Model/Repository/legacy.js +0 -2
  308. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  309. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  310. package/dist/Model/Repository/makeRepo.js +0 -24
  311. package/dist/Model/Repository/service.d.ts +0 -89
  312. package/dist/Model/Repository/service.d.ts.map +0 -1
  313. package/dist/Model/Repository/service.js +0 -2
  314. package/dist/Model/Repository/validation.d.ts +0 -42
  315. package/dist/Model/Repository/validation.d.ts.map +0 -1
  316. package/dist/Model/Repository/validation.js +0 -32
  317. package/dist/Model/Repository.d.ts +0 -6
  318. package/dist/Model/Repository.d.ts.map +0 -1
  319. package/dist/Model/Repository.js +0 -6
  320. package/dist/Model/dsl.d.ts +0 -32
  321. package/dist/Model/dsl.d.ts.map +0 -1
  322. package/dist/Model/dsl.js +0 -44
  323. package/dist/Model/filter/filterApi.d.ts +0 -30
  324. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  325. package/dist/Model/filter/filterApi.js +0 -2
  326. package/dist/Model/filter/types/errors.d.ts +0 -29
  327. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  328. package/dist/Model/filter/types/errors.js +0 -2
  329. package/dist/Model/filter/types/fields.d.ts +0 -15
  330. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  331. package/dist/Model/filter/types/fields.js +0 -2
  332. package/dist/Model/filter/types/path/common.d.ts +0 -316
  333. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  334. package/dist/Model/filter/types/path/common.js +0 -2
  335. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  336. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  337. package/dist/Model/filter/types/path/eager.js +0 -31
  338. package/dist/Model/filter/types/path/index.d.ts +0 -4
  339. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  340. package/dist/Model/filter/types/path/index.js +0 -3
  341. package/dist/Model/filter/types/utils.d.ts +0 -79
  342. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  343. package/dist/Model/filter/types/utils.js +0 -2
  344. package/dist/Model/filter/types/validator.d.ts +0 -30
  345. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  346. package/dist/Model/filter/types/validator.js +0 -2
  347. package/dist/Model/filter/types.d.ts +0 -5
  348. package/dist/Model/filter/types.d.ts.map +0 -1
  349. package/dist/Model/filter/types.js +0 -7
  350. package/dist/Model/query/dsl.d.ts +0 -248
  351. package/dist/Model/query/dsl.d.ts.map +0 -1
  352. package/dist/Model/query/dsl.js +0 -104
  353. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  354. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  355. package/dist/Model/query/new-kid-interpreter.js +0 -165
  356. package/dist/Model/query.d.ts +0 -15
  357. package/dist/Model/query.d.ts.map +0 -1
  358. package/dist/Model/query.js +0 -3
  359. package/dist/Model.d.ts +0 -4
  360. package/dist/Model.d.ts.map +0 -1
  361. package/dist/Model.js +0 -4
  362. package/dist/Operations.d.ts +0 -55
  363. package/dist/Operations.d.ts.map +0 -1
  364. package/dist/Operations.js +0 -102
  365. package/dist/OperationsRepo.d.ts +0 -41
  366. package/dist/OperationsRepo.d.ts.map +0 -1
  367. package/dist/OperationsRepo.js +0 -14
  368. package/dist/QueueMaker/service.d.ts +0 -11
  369. package/dist/QueueMaker/service.d.ts.map +0 -1
  370. package/dist/QueueMaker/service.js +0 -4
  371. package/dist/RequestContext.d.ts +0 -63
  372. package/dist/RequestContext.d.ts.map +0 -1
  373. package/dist/RequestContext.js +0 -49
  374. package/dist/Store/ContextMapContainer.d.ts +0 -14
  375. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  376. package/dist/Store/ContextMapContainer.js +0 -16
  377. package/dist/Store/service.d.ts +0 -108
  378. package/dist/Store/service.d.ts.map +0 -1
  379. package/dist/Store/service.js +0 -71
  380. package/dist/Store.d.ts +0 -2
  381. package/dist/Store.d.ts.map +0 -1
  382. package/dist/Store.js +0 -2
  383. package/dist/adapters/SQL/Model.d.ts +0 -479
  384. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  385. package/dist/adapters/SQL/Model.js +0 -478
  386. package/dist/adapters/SQL.d.ts +0 -2
  387. package/dist/adapters/SQL.d.ts.map +0 -1
  388. package/dist/adapters/ServiceBus.d.ts +0 -58
  389. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  390. package/dist/adapters/ServiceBus.js +0 -99
  391. package/dist/adapters/cosmos-client.d.ts +0 -14
  392. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  393. package/dist/adapters/cosmos-client.js +0 -9
  394. package/dist/adapters/index.d.ts +0 -2
  395. package/dist/adapters/index.d.ts.map +0 -1
  396. package/dist/adapters/index.js +0 -2
  397. package/dist/adapters/logger.d.ts +0 -9
  398. package/dist/adapters/logger.d.ts.map +0 -1
  399. package/dist/adapters/logger.js +0 -3
  400. package/dist/adapters/memQueue.d.ts +0 -13
  401. package/dist/adapters/memQueue.d.ts.map +0 -1
  402. package/dist/adapters/memQueue.js +0 -20
  403. package/dist/adapters/mongo-client.d.ts +0 -10
  404. package/dist/adapters/mongo-client.d.ts.map +0 -1
  405. package/dist/adapters/mongo-client.js +0 -13
  406. package/dist/adapters/redis-client.d.ts +0 -39
  407. package/dist/adapters/redis-client.d.ts.map +0 -1
  408. package/dist/adapters/redis-client.js +0 -94
  409. package/dist/api/ContextProvider.d.ts +0 -31
  410. package/dist/api/ContextProvider.d.ts.map +0 -1
  411. package/dist/api/ContextProvider.js +0 -38
  412. package/dist/api/codec.d.ts +0 -5
  413. package/dist/api/codec.d.ts.map +0 -1
  414. package/dist/api/codec.js +0 -5
  415. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  416. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  417. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  418. package/dist/api/internal/auth.d.ts +0 -15
  419. package/dist/api/internal/auth.d.ts.map +0 -1
  420. package/dist/api/internal/auth.js +0 -47
  421. package/dist/api/internal/events.d.ts +0 -9
  422. package/dist/api/internal/events.d.ts.map +0 -1
  423. package/dist/api/internal/events.js +0 -42
  424. package/dist/api/internal/health.d.ts +0 -3
  425. package/dist/api/internal/health.d.ts.map +0 -1
  426. package/dist/api/internal/health.js +0 -5
  427. package/dist/api/layerUtils.d.ts +0 -24
  428. package/dist/api/layerUtils.d.ts.map +0 -1
  429. package/dist/api/layerUtils.js +0 -16
  430. package/dist/api/middlewares.d.ts +0 -10
  431. package/dist/api/middlewares.d.ts.map +0 -1
  432. package/dist/api/reportError.d.ts +0 -4
  433. package/dist/api/reportError.d.ts.map +0 -1
  434. package/dist/api/reportError.js +0 -27
  435. package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
  436. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  437. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  438. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  439. package/dist/api/routing/middleware/middleware.js +0 -92
  440. package/dist/api/routing/middleware.d.ts +0 -4
  441. package/dist/api/routing/middleware.d.ts.map +0 -1
  442. package/dist/api/routing/schema/jwt.d.ts +0 -4
  443. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  444. package/dist/api/routing/schema/jwt.js +0 -12
  445. package/dist/api/routing/tsort.d.ts +0 -8
  446. package/dist/api/routing/tsort.d.ts.map +0 -1
  447. package/dist/api/routing/tsort.js +0 -51
  448. package/dist/api/routing/utils.d.ts +0 -19
  449. package/dist/api/routing/utils.d.ts.map +0 -1
  450. package/dist/api/routing/utils.js +0 -44
  451. package/dist/api/routing.d.ts +0 -138
  452. package/dist/api/routing.d.ts.map +0 -1
  453. package/dist/api/routing.js +0 -166
  454. package/dist/api/setupRequest.d.ts +0 -12
  455. package/dist/api/setupRequest.d.ts.map +0 -1
  456. package/dist/api/setupRequest.js +0 -44
  457. package/dist/api/util.d.ts +0 -3
  458. package/dist/api/util.d.ts.map +0 -1
  459. package/dist/api/util.js +0 -14
  460. package/eslint.config.mjs +0 -24
  461. package/src/Emailer/service.ts +0 -52
  462. package/src/Emailer.ts +0 -1
  463. package/src/Model/Repository/ext.ts +0 -283
  464. package/src/Model/Repository/internal/internal.ts +0 -577
  465. package/src/Model/Repository/legacy.ts +0 -27
  466. package/src/Model/Repository/makeRepo.ts +0 -139
  467. package/src/Model/Repository/service.ts +0 -627
  468. package/src/Model/Repository/validation.ts +0 -31
  469. package/src/Model/Repository.ts +0 -5
  470. package/src/Model/dsl.ts +0 -128
  471. package/src/Model/filter/filterApi.ts +0 -60
  472. package/src/Model/filter/types/errors.ts +0 -47
  473. package/src/Model/filter/types/fields.ts +0 -50
  474. package/src/Model/filter/types/path/common.ts +0 -404
  475. package/src/Model/filter/types/path/eager.ts +0 -298
  476. package/src/Model/filter/types/path/index.ts +0 -4
  477. package/src/Model/filter/types/utils.ts +0 -128
  478. package/src/Model/filter/types/validator.ts +0 -46
  479. package/src/Model/filter/types.ts +0 -6
  480. package/src/Model/query/dsl.ts +0 -2110
  481. package/src/Model/query/new-kid-interpreter.ts +0 -210
  482. package/src/Model/query.ts +0 -13
  483. package/src/Model.ts +0 -3
  484. package/src/Operations.ts +0 -235
  485. package/src/OperationsRepo.ts +0 -16
  486. package/src/QueueMaker/service.ts +0 -17
  487. package/src/RequestContext.ts +0 -63
  488. package/src/Store/ContextMapContainer.ts +0 -20
  489. package/src/Store/service.ts +0 -184
  490. package/src/Store.ts +0 -1
  491. package/src/adapters/ServiceBus.ts +0 -209
  492. package/src/adapters/index.ts +0 -0
  493. package/src/adapters/logger.ts +0 -3
  494. package/src/api/internal/auth.ts +0 -68
  495. package/src/api/routing/middleware.ts +0 -6
  496. package/src/api/routing.ts +0 -598
  497. package/src/api/setupRequest.ts +0 -84
  498. /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
  499. /package/src/{api/codec.ts → codec.ts} +0 -0
  500. /package/src/{api/internal → internal}/health.ts +0 -0
  501. /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
  502. /package/src/{api/routing → routing}/tsort.ts +0 -0
  503. /package/src/{api/util.ts → util.ts} +0 -0
@@ -0,0 +1,232 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { toNonEmptyArray } from "effect-app/Array";
3
+ import * as Effect from "effect-app/Effect";
4
+ import * as Option from "effect-app/Option";
5
+ import { storeId, StoreMaker } from "effect-app/Store";
6
+ import * as Struct from "effect/Struct";
7
+ import { SqlClient } from "effect/unstable/sql";
8
+ import { OptimisticConcurrencyException } from "../../errors.js";
9
+ import { InfraLogger } from "../../logger.js";
10
+ import { annotateDb } from "../../otel.js";
11
+ import { makeETag } from "../utils.js";
12
+ import { buildWhereSQLQuery, logQuery, pgDialect } from "./query.js";
13
+ const parseRow = (row, idKey, defaultValues) => {
14
+ const data = (typeof row.data === "string" ? JSON.parse(row.data) : row.data);
15
+ return { ...defaultValues, ...data, [idKey]: row.id, _etag: row._etag ?? undefined };
16
+ };
17
+ const parseSelectRow = (row, idKey, defaultValues) => {
18
+ const result = { ...defaultValues };
19
+ for (const [key, value] of Object.entries(row)) {
20
+ if (key === "id") {
21
+ result[idKey] = value;
22
+ result["id"] = value;
23
+ }
24
+ else {
25
+ result[key] = value;
26
+ }
27
+ }
28
+ return result;
29
+ };
30
+ const makePgStore = Effect.fnUntraced(function* ({ prefix }) {
31
+ const sql = yield* SqlClient.SqlClient;
32
+ return {
33
+ make: Effect.fnUntraced(function* (name, idKey, seed, config) {
34
+ const tableName = `${prefix}${name}`;
35
+ const defaultValues = config?.defaultValues ?? {};
36
+ const resolveNamespace = !config?.allowNamespace
37
+ ? Effect.succeed("primary")
38
+ : storeId.pipe(Effect.map((namespace) => {
39
+ if (namespace !== "primary" && !config.allowNamespace(namespace)) {
40
+ throw new Error(`Namespace ${namespace} not allowed!`);
41
+ }
42
+ return namespace;
43
+ }));
44
+ const ensureTable = sql
45
+ .unsafe(`CREATE TABLE IF NOT EXISTS "${tableName}" (id TEXT NOT NULL, _namespace TEXT NOT NULL DEFAULT 'primary', _etag TEXT, data JSONB NOT NULL, PRIMARY KEY (id, _namespace))`)
46
+ .pipe(Effect.andThen(sql.unsafe(`CREATE TABLE IF NOT EXISTS "_migrations" (id TEXT NOT NULL, version TEXT NOT NULL, PRIMARY KEY (id, version))`)), Effect.orDie, Effect.asVoid);
47
+ const toRow = (e) => {
48
+ const newE = makeETag(e);
49
+ const id = newE[idKey];
50
+ const { _etag, [idKey]: _id, ...rest } = newE;
51
+ const data = JSON.stringify(rest);
52
+ return { id, _etag: newE._etag, data, item: newE };
53
+ };
54
+ const exec = (query, params) => sql.unsafe(query, params).pipe(Effect.orDie);
55
+ const setInternal = Effect.fnUntraced(function* (e, ns) {
56
+ const row = toRow(e);
57
+ if (e._etag) {
58
+ yield* exec(`UPDATE "${tableName}" SET _etag = $1, data = $2 WHERE id = $3 AND _etag = $4 AND _namespace = $5`, [row._etag, row.data, row.id, e._etag, ns]);
59
+ const existing = yield* exec(`SELECT _etag FROM "${tableName}" WHERE id = $1 AND _namespace = $2`, [row.id, ns]);
60
+ const current = existing[0];
61
+ if (!current || current._etag !== row._etag) {
62
+ if (current) {
63
+ return yield* new OptimisticConcurrencyException({
64
+ type: name,
65
+ id: row.id,
66
+ current: current._etag,
67
+ found: e._etag,
68
+ code: 412
69
+ });
70
+ }
71
+ return yield* new OptimisticConcurrencyException({
72
+ type: name,
73
+ id: row.id,
74
+ current: "",
75
+ found: e._etag,
76
+ code: 404
77
+ });
78
+ }
79
+ }
80
+ else {
81
+ yield* exec(`INSERT INTO "${tableName}" (id, _namespace, _etag, data) VALUES ($1, $2, $3, $4)`, [row.id, ns, row._etag, row.data]);
82
+ }
83
+ return row.item;
84
+ });
85
+ const bulkSetInternal = (items, ns) => sql
86
+ .withTransaction(Effect.forEach(items, (e) => setInternal(e, ns)))
87
+ .pipe(Effect.orDie, Effect.map((_) => _));
88
+ const ctx = yield* Effect.context();
89
+ const seedCache = new Map();
90
+ const makeSeedEffect = Effect.fnUntraced(function* (ns) {
91
+ yield* ensureTable;
92
+ if (!seed)
93
+ return;
94
+ const existing = yield* exec(`SELECT id FROM "_migrations" WHERE id = $1 AND version = $2`, [`${tableName}::${ns}`, tableName]);
95
+ if (existing.length > 0)
96
+ return;
97
+ yield* InfraLogger.logInfo(`Seeding data for ${name} (namespace: ${ns})`);
98
+ const items = yield* seed.pipe(Effect.provide(ctx), Effect.orDie);
99
+ const ne = toNonEmptyArray([...items]);
100
+ if (Option.isSome(ne))
101
+ yield* bulkSetInternal(ne.value, ns);
102
+ yield* exec(`INSERT INTO "_migrations" (id, version) VALUES ($1, $2)`, [`${tableName}::${ns}`, tableName]);
103
+ });
104
+ const seedNamespace = (ns) => {
105
+ let cached = seedCache.get(ns);
106
+ if (!cached) {
107
+ cached = Effect.cached(Effect.uninterruptible(makeSeedEffect(ns))).pipe(Effect.runSync);
108
+ seedCache.set(ns, cached);
109
+ }
110
+ return cached;
111
+ };
112
+ const s = {
113
+ seedNamespace: (ns) => seedNamespace(ns),
114
+ all: resolveNamespace.pipe(Effect.flatMap((ns) => {
115
+ const sqlText = `SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = $1`;
116
+ return exec(sqlText, [ns])
117
+ .pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), annotateDb({
118
+ operation: "all",
119
+ system: "postgresql",
120
+ collection: tableName,
121
+ namespace: ns,
122
+ entity: name,
123
+ query: sqlText
124
+ }));
125
+ })),
126
+ find: (id) => resolveNamespace.pipe(Effect
127
+ .flatMap((ns) => {
128
+ const sqlText = `SELECT id, _etag, data FROM "${tableName}" WHERE id = $1 AND _namespace = $2`;
129
+ return exec(sqlText, [id, ns])
130
+ .pipe(Effect.map((rows) => {
131
+ const row = rows[0];
132
+ return row
133
+ ? Option.some(parseRow(row, idKey, defaultValues))
134
+ : Option.none();
135
+ }), annotateDb({
136
+ operation: "find",
137
+ system: "postgresql",
138
+ collection: tableName,
139
+ namespace: ns,
140
+ entity: name,
141
+ query: sqlText,
142
+ extra: { "app.entity.id": id }
143
+ }));
144
+ })),
145
+ filter: (f) => {
146
+ const filter = f
147
+ .filter;
148
+ return resolveNamespace.pipe(Effect.flatMap((ns) => Effect
149
+ .sync(() => {
150
+ const q = buildWhereSQLQuery(pgDialect, idKey, filter ? [{ t: "where-scope", result: filter, relation: "some" }] : [], tableName, defaultValues, f.select, f.order, f.skip, f.limit);
151
+ const nsPlaceholder = pgDialect.placeholder(q.params.length + 1);
152
+ const hasWhere = q.sql.includes("WHERE");
153
+ const nsSql = hasWhere
154
+ ? q.sql.replace("WHERE", `WHERE _namespace = ${nsPlaceholder} AND`)
155
+ : q.sql.replace(`FROM "${tableName}"`, `FROM "${tableName}" WHERE _namespace = ${nsPlaceholder}`);
156
+ return { sql: nsSql, params: [...q.params, ns] };
157
+ })
158
+ .pipe(Effect.tap((q) => logQuery(q)), Effect.tap((q) => Effect.annotateCurrentSpan({ "db.query.text": q.sql })), Effect.flatMap((q) => exec(q.sql, q.params).pipe(Effect.map((rows) => {
159
+ if (f.select) {
160
+ return rows.map((r) => {
161
+ const selected = parseSelectRow(r, idKey, {});
162
+ return {
163
+ ...Struct.pick(defaultValues, f.select.filter((_) => typeof _ === "string")),
164
+ ...selected
165
+ };
166
+ });
167
+ }
168
+ return rows.map((r) => parseRow(r, idKey, defaultValues));
169
+ }))), annotateDb({
170
+ operation: "filter",
171
+ system: "postgresql",
172
+ collection: tableName,
173
+ namespace: ns,
174
+ entity: name
175
+ }))));
176
+ },
177
+ set: (e) => resolveNamespace.pipe(Effect.flatMap((ns) => setInternal(e, ns).pipe(annotateDb({
178
+ operation: "set",
179
+ system: "postgresql",
180
+ collection: tableName,
181
+ namespace: ns,
182
+ entity: name,
183
+ extra: { "app.entity.id": e[idKey] }
184
+ })))),
185
+ batchSet: (items) => resolveNamespace.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(annotateDb({
186
+ operation: "batchSet",
187
+ system: "postgresql",
188
+ collection: tableName,
189
+ namespace: ns,
190
+ entity: name
191
+ })))),
192
+ bulkSet: (items) => resolveNamespace.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(annotateDb({
193
+ operation: "bulkSet",
194
+ system: "postgresql",
195
+ collection: tableName,
196
+ namespace: ns,
197
+ entity: name
198
+ })))),
199
+ batchRemove: (ids) => {
200
+ const placeholders = ids.map((_, i) => `$${i + 1}`).join(", ");
201
+ const nsPlaceholder = `$${ids.length + 1}`;
202
+ return resolveNamespace.pipe(Effect.flatMap((ns) => {
203
+ const sqlText = `DELETE FROM "${tableName}" WHERE id IN (${placeholders}) AND _namespace = ${nsPlaceholder}`;
204
+ return exec(sqlText, [...ids, ns])
205
+ .pipe(Effect.asVoid, annotateDb({
206
+ operation: "batchRemove",
207
+ system: "postgresql",
208
+ collection: tableName,
209
+ namespace: ns,
210
+ entity: name,
211
+ query: sqlText
212
+ }));
213
+ }));
214
+ },
215
+ queryRaw: (query) => s.all.pipe(Effect.map(query.memory), annotateDb({
216
+ operation: "queryRaw",
217
+ system: "postgresql",
218
+ collection: tableName,
219
+ entity: name
220
+ }))
221
+ };
222
+ // Eagerly seed primary namespace on initialization
223
+ yield* seedNamespace("primary");
224
+ return s;
225
+ })
226
+ };
227
+ });
228
+ export function PgStoreLayer(cfg) {
229
+ return StoreMaker
230
+ .toLayer(makePgStore(cfg));
231
+ }
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvU3RvcmUvU1FML1BnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUd2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUczQyxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sRUFBZ0csT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3BKLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXBFLE1BQU0sUUFBUSxHQUFHLENBQ2YsR0FBd0QsRUFDeEQsS0FBa0IsRUFDbEIsYUFBK0IsRUFDQSxFQUFFO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQVcsQ0FBQTtJQUN2RixPQUFPLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMs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
@@ -0,0 +1,49 @@
1
+ import type { NonEmptyReadonlyArray } from "effect-app/Array";
2
+ import * as Effect from "effect-app/Effect";
3
+ import type { FilterResult } from "effect-app/Model/filter/filterApi";
4
+ import type { AggregateIrExpression, ComputedProjectionIrExpression } from "effect-app/Model/query";
5
+ export interface SQLDialect {
6
+ readonly jsonExtract: (path: string) => string;
7
+ readonly jsonExtractJson: (path: string) => string;
8
+ readonly placeholder: (index: number) => string;
9
+ readonly jsonArrayContains: (arrPath: string, valPlaceholder: string) => string;
10
+ readonly jsonArrayNotContains: (arrPath: string, valPlaceholder: string) => string;
11
+ readonly jsonArrayContainsAny: (arrPath: string, valPlaceholders: readonly string[]) => string;
12
+ readonly jsonArrayNotContainsAny: (arrPath: string, valPlaceholders: readonly string[]) => string;
13
+ readonly jsonArrayContainsAll: (arrPath: string, valPlaceholders: readonly string[]) => string;
14
+ readonly jsonArrayNotContainsAll: (arrPath: string, valPlaceholders: readonly string[]) => string;
15
+ readonly caseInsensitiveLike: (expr: string, valPlaceholder: string) => string;
16
+ readonly caseInsensitiveNotLike: (expr: string, valPlaceholder: string) => string;
17
+ readonly jsonColumnType: "JSON" | "JSONB";
18
+ readonly arrayLength: (path: string) => string;
19
+ readonly jsonEachFrom: (arrPath: string, alias: string) => string;
20
+ readonly jsonExtractElement: (alias: string, subPath: string) => string;
21
+ readonly serializeJsonValue: (v: unknown) => unknown;
22
+ readonly serializeScalar: (v: unknown) => unknown;
23
+ }
24
+ export declare const sqliteDialect: SQLDialect;
25
+ export declare const pgDialect: SQLDialect;
26
+ export declare function logQuery(q: {
27
+ sql: string;
28
+ params: unknown[];
29
+ }): Effect.Effect<void, never, never>;
30
+ export declare function buildWhereSQLQuery(dialect: SQLDialect, idKey: PropertyKey, filter: readonly FilterResult[], tableName: string, defaultValues: Record<string, unknown>, select?: NonEmptyReadonlyArray<string | {
31
+ key: string;
32
+ subKeys: readonly string[];
33
+ } | {
34
+ key: string;
35
+ computed: ComputedProjectionIrExpression;
36
+ } | {
37
+ key: string;
38
+ path: string;
39
+ } | {
40
+ key: string;
41
+ aggregate: AggregateIrExpression;
42
+ }>, order?: NonEmptyReadonlyArray<{
43
+ key: string;
44
+ direction: "ASC" | "DESC";
45
+ }>, skip?: number, limit?: number, namespace?: string): {
46
+ sql: string;
47
+ params: unknown[];
48
+ };
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9TdG9yZS9TUUwvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3RCxPQUFPLEtBQUssTUFBTSxNQUFNLG1CQUFtQixDQUFBO0FBQzNDLE9BQU8sS0FBSyxFQUFXLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzlFLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLDhCQUE4QixFQUFzQyxNQUFNLHdCQUF3QixDQUFBO0FBS3ZJLE1BQU0sV0FBVyxVQUFVO0lBQ3pCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQTtJQUM5QyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUE7SUFDbEQsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFBO0lBQy9DLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUE7SUFDL0UsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQTtJQUNsRixRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLE1BQU0sRUFBRSxLQUFLLE1BQU0sQ0FBQTtJQUM5RixRQUFRLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLE1BQU0sRUFBRSxLQUFLLE1BQU0sQ0FBQTtJQUNqRyxRQUFRLENBQUMsb0JBQW9CLEVBQUUs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/Store/SQL/query.ts"],"names":[],"mappings":"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"}