@effect-app/infra 2.7.1 → 2.8.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 (480) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/_cjs/{services/CUPS.cjs → CUPS.cjs} +1 -1
  3. package/_cjs/CUPS.cjs.map +1 -0
  4. package/_cjs/{services/Emailer → Emailer}/Sendgrid.cjs +1 -1
  5. package/_cjs/Emailer/Sendgrid.cjs.map +1 -0
  6. package/_cjs/{services/Emailer → Emailer}/fake.cjs +1 -1
  7. package/_cjs/Emailer/fake.cjs.map +1 -0
  8. package/_cjs/Emailer/service.cjs.map +1 -0
  9. package/_cjs/Emailer.cjs.map +1 -0
  10. package/_cjs/{services/MainFiberSet.cjs → MainFiberSet.cjs} +1 -1
  11. package/_cjs/MainFiberSet.cjs.map +1 -0
  12. package/_cjs/{services → Model}/Repository/ext.cjs +1 -1
  13. package/_cjs/Model/Repository/ext.cjs.map +1 -0
  14. package/_cjs/{services → Model}/Repository/legacy.cjs +2 -3
  15. package/_cjs/Model/Repository/legacy.cjs.map +1 -0
  16. package/_cjs/{services/RepositoryBase.cjs → Model/Repository/makeRepo.cjs} +10 -12
  17. package/_cjs/Model/Repository/makeRepo.cjs.map +1 -0
  18. package/_cjs/Model/Repository/service.cjs.map +1 -0
  19. package/_cjs/{services → Model}/Repository.cjs +12 -10
  20. package/_cjs/Model/Repository.cjs.map +1 -0
  21. package/_cjs/Model/dsl.cjs.map +1 -0
  22. package/_cjs/Model/filter/filterApi.cjs +6 -0
  23. package/_cjs/Model/filter/filterApi.cjs.map +1 -0
  24. package/_cjs/Model/filter/types/errors.cjs.map +1 -0
  25. package/_cjs/Model/filter/types/fields.cjs.map +1 -0
  26. package/_cjs/Model/filter/types/path/common.cjs.map +1 -0
  27. package/_cjs/Model/filter/types/path/eager.cjs.map +1 -0
  28. package/_cjs/Model/filter/types/path/index.cjs.map +1 -0
  29. package/_cjs/Model/filter/types/utils.cjs.map +1 -0
  30. package/_cjs/Model/filter/types/validator.cjs.map +1 -0
  31. package/_cjs/Model/filter/types.cjs.map +1 -0
  32. package/_cjs/Model/query/dsl.cjs.map +1 -0
  33. package/_cjs/Model/query/new-kid-interpreter.cjs.map +1 -0
  34. package/_cjs/Model/query.cjs.map +1 -0
  35. package/_cjs/Model.cjs +23 -2
  36. package/_cjs/Model.cjs.map +1 -1
  37. package/_cjs/{services/Operations.cjs → Operations.cjs} +3 -3
  38. package/_cjs/Operations.cjs.map +1 -0
  39. package/_cjs/{services/OperationsRepo.cjs → OperationsRepo.cjs} +2 -2
  40. package/_cjs/OperationsRepo.cjs.map +1 -0
  41. package/_cjs/{services/QueueMaker → QueueMaker}/SQLQueue.cjs +3 -3
  42. package/_cjs/QueueMaker/SQLQueue.cjs.map +1 -0
  43. package/_cjs/QueueMaker/errors.cjs.map +1 -0
  44. package/_cjs/{services/QueueMaker → QueueMaker}/memQueue.cjs +2 -2
  45. package/_cjs/QueueMaker/memQueue.cjs.map +1 -0
  46. package/_cjs/{services/QueueMaker → QueueMaker}/sbqueue.cjs +2 -2
  47. package/_cjs/QueueMaker/sbqueue.cjs.map +1 -0
  48. package/_cjs/{services/QueueMaker → QueueMaker}/service.cjs +1 -1
  49. package/_cjs/QueueMaker/service.cjs.map +1 -0
  50. package/_cjs/{services/RequestFiberSet.cjs → RequestFiberSet.cjs} +2 -2
  51. package/_cjs/RequestFiberSet.cjs.map +1 -0
  52. package/_cjs/Store/ContextMapContainer.cjs.map +1 -0
  53. package/_cjs/{services/Store → Store}/Cosmos/query.cjs +1 -1
  54. package/_cjs/Store/Cosmos/query.cjs.map +1 -0
  55. package/_cjs/{services/Store → Store}/Cosmos.cjs +2 -2
  56. package/_cjs/Store/Cosmos.cjs.map +1 -0
  57. package/_cjs/{services/Store → Store}/Disk.cjs +1 -1
  58. package/_cjs/Store/Disk.cjs.map +1 -0
  59. package/_cjs/{services/Store → Store}/Memory.cjs +1 -1
  60. package/_cjs/Store/Memory.cjs.map +1 -0
  61. package/_cjs/Store/codeFilter.cjs.map +1 -0
  62. package/_cjs/Store/index.cjs.map +1 -0
  63. package/_cjs/Store/service.cjs.map +1 -0
  64. package/_cjs/{services/Store → Store}/utils.cjs +1 -1
  65. package/_cjs/Store/utils.cjs.map +1 -0
  66. package/_cjs/Store.cjs.map +1 -0
  67. package/_cjs/adapters/SQL/Model.cjs.map +1 -0
  68. package/_cjs/adapters/SQL.cjs.map +1 -0
  69. package/_cjs/adapters/ServiceBus.cjs.map +1 -0
  70. package/_cjs/adapters/cosmos-client.cjs.map +1 -0
  71. package/_cjs/adapters/index.cjs.map +1 -0
  72. package/_cjs/adapters/logger.cjs.map +1 -0
  73. package/_cjs/adapters/memQueue.cjs.map +1 -0
  74. package/_cjs/adapters/mongo-client.cjs.map +1 -0
  75. package/_cjs/adapters/redis-client.cjs.map +1 -0
  76. package/_cjs/api/setupRequest.cjs +2 -2
  77. package/_cjs/arbs.cjs.map +1 -0
  78. package/_cjs/logger/shared.cjs +1 -1
  79. package/_cjs/logger/shared.cjs.map +1 -1
  80. package/_cjs/test.cjs +1 -1
  81. package/dist/CUPS.d.ts.map +1 -0
  82. package/dist/CUPS.js +116 -0
  83. package/dist/Emailer/Sendgrid.d.ts.map +1 -0
  84. package/dist/Emailer/Sendgrid.js +99 -0
  85. package/dist/Emailer/fake.d.ts.map +1 -0
  86. package/dist/Emailer/fake.js +18 -0
  87. package/dist/{services/Emailer → Emailer}/service.d.ts +1 -1
  88. package/dist/Emailer/service.d.ts.map +1 -0
  89. package/dist/{services/Emailer → Emailer}/service.js +1 -1
  90. package/dist/Emailer.d.ts.map +1 -0
  91. package/dist/{services/Emailer.js → Emailer.js} +1 -1
  92. package/dist/MainFiberSet.d.ts.map +1 -0
  93. package/dist/MainFiberSet.js +54 -0
  94. package/dist/{services → Model}/Repository/ext.d.ts +12 -12
  95. package/dist/Model/Repository/ext.d.ts.map +1 -0
  96. package/dist/Model/Repository/ext.js +61 -0
  97. package/dist/{services → Model}/Repository/legacy.d.ts +54 -54
  98. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  99. package/dist/Model/Repository/legacy.js +123 -0
  100. package/dist/{services/RepositoryBase.d.ts → Model/Repository/makeRepo.d.ts} +22 -22
  101. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  102. package/dist/Model/Repository/makeRepo.js +254 -0
  103. package/dist/{services → Model}/Repository/service.d.ts +8 -8
  104. package/dist/Model/Repository/service.d.ts.map +1 -0
  105. package/dist/{services → Model}/Repository/service.js +1 -1
  106. package/dist/{services → Model}/Repository.d.ts +1 -1
  107. package/dist/Model/Repository.d.ts.map +1 -0
  108. package/dist/Model/Repository.js +5 -0
  109. package/dist/Model/dsl.d.ts.map +1 -0
  110. package/dist/Model/dsl.js +46 -0
  111. package/dist/{services/Store/filterApi/query.d.ts → Model/filter/filterApi.d.ts} +1 -1
  112. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  113. package/dist/Model/filter/filterApi.js +2 -0
  114. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  115. package/dist/{filter → Model/filter}/types/errors.js +1 -1
  116. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  117. package/dist/{filter → Model/filter}/types/fields.js +1 -1
  118. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  119. package/dist/{filter → Model/filter}/types/path/common.js +1 -1
  120. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  121. package/dist/{filter → Model/filter}/types/path/eager.js +1 -1
  122. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  123. package/dist/{filter → Model/filter}/types/path/index.js +1 -1
  124. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  125. package/dist/{filter → Model/filter}/types/utils.js +1 -1
  126. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  127. package/dist/{filter → Model/filter}/types/validator.js +1 -1
  128. package/dist/Model/filter/types.d.ts.map +1 -0
  129. package/dist/{filter → Model/filter}/types.js +1 -1
  130. package/dist/{services → Model}/query/dsl.d.ts +6 -6
  131. package/dist/Model/query/dsl.d.ts.map +1 -0
  132. package/dist/Model/query/dsl.js +95 -0
  133. package/dist/{services → Model}/query/new-kid-interpreter.d.ts +4 -4
  134. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  135. package/dist/Model/query/new-kid-interpreter.js +133 -0
  136. package/dist/Model/query.d.ts.map +1 -0
  137. package/dist/{services → Model}/query.js +1 -1
  138. package/dist/Model.d.ts +3 -1
  139. package/dist/Model.d.ts.map +1 -1
  140. package/dist/Model.js +4 -2
  141. package/dist/{services/Operations.d.ts → Operations.d.ts} +3 -3
  142. package/dist/Operations.d.ts.map +1 -0
  143. package/dist/Operations.js +102 -0
  144. package/dist/{services/OperationsRepo.d.ts → OperationsRepo.d.ts} +1 -1
  145. package/dist/OperationsRepo.d.ts.map +1 -0
  146. package/dist/OperationsRepo.js +14 -0
  147. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -0
  148. package/dist/QueueMaker/SQLQueue.js +136 -0
  149. package/dist/QueueMaker/errors.d.ts.map +1 -0
  150. package/dist/QueueMaker/errors.js +20 -0
  151. package/dist/QueueMaker/memQueue.d.ts.map +1 -0
  152. package/dist/QueueMaker/memQueue.js +78 -0
  153. package/dist/QueueMaker/sbqueue.d.ts.map +1 -0
  154. package/dist/QueueMaker/sbqueue.js +102 -0
  155. package/dist/{services/QueueMaker → QueueMaker}/service.d.ts +1 -1
  156. package/dist/QueueMaker/service.d.ts.map +1 -0
  157. package/dist/QueueMaker/service.js +4 -0
  158. package/dist/RequestFiberSet.d.ts.map +1 -0
  159. package/dist/RequestFiberSet.js +79 -0
  160. package/dist/Store/ContextMapContainer.d.ts.map +1 -0
  161. package/dist/{services/Store → Store}/ContextMapContainer.js +1 -1
  162. package/dist/{services/Store → Store}/Cosmos/query.d.ts +1 -1
  163. package/dist/Store/Cosmos/query.d.ts.map +1 -0
  164. package/dist/Store/Cosmos/query.js +164 -0
  165. package/dist/Store/Cosmos.d.ts.map +1 -0
  166. package/dist/Store/Cosmos.js +258 -0
  167. package/dist/Store/Disk.d.ts.map +1 -0
  168. package/dist/Store/Disk.js +109 -0
  169. package/dist/Store/Memory.d.ts.map +1 -0
  170. package/dist/Store/Memory.js +170 -0
  171. package/dist/{services/Store → Store}/codeFilter.d.ts +1 -1
  172. package/dist/Store/codeFilter.d.ts.map +1 -0
  173. package/dist/Store/codeFilter.js +117 -0
  174. package/dist/Store/index.d.ts.map +1 -0
  175. package/dist/Store/index.js +28 -0
  176. package/dist/{services/Store → Store}/service.d.ts +5 -5
  177. package/dist/Store/service.d.ts.map +1 -0
  178. package/dist/{services/Store → Store}/service.js +1 -1
  179. package/dist/{services/Store → Store}/utils.d.ts +1 -1
  180. package/dist/Store/utils.d.ts.map +1 -0
  181. package/dist/Store/utils.js +44 -0
  182. package/dist/Store.d.ts.map +1 -0
  183. package/dist/{services/Store.js → Store.js} +1 -1
  184. package/dist/{services/adapters → adapters}/SQL/Model.d.ts +23 -23
  185. package/dist/adapters/SQL/Model.d.ts.map +1 -0
  186. package/dist/adapters/SQL/Model.js +508 -0
  187. package/dist/adapters/SQL.d.ts.map +1 -0
  188. package/dist/{services/adapters → adapters}/SQL.js +1 -1
  189. package/dist/adapters/ServiceBus.d.ts.map +1 -0
  190. package/dist/adapters/ServiceBus.js +73 -0
  191. package/dist/adapters/cosmos-client.d.ts.map +1 -0
  192. package/dist/adapters/cosmos-client.js +8 -0
  193. package/dist/{services/adapters → adapters}/index.d.ts.map +1 -1
  194. package/dist/{services/adapters → adapters}/index.js +1 -1
  195. package/dist/adapters/logger.d.ts.map +1 -0
  196. package/dist/{services/adapters → adapters}/logger.js +1 -1
  197. package/dist/adapters/memQueue.d.ts.map +1 -0
  198. package/dist/adapters/memQueue.js +24 -0
  199. package/dist/adapters/mongo-client.d.ts.map +1 -0
  200. package/dist/adapters/mongo-client.js +12 -0
  201. package/dist/adapters/redis-client.d.ts.map +1 -0
  202. package/dist/adapters/redis-client.js +93 -0
  203. package/dist/api/setupRequest.js +3 -3
  204. package/dist/arbs.d.ts.map +1 -0
  205. package/dist/arbs.js +21 -0
  206. package/dist/logger/shared.js +2 -2
  207. package/dist/test.d.ts +1 -1
  208. package/dist/test.d.ts.map +1 -1
  209. package/dist/test.js +3 -3
  210. package/examples/query.ts +3 -3
  211. package/package.json +352 -362
  212. package/src/{services/CUPS.ts → CUPS.ts} +1 -1
  213. package/src/{services/Emailer → Emailer}/Sendgrid.ts +1 -1
  214. package/src/{services/Emailer → Emailer}/fake.ts +1 -1
  215. package/src/{services/MainFiberSet.ts → MainFiberSet.ts} +1 -1
  216. package/src/{services → Model}/Repository/ext.ts +23 -11
  217. package/src/{services → Model}/Repository/legacy.ts +76 -49
  218. package/src/{services/RepositoryBase.ts → Model/Repository/makeRepo.ts} +40 -38
  219. package/src/{services → Model}/Repository/service.ts +9 -8
  220. package/src/{services → Model}/Repository.ts +1 -1
  221. package/src/{services → Model}/query/dsl.ts +24 -6
  222. package/src/{services → Model}/query/new-kid-interpreter.ts +3 -3
  223. package/src/Model.ts +3 -1
  224. package/src/{services/Operations.ts → Operations.ts} +3 -3
  225. package/src/{services/OperationsRepo.ts → OperationsRepo.ts} +1 -1
  226. package/src/{services/QueueMaker → QueueMaker}/SQLQueue.ts +4 -4
  227. package/src/{services/QueueMaker → QueueMaker}/memQueue.ts +2 -2
  228. package/src/{services/QueueMaker → QueueMaker}/sbqueue.ts +2 -2
  229. package/src/{services/QueueMaker → QueueMaker}/service.ts +1 -1
  230. package/src/{services/RequestFiberSet.ts → RequestFiberSet.ts} +2 -2
  231. package/src/{services/Store → Store}/Cosmos/query.ts +2 -2
  232. package/src/{services/Store → Store}/Cosmos.ts +2 -2
  233. package/src/{services/Store → Store}/Disk.ts +1 -1
  234. package/src/{services/Store → Store}/Memory.ts +1 -1
  235. package/src/{services/Store → Store}/codeFilter.ts +1 -1
  236. package/src/{services/Store → Store}/service.ts +4 -4
  237. package/src/{services/Store → Store}/utils.ts +1 -1
  238. package/src/api/setupRequest.ts +2 -2
  239. package/src/logger/shared.ts +1 -1
  240. package/src/test.ts +2 -2
  241. package/test/dist/query.test.d.ts.map +1 -1
  242. package/test/query.test.ts +32 -5
  243. package/_cjs/_ext/Array.cjs +0 -22
  244. package/_cjs/_ext/Array.cjs.map +0 -1
  245. package/_cjs/filter/types/errors.cjs.map +0 -1
  246. package/_cjs/filter/types/fields.cjs.map +0 -1
  247. package/_cjs/filter/types/path/common.cjs.map +0 -1
  248. package/_cjs/filter/types/path/eager.cjs.map +0 -1
  249. package/_cjs/filter/types/path/index.cjs.map +0 -1
  250. package/_cjs/filter/types/utils.cjs.map +0 -1
  251. package/_cjs/filter/types/validator.cjs.map +0 -1
  252. package/_cjs/filter/types.cjs.map +0 -1
  253. package/_cjs/services/CUPS.cjs.map +0 -1
  254. package/_cjs/services/Emailer/Sendgrid.cjs.map +0 -1
  255. package/_cjs/services/Emailer/fake.cjs.map +0 -1
  256. package/_cjs/services/Emailer/service.cjs.map +0 -1
  257. package/_cjs/services/Emailer.cjs.map +0 -1
  258. package/_cjs/services/MainFiberSet.cjs.map +0 -1
  259. package/_cjs/services/Operations.cjs.map +0 -1
  260. package/_cjs/services/OperationsRepo.cjs.map +0 -1
  261. package/_cjs/services/QueueMaker/SQLQueue.cjs.map +0 -1
  262. package/_cjs/services/QueueMaker/errors.cjs.map +0 -1
  263. package/_cjs/services/QueueMaker/memQueue.cjs.map +0 -1
  264. package/_cjs/services/QueueMaker/sbqueue.cjs.map +0 -1
  265. package/_cjs/services/QueueMaker/service.cjs.map +0 -1
  266. package/_cjs/services/Repository/dsl.cjs.map +0 -1
  267. package/_cjs/services/Repository/ext.cjs.map +0 -1
  268. package/_cjs/services/Repository/legacy.cjs.map +0 -1
  269. package/_cjs/services/Repository/service.cjs.map +0 -1
  270. package/_cjs/services/Repository.cjs.map +0 -1
  271. package/_cjs/services/RepositoryBase.cjs.map +0 -1
  272. package/_cjs/services/RequestFiberSet.cjs.map +0 -1
  273. package/_cjs/services/Store/ContextMapContainer.cjs.map +0 -1
  274. package/_cjs/services/Store/Cosmos/query.cjs.map +0 -1
  275. package/_cjs/services/Store/Cosmos.cjs.map +0 -1
  276. package/_cjs/services/Store/Disk.cjs.map +0 -1
  277. package/_cjs/services/Store/Memory.cjs.map +0 -1
  278. package/_cjs/services/Store/codeFilter.cjs.map +0 -1
  279. package/_cjs/services/Store/filterApi/query.cjs +0 -6
  280. package/_cjs/services/Store/filterApi/query.cjs.map +0 -1
  281. package/_cjs/services/Store/index.cjs.map +0 -1
  282. package/_cjs/services/Store/service.cjs.map +0 -1
  283. package/_cjs/services/Store/utils.cjs.map +0 -1
  284. package/_cjs/services/Store.cjs.map +0 -1
  285. package/_cjs/services/adapters/SQL/Model.cjs.map +0 -1
  286. package/_cjs/services/adapters/SQL.cjs.map +0 -1
  287. package/_cjs/services/adapters/ServiceBus.cjs.map +0 -1
  288. package/_cjs/services/adapters/cosmos-client.cjs.map +0 -1
  289. package/_cjs/services/adapters/index.cjs.map +0 -1
  290. package/_cjs/services/adapters/logger.cjs.map +0 -1
  291. package/_cjs/services/adapters/memQueue.cjs.map +0 -1
  292. package/_cjs/services/adapters/mongo-client.cjs.map +0 -1
  293. package/_cjs/services/adapters/redis-client.cjs.map +0 -1
  294. package/_cjs/services/query/dsl.cjs.map +0 -1
  295. package/_cjs/services/query/new-kid-interpreter.cjs.map +0 -1
  296. package/_cjs/services/query.cjs.map +0 -1
  297. package/_cjs/test/arbs.cjs.map +0 -1
  298. package/dist/_ext/Array.d.ts +0 -13
  299. package/dist/_ext/Array.d.ts.map +0 -1
  300. package/dist/_ext/Array.js +0 -15
  301. package/dist/filter/types/errors.d.ts.map +0 -1
  302. package/dist/filter/types/fields.d.ts.map +0 -1
  303. package/dist/filter/types/path/common.d.ts.map +0 -1
  304. package/dist/filter/types/path/eager.d.ts.map +0 -1
  305. package/dist/filter/types/path/index.d.ts.map +0 -1
  306. package/dist/filter/types/utils.d.ts.map +0 -1
  307. package/dist/filter/types/validator.d.ts.map +0 -1
  308. package/dist/filter/types.d.ts.map +0 -1
  309. package/dist/services/CUPS.d.ts.map +0 -1
  310. package/dist/services/CUPS.js +0 -116
  311. package/dist/services/Emailer/Sendgrid.d.ts.map +0 -1
  312. package/dist/services/Emailer/Sendgrid.js +0 -99
  313. package/dist/services/Emailer/fake.d.ts.map +0 -1
  314. package/dist/services/Emailer/fake.js +0 -18
  315. package/dist/services/Emailer/service.d.ts.map +0 -1
  316. package/dist/services/Emailer.d.ts.map +0 -1
  317. package/dist/services/MainFiberSet.d.ts.map +0 -1
  318. package/dist/services/MainFiberSet.js +0 -54
  319. package/dist/services/Operations.d.ts.map +0 -1
  320. package/dist/services/Operations.js +0 -102
  321. package/dist/services/OperationsRepo.d.ts.map +0 -1
  322. package/dist/services/OperationsRepo.js +0 -14
  323. package/dist/services/QueueMaker/SQLQueue.d.ts.map +0 -1
  324. package/dist/services/QueueMaker/SQLQueue.js +0 -136
  325. package/dist/services/QueueMaker/errors.d.ts.map +0 -1
  326. package/dist/services/QueueMaker/errors.js +0 -20
  327. package/dist/services/QueueMaker/memQueue.d.ts.map +0 -1
  328. package/dist/services/QueueMaker/memQueue.js +0 -78
  329. package/dist/services/QueueMaker/sbqueue.d.ts.map +0 -1
  330. package/dist/services/QueueMaker/sbqueue.js +0 -102
  331. package/dist/services/QueueMaker/service.d.ts.map +0 -1
  332. package/dist/services/QueueMaker/service.js +0 -4
  333. package/dist/services/Repository/dsl.d.ts.map +0 -1
  334. package/dist/services/Repository/dsl.js +0 -46
  335. package/dist/services/Repository/ext.d.ts.map +0 -1
  336. package/dist/services/Repository/ext.js +0 -61
  337. package/dist/services/Repository/legacy.d.ts.map +0 -1
  338. package/dist/services/Repository/legacy.js +0 -124
  339. package/dist/services/Repository/service.d.ts.map +0 -1
  340. package/dist/services/Repository.d.ts.map +0 -1
  341. package/dist/services/Repository.js +0 -5
  342. package/dist/services/RepositoryBase.d.ts.map +0 -1
  343. package/dist/services/RepositoryBase.js +0 -256
  344. package/dist/services/RequestFiberSet.d.ts.map +0 -1
  345. package/dist/services/RequestFiberSet.js +0 -79
  346. package/dist/services/Store/ContextMapContainer.d.ts.map +0 -1
  347. package/dist/services/Store/Cosmos/query.d.ts.map +0 -1
  348. package/dist/services/Store/Cosmos/query.js +0 -164
  349. package/dist/services/Store/Cosmos.d.ts.map +0 -1
  350. package/dist/services/Store/Cosmos.js +0 -258
  351. package/dist/services/Store/Disk.d.ts.map +0 -1
  352. package/dist/services/Store/Disk.js +0 -109
  353. package/dist/services/Store/Memory.d.ts.map +0 -1
  354. package/dist/services/Store/Memory.js +0 -170
  355. package/dist/services/Store/codeFilter.d.ts.map +0 -1
  356. package/dist/services/Store/codeFilter.js +0 -117
  357. package/dist/services/Store/filterApi/query.d.ts.map +0 -1
  358. package/dist/services/Store/filterApi/query.js +0 -2
  359. package/dist/services/Store/index.d.ts.map +0 -1
  360. package/dist/services/Store/index.js +0 -28
  361. package/dist/services/Store/service.d.ts.map +0 -1
  362. package/dist/services/Store/utils.d.ts.map +0 -1
  363. package/dist/services/Store/utils.js +0 -44
  364. package/dist/services/Store.d.ts.map +0 -1
  365. package/dist/services/adapters/SQL/Model.d.ts.map +0 -1
  366. package/dist/services/adapters/SQL/Model.js +0 -508
  367. package/dist/services/adapters/SQL.d.ts.map +0 -1
  368. package/dist/services/adapters/ServiceBus.d.ts.map +0 -1
  369. package/dist/services/adapters/ServiceBus.js +0 -73
  370. package/dist/services/adapters/cosmos-client.d.ts.map +0 -1
  371. package/dist/services/adapters/cosmos-client.js +0 -8
  372. package/dist/services/adapters/logger.d.ts.map +0 -1
  373. package/dist/services/adapters/memQueue.d.ts.map +0 -1
  374. package/dist/services/adapters/memQueue.js +0 -24
  375. package/dist/services/adapters/mongo-client.d.ts.map +0 -1
  376. package/dist/services/adapters/mongo-client.js +0 -12
  377. package/dist/services/adapters/redis-client.d.ts.map +0 -1
  378. package/dist/services/adapters/redis-client.js +0 -93
  379. package/dist/services/query/dsl.d.ts.map +0 -1
  380. package/dist/services/query/dsl.js +0 -95
  381. package/dist/services/query/new-kid-interpreter.d.ts.map +0 -1
  382. package/dist/services/query/new-kid-interpreter.js +0 -133
  383. package/dist/services/query.d.ts.map +0 -1
  384. package/dist/test/arbs.d.ts.map +0 -1
  385. package/dist/test/arbs.js +0 -21
  386. package/src/_ext/Array.ts +0 -22
  387. /package/_cjs/{services/Emailer → Emailer}/service.cjs +0 -0
  388. /package/_cjs/{services/Emailer.cjs → Emailer.cjs} +0 -0
  389. /package/_cjs/{services → Model}/Repository/service.cjs +0 -0
  390. /package/_cjs/{services/Repository → Model}/dsl.cjs +0 -0
  391. /package/_cjs/{filter → Model/filter}/types/errors.cjs +0 -0
  392. /package/_cjs/{filter → Model/filter}/types/fields.cjs +0 -0
  393. /package/_cjs/{filter → Model/filter}/types/path/common.cjs +0 -0
  394. /package/_cjs/{filter → Model/filter}/types/path/eager.cjs +0 -0
  395. /package/_cjs/{filter → Model/filter}/types/path/index.cjs +0 -0
  396. /package/_cjs/{filter → Model/filter}/types/utils.cjs +0 -0
  397. /package/_cjs/{filter → Model/filter}/types/validator.cjs +0 -0
  398. /package/_cjs/{filter → Model/filter}/types.cjs +0 -0
  399. /package/_cjs/{services → Model}/query/dsl.cjs +0 -0
  400. /package/_cjs/{services → Model}/query/new-kid-interpreter.cjs +0 -0
  401. /package/_cjs/{services → Model}/query.cjs +0 -0
  402. /package/_cjs/{services/QueueMaker → QueueMaker}/errors.cjs +0 -0
  403. /package/_cjs/{services/Store → Store}/ContextMapContainer.cjs +0 -0
  404. /package/_cjs/{services/Store → Store}/codeFilter.cjs +0 -0
  405. /package/_cjs/{services/Store → Store}/index.cjs +0 -0
  406. /package/_cjs/{services/Store → Store}/service.cjs +0 -0
  407. /package/_cjs/{services/Store.cjs → Store.cjs} +0 -0
  408. /package/_cjs/{services/adapters → adapters}/SQL/Model.cjs +0 -0
  409. /package/_cjs/{services/adapters → adapters}/SQL.cjs +0 -0
  410. /package/_cjs/{services/adapters → adapters}/ServiceBus.cjs +0 -0
  411. /package/_cjs/{services/adapters → adapters}/cosmos-client.cjs +0 -0
  412. /package/_cjs/{services/adapters → adapters}/index.cjs +0 -0
  413. /package/_cjs/{services/adapters → adapters}/logger.cjs +0 -0
  414. /package/_cjs/{services/adapters → adapters}/memQueue.cjs +0 -0
  415. /package/_cjs/{services/adapters → adapters}/mongo-client.cjs +0 -0
  416. /package/_cjs/{services/adapters → adapters}/redis-client.cjs +0 -0
  417. /package/_cjs/{test/arbs.cjs → arbs.cjs} +0 -0
  418. /package/dist/{services/CUPS.d.ts → CUPS.d.ts} +0 -0
  419. /package/dist/{services/Emailer → Emailer}/Sendgrid.d.ts +0 -0
  420. /package/dist/{services/Emailer → Emailer}/fake.d.ts +0 -0
  421. /package/dist/{services/Emailer.d.ts → Emailer.d.ts} +0 -0
  422. /package/dist/{services/MainFiberSet.d.ts → MainFiberSet.d.ts} +0 -0
  423. /package/dist/{services/Repository → Model}/dsl.d.ts +0 -0
  424. /package/dist/{filter → Model/filter}/types/errors.d.ts +0 -0
  425. /package/dist/{filter → Model/filter}/types/fields.d.ts +0 -0
  426. /package/dist/{filter → Model/filter}/types/path/common.d.ts +0 -0
  427. /package/dist/{filter → Model/filter}/types/path/eager.d.ts +0 -0
  428. /package/dist/{filter → Model/filter}/types/path/index.d.ts +0 -0
  429. /package/dist/{filter → Model/filter}/types/utils.d.ts +0 -0
  430. /package/dist/{filter → Model/filter}/types/validator.d.ts +0 -0
  431. /package/dist/{filter → Model/filter}/types.d.ts +0 -0
  432. /package/dist/{services → Model}/query.d.ts +0 -0
  433. /package/dist/{services/QueueMaker → QueueMaker}/SQLQueue.d.ts +0 -0
  434. /package/dist/{services/QueueMaker → QueueMaker}/errors.d.ts +0 -0
  435. /package/dist/{services/QueueMaker → QueueMaker}/memQueue.d.ts +0 -0
  436. /package/dist/{services/QueueMaker → QueueMaker}/sbqueue.d.ts +0 -0
  437. /package/dist/{services/RequestFiberSet.d.ts → RequestFiberSet.d.ts} +0 -0
  438. /package/dist/{services/Store → Store}/ContextMapContainer.d.ts +0 -0
  439. /package/dist/{services/Store → Store}/Cosmos.d.ts +0 -0
  440. /package/dist/{services/Store → Store}/Disk.d.ts +0 -0
  441. /package/dist/{services/Store → Store}/Memory.d.ts +0 -0
  442. /package/dist/{services/Store → Store}/index.d.ts +0 -0
  443. /package/dist/{services/Store.d.ts → Store.d.ts} +0 -0
  444. /package/dist/{services/adapters → adapters}/SQL.d.ts +0 -0
  445. /package/dist/{services/adapters → adapters}/ServiceBus.d.ts +0 -0
  446. /package/dist/{services/adapters → adapters}/cosmos-client.d.ts +0 -0
  447. /package/dist/{services/adapters → adapters}/index.d.ts +0 -0
  448. /package/dist/{services/adapters → adapters}/logger.d.ts +0 -0
  449. /package/dist/{services/adapters → adapters}/memQueue.d.ts +0 -0
  450. /package/dist/{services/adapters → adapters}/mongo-client.d.ts +0 -0
  451. /package/dist/{services/adapters → adapters}/redis-client.d.ts +0 -0
  452. /package/dist/{test/arbs.d.ts → arbs.d.ts} +0 -0
  453. /package/src/{services/Emailer → Emailer}/service.ts +0 -0
  454. /package/src/{services/Emailer.ts → Emailer.ts} +0 -0
  455. /package/src/{services/Repository → Model}/dsl.ts +0 -0
  456. /package/src/{services/Store/filterApi/query.ts → Model/filter/filterApi.ts} +0 -0
  457. /package/src/{filter → Model/filter}/types/errors.ts +0 -0
  458. /package/src/{filter → Model/filter}/types/fields.ts +0 -0
  459. /package/src/{filter → Model/filter}/types/path/common.ts +0 -0
  460. /package/src/{filter → Model/filter}/types/path/eager.ts +0 -0
  461. /package/src/{filter → Model/filter}/types/path/index.ts +0 -0
  462. /package/src/{filter → Model/filter}/types/utils.ts +0 -0
  463. /package/src/{filter → Model/filter}/types/validator.ts +0 -0
  464. /package/src/{filter → Model/filter}/types.ts +0 -0
  465. /package/src/{services → Model}/query.ts +0 -0
  466. /package/src/{services/QueueMaker → QueueMaker}/errors.ts +0 -0
  467. /package/src/{services/Store → Store}/ContextMapContainer.ts +0 -0
  468. /package/src/{services/Store → Store}/index.test.ts.bak +0 -0
  469. /package/src/{services/Store → Store}/index.ts +0 -0
  470. /package/src/{services/Store.ts → Store.ts} +0 -0
  471. /package/src/{services/adapters → adapters}/SQL/Model.ts +0 -0
  472. /package/src/{services/adapters → adapters}/SQL.ts +0 -0
  473. /package/src/{services/adapters → adapters}/ServiceBus.ts +0 -0
  474. /package/src/{services/adapters → adapters}/cosmos-client.ts +0 -0
  475. /package/src/{services/adapters → adapters}/index.ts +0 -0
  476. /package/src/{services/adapters → adapters}/logger.ts +0 -0
  477. /package/src/{services/adapters → adapters}/memQueue.ts +0 -0
  478. /package/src/{services/adapters → adapters}/mongo-client.ts +0 -0
  479. /package/src/{services/adapters → adapters}/redis-client.ts +0 -0
  480. /package/src/{test/arbs.ts → arbs.ts} +0 -0
@@ -0,0 +1,170 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Array, Effect, FiberRef, flow, Option, Order, pipe, Ref, Struct } from "effect-app";
3
+ import { NonEmptyString255 } from "effect-app/Schema";
4
+ import { get } from "effect-app/utils";
5
+ import { InfraLogger } from "../logger.js";
6
+ import { codeFilter } from "./codeFilter.js";
7
+ import { StoreMaker } from "./service.js";
8
+ import { makeUpdateETag } from "./utils.js";
9
+ export function memFilter(f) {
10
+ return ((c) => {
11
+ const select = (r) => (f.select ? r.map(Struct.pick(...f.select)) : r);
12
+ const skip = f?.skip;
13
+ const limit = f?.limit;
14
+ const ords = Option.map(Option.fromNullable(f.order), (_) => _.map((_) => Order.make((self, that) => {
15
+ // TODO: inspect data types for the right comparison?
16
+ const selfV = get(self, _.key) ?? false;
17
+ const thatV = get(that, _.key) ?? false;
18
+ if (selfV === thatV) {
19
+ return 0;
20
+ }
21
+ if (_.direction === "ASC") {
22
+ return selfV < thatV ? -1 : 1;
23
+ }
24
+ return selfV < thatV ? 1 : -1;
25
+ })));
26
+ if (Option.isSome(ords)) {
27
+ c = Array.sortBy(...ords.value)(c);
28
+ }
29
+ if (!skip && limit === 1) {
30
+ return select(Array.findFirst(c, f.filter ? codeFilter(f.filter) : (_) => Option.some(_)).pipe(Option.map(Array.make), Option.getOrElse(() => [])));
31
+ }
32
+ let r = f.filter ? Array.filterMap(c, codeFilter(f.filter)) : c;
33
+ if (skip) {
34
+ r = Array.drop(r, skip);
35
+ }
36
+ if (limit !== undefined) {
37
+ r = Array.take(r, limit);
38
+ }
39
+ return select(r);
40
+ });
41
+ }
42
+ const defaultNs = NonEmptyString255("primary");
43
+ export const storeId = FiberRef.unsafeMake(defaultNs);
44
+ function logQuery(f, defaultValues) {
45
+ return InfraLogger
46
+ .logDebug("mem query")
47
+ .pipe(Effect.annotateLogs({
48
+ filter: JSON.stringify(f.filter, undefined, 2),
49
+ order: JSON.stringify(f.order, undefined, 2),
50
+ select: JSON.stringify(f.select, undefined, 2),
51
+ defaultValues: JSON.stringify(defaultValues, undefined, 2),
52
+ skip: f.skip,
53
+ limit: f.limit
54
+ }));
55
+ }
56
+ export function makeMemoryStoreInt(modelName, namespace, seed, _defaultValues) {
57
+ return Effect.gen(function* () {
58
+ const updateETag = makeUpdateETag(modelName);
59
+ const items_ = yield* seed ?? Effect.sync(() => []);
60
+ const defaultValues = _defaultValues ?? {};
61
+ const items = new Map([...items_].map((_) => [_.id, { _etag: undefined, ...defaultValues, ..._ }]));
62
+ const store = Ref.unsafeMake(items);
63
+ const sem = Effect.unsafeMakeSemaphore(1);
64
+ const withPermit = sem.withPermits(1);
65
+ const values = Effect.map(Ref.get(store), (s) => s.values());
66
+ const all = Effect.map(values, Array.fromIterable);
67
+ const batchSet = (items) => Effect
68
+ .forEach(items, (i) => Effect.flatMap(s.find(i.id), (current) => updateETag(i, current)))
69
+ .pipe(Effect
70
+ .tap((items) => Ref
71
+ .get(store)
72
+ .pipe(Effect
73
+ .map((m) => {
74
+ const mut = m;
75
+ items.forEach((e) => mut.set(e.id, e));
76
+ return mut;
77
+ }), Effect
78
+ .flatMap((_) => Ref.set(store, _)))), Effect
79
+ .map((_) => _), withPermit);
80
+ const s = {
81
+ all: all.pipe(Effect.withSpan("Memory.all [effect-app/infra/Store]", {
82
+ captureStackTrace: false,
83
+ attributes: {
84
+ modelName,
85
+ namespace
86
+ }
87
+ })),
88
+ find: (id) => Ref
89
+ .get(store)
90
+ .pipe(Effect.map((_) => Option.fromNullable(_.get(id))), Effect
91
+ .withSpan("Memory.find [effect-app/infra/Store]", {
92
+ captureStackTrace: false,
93
+ attributes: {
94
+ modelName,
95
+ namespace
96
+ }
97
+ })),
98
+ filter: (f) => all
99
+ .pipe(Effect.tap(() => logQuery(f, defaultValues)), Effect.map(memFilter(f)), Effect.withSpan("Memory.filter [effect-app/infra/Store]", {
100
+ captureStackTrace: false,
101
+ attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
102
+ })),
103
+ set: (e) => s
104
+ .find(e.id)
105
+ .pipe(Effect.flatMap((current) => updateETag(e, current)), Effect
106
+ .tap((e) => Ref.get(store).pipe(Effect.map((_) => new Map([..._, [e.id, e]])), Effect.flatMap((_) => Ref.set(store, _)))), withPermit, Effect
107
+ .withSpan("Memory.set [effect-app/infra/Store]", {
108
+ captureStackTrace: false,
109
+ attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
110
+ })),
111
+ batchSet: (items) => pipe(Effect
112
+ .sync(() => items)
113
+ // align with CosmosDB
114
+ .pipe(Effect.filterOrDieMessage((_) => _.length <= 100, "BatchSet: a batch may not exceed 100 items"), Effect.andThen(batchSet), Effect
115
+ .withSpan("Memory.batchSet [effect-app/infra/Store]", {
116
+ captureStackTrace: false,
117
+ attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
118
+ }))),
119
+ bulkSet: flow(batchSet, (_) => _.pipe(Effect.withSpan("Memory.bulkSet [effect-app/infra/Store]", {
120
+ captureStackTrace: false,
121
+ attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
122
+ }))),
123
+ remove: (e) => Ref
124
+ .get(store)
125
+ .pipe(Effect.map((_) => new Map([..._].filter(([_]) => _ !== e.id))), Effect.flatMap((_) => Ref.set(store, _)), withPermit, Effect.withSpan("Memory.remove [effect-app/infra/Store]", {
126
+ captureStackTrace: false,
127
+ attributes: { "repository.model_name": modelName, "repository.namespace": namespace }
128
+ }))
129
+ };
130
+ return s;
131
+ });
132
+ }
133
+ export const makeMemoryStore = () => ({
134
+ make: (modelName, seed, config) => Effect.gen(function* () {
135
+ const storesSem = Effect.unsafeMakeSemaphore(1);
136
+ const primary = yield* makeMemoryStoreInt(modelName, "primary", seed, config?.defaultValues);
137
+ const ctx = yield* Effect.context();
138
+ const stores = new Map([["primary", primary]]);
139
+ const getStore = !config?.allowNamespace
140
+ ? Effect.succeed(primary)
141
+ : FiberRef.get(storeId).pipe(Effect.flatMap((namespace) => {
142
+ const store = stores.get(namespace);
143
+ if (store) {
144
+ return Effect.succeed(store);
145
+ }
146
+ if (!config.allowNamespace(namespace)) {
147
+ throw new Error(`Namespace ${namespace} not allowed!`);
148
+ }
149
+ return storesSem.withPermits(1)(Effect.suspend(() => {
150
+ const store = stores.get(namespace);
151
+ if (store)
152
+ return Effect.sync(() => store);
153
+ return makeMemoryStoreInt(modelName, namespace, seed, config?.defaultValues)
154
+ .pipe(Effect.orDie, Effect.provide(ctx), Effect.tap((store) => Effect.sync(() => stores.set(namespace, store))));
155
+ }));
156
+ }));
157
+ const s = {
158
+ all: Effect.flatMap(getStore, (_) => _.all),
159
+ find: (...args) => Effect.flatMap(getStore, (_) => _.find(...args)),
160
+ filter: (...args) => Effect.flatMap(getStore, (_) => _.filter(...args)),
161
+ set: (...args) => Effect.flatMap(getStore, (_) => _.set(...args)),
162
+ batchSet: (...args) => Effect.flatMap(getStore, (_) => _.batchSet(...args)),
163
+ bulkSet: (...args) => Effect.flatMap(getStore, (_) => _.bulkSet(...args)),
164
+ remove: (...args) => Effect.flatMap(getStore, (_) => _.remove(...args))
165
+ };
166
+ return s;
167
+ })
168
+ });
169
+ export const MemoryStoreLive = StoreMaker.toLayer(Effect.sync(() => makeMemoryStore()));
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL01lbW9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTVGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0MsTUFBTSxVQUFVLFNBQVMsQ0FBc0QsQ0FBbUI7SUFFaEcsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFPLEVBQUU7UUFDdEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFNLEVBQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUSxDQUFBO1FBQ3ZGLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUE7UUFDcEIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQTtRQUN0QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFD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
@@ -1,5 +1,5 @@
1
1
  import { Option } from "effect-app";
2
- import type { FilterR, FilterResult } from "./filterApi/query.js";
2
+ import type { FilterR, FilterResult } from "../Model/filter/filterApi.js";
3
3
  import type { Filter } from "./service.js";
4
4
  export declare const codeFilterStatement: <E>(p: FilterR, x: E) => boolean;
5
5
  export declare const codeFilter3: <E>(state: readonly FilterResult[]) => (sut: E) => boolean;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeFilter.d.ts","sourceRoot":"","sources":["../../src/Store/codeFilter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,MAAM,EAAE,MAAM,YAAY,CAAA;AAE1C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAK1C,eAAO,MAAM,mBAAmB,GAAI,CAAC,KAAK,OAAO,KAAK,CAAC,YAwDtD,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,YAAY,EAAE,WAAW,CAAC,YAA6B,CAAA;AAgDtG,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,SAAS,YAAY,EAAE,OAAO,CAAC,KAAG,OAIxE,CAAA;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,OACpE,CAAC,uCACb"}
@@ -0,0 +1,117 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
3
+ import { Array, Option } from "effect-app";
4
+ import { assertUnreachable, get } from "effect-app/utils";
5
+ import { compare, greaterThan, greaterThanExclusive, lowerThan, lowerThanExclusive } from "./utils.js";
6
+ const vAsArr = (v) => v;
7
+ export const codeFilterStatement = (p, x) => {
8
+ const k = get(x, p.path);
9
+ switch (p.op) {
10
+ case "in":
11
+ return p.value.includes(k);
12
+ case "notIn":
13
+ return !p.value.includes(k);
14
+ case "lt":
15
+ return lowerThan(k, p.value);
16
+ case "lte":
17
+ return lowerThanExclusive(k, p.value);
18
+ case "gt":
19
+ return greaterThan(k, p.value);
20
+ case "gte":
21
+ return greaterThanExclusive(k, p.value);
22
+ case "includes":
23
+ return k.includes(p.value);
24
+ case "notIncludes":
25
+ return !k.includes(p.value);
26
+ case "includes-any":
27
+ return (vAsArr(p.value)).some((_) => k?.includes(_));
28
+ case "notIncludes-any":
29
+ return !(vAsArr(p.value)).some((_) => k?.includes(_));
30
+ case "includes-all":
31
+ return (vAsArr(p.value)).every((_) => k?.includes(_));
32
+ case "notIncludes-all":
33
+ return !(vAsArr(p.value)).every((_) => k?.includes(_));
34
+ case "contains":
35
+ return k.toLowerCase().includes(p.value.toLowerCase());
36
+ case "endsWith":
37
+ return k.toLowerCase().endsWith(p.value.toLowerCase());
38
+ case "startsWith":
39
+ return k.toLowerCase().startsWith(p.value.toLowerCase());
40
+ case "notContains":
41
+ return !k.toLowerCase().includes(p.value.toLowerCase());
42
+ case "notEndsWith":
43
+ return !k.toLowerCase().endsWith(p.value.toLowerCase());
44
+ case "notStartsWith":
45
+ return !k.toLowerCase().startsWith(p.value.toLowerCase());
46
+ case "neq":
47
+ return p.path.includes(".-1.")
48
+ ? get(x, p.path.split(".-1.")[0])
49
+ // TODO: or vs and
50
+ .every((_) => !compare(get(_, p.path.split(".-1.")[1]), p.value))
51
+ : !compare(k, p.value);
52
+ case "eq":
53
+ case undefined:
54
+ return p.path.includes(".-1.")
55
+ ? get(x, p.path.split(".-1.")[0])
56
+ // TODO: or vs and
57
+ .some((_) => compare(get(_, p.path.split(".-1.")[1]), p.value))
58
+ : compare(k, p.value);
59
+ default: {
60
+ return assertUnreachable(p.op);
61
+ }
62
+ }
63
+ };
64
+ export const codeFilter3 = (state) => (sut) => codeFilter3_(state, sut);
65
+ const codeFilter3__ = (state, sut, statements) => {
66
+ let s = "";
67
+ let l = 0;
68
+ const printN = (n) => {
69
+ return n === 0 ? "" : Array.range(1, n).map(() => " ").join("");
70
+ };
71
+ // TODO: path str updates
72
+ const process = (e) => codeFilterStatement(e, sut);
73
+ for (const e of state) {
74
+ switch (e.t) {
75
+ case "where":
76
+ statements.push(() => process(e));
77
+ s += `statements[${statements.length - 1}]()`;
78
+ break;
79
+ case "or":
80
+ statements.push(() => process(e));
81
+ s += " || " + `statements[${statements.length - 1}]()`;
82
+ break;
83
+ case "and":
84
+ statements.push(() => process(e));
85
+ s += " && " + `statements[${statements.length - 1}]()`;
86
+ break;
87
+ case "or-scope": {
88
+ ++l;
89
+ s += ` || (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements)}\n${printN(l)})`;
90
+ --l;
91
+ break;
92
+ }
93
+ case "and-scope": {
94
+ ++l;
95
+ s += ` && (\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements)}\n${printN(l)})`;
96
+ --l;
97
+ break;
98
+ }
99
+ case "where-scope": {
100
+ // ;++l
101
+ s += `(\n${printN(l + 1)}${codeFilter3__(e.result, sut, statements)}\n)`;
102
+ // ;--l
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ return s;
108
+ };
109
+ export const codeFilter3_ = (state, sut) => {
110
+ const statements = []; // must be defined here to be used by eval.
111
+ const s = codeFilter3__(state, sut, statements);
112
+ return eval(s);
113
+ };
114
+ export function codeFilter(filter) {
115
+ return (x) => codeFilter3_(filter, x) ? Option.some(x) : Option.none();
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZUZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdG9yZS9jb2RlRmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCwwREFBMEQ7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBR3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV0RyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsQ0FBcUIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFJLENBQVUsRUFBRSxDQUFJLEVBQUUsRUFBRTtJQUN6RCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QixRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNiLEtBQUssSUFBSTtZQUNQLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzdCLEtBQUssSUFBSTtZQUNQLE9BQU8sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLEtBQUssSUFBSTtZQUNQLE9BQU8sV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Store/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAEjD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,iFAkBjD;AAED,cAAc,cAAc,CAAA"}
@@ -0,0 +1,28 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Secret } from "effect-app";
3
+ import { CosmosStoreLayer } from "./Cosmos.js";
4
+ import { DiskStoreLayer } from "./Disk.js";
5
+ import { MemoryStoreLive } from "./Memory.js";
6
+ /**
7
+ * @tsplus static StoreMaker.Ops Layer
8
+ */
9
+ export function StoreMakerLayer(cfg) {
10
+ const storageUrl = Secret.value(cfg.url);
11
+ if (storageUrl.startsWith("mem://")) {
12
+ console.log("Using in memory store");
13
+ return MemoryStoreLive;
14
+ }
15
+ if (storageUrl.startsWith("disk://")) {
16
+ const dir = storageUrl.replace("disk://", "");
17
+ console.log("Using disk store at " + dir);
18
+ return DiskStoreLayer(cfg, dir);
19
+ }
20
+ // if (storageUrl.startsWith("redis://")) {
21
+ // console.log("Using Redis store")
22
+ // return RedisStoreLayer(cfg)
23
+ // }
24
+ console.log("Using Cosmos DB store");
25
+ return CosmosStoreLayer(cfg);
26
+ }
27
+ export * from "./service.js";
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUk3Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBa0I7SUFDaEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sZUFBZSxDQUFBO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxDQUFBO1FBQ3pDLE9BQU8sY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsMkNBQTJDO0lBQzNDLHFDQUFxQztJQUNyQyxnQ0FBZ0M7SUFDaEMsSUFBSTtJQUVKLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtJQUNwQyxPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUM7QUFFRCxjQUFjLGNBQWMsQ0FBQSJ9
@@ -1,10 +1,10 @@
1
1
  import type { UniqueKey } from "@azure/cosmos";
2
2
  import { Context, Effect } from "effect-app";
3
3
  import type { NonEmptyReadonlyArray, Option, Secret } from "effect-app";
4
- import type { OptimisticConcurrencyException } from "../../errors.js";
5
- import type { FieldValues } from "../../filter/types.js";
6
- import type { FieldPath } from "../../filter/types/path/index.js";
7
- import type { FilterResult } from "./filterApi/query.js";
4
+ import type { OptimisticConcurrencyException } from "../errors.js";
5
+ import type { FilterResult } from "../Model/filter/filterApi.js";
6
+ import type { FieldValues } from "../Model/filter/types.js";
7
+ import type { FieldPath } from "../Model/filter/types/path/index.js";
8
8
  export type StoreConfig<E> = {
9
9
  uniqueKeys?: UniqueKey[];
10
10
  maxBulkSize?: number;
@@ -88,7 +88,7 @@ declare const StoreMaker_base: (abstract new (service: {
88
88
  make: <Encoded extends {
89
89
  id: Id;
90
90
  }, Id extends string, R = never, E = never>(name: string, seed?: Effect<Iterable<Encoded>, E, R>, config?: StoreConfig<Encoded>) => Effect<Store<Encoded, Id>, E, R>;
91
- }) => X) => X extends Effect.Effect<infer A_1, infer E_1, infer R_3> ? Effect.Effect<A_1, E_1, StoreMaker | R_3> : Effect.Effect<X, never, StoreMaker>;
91
+ }) => X) => X extends Effect.Effect<infer A_1, infer E_1, infer R_3> ? Effect.Effect<A_1, E_1, R_3 | StoreMaker> : Effect.Effect<X, never, StoreMaker>;
92
92
  };
93
93
  /**
94
94
  * @tsplus type StoreMaker
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/Store/service.ts"],"names":[],"mappings":"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"}
@@ -71,4 +71,4 @@ const makeMap = Effect.sync(() => makeContextMap());
71
71
  */
72
72
  export class ContextMap extends Context.TagMakeId("effect-app/ContextMap", makeMap)() {
73
73
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9TdG9yZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBMkU1Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFNbEU7Q0FDSDtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7SUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsSUFBd0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQTtJQUVELCtCQUErQjtJQUMvQiwyQkFBMkI7SUFDM0IsZ0RBQWdEO0lBQ2hELE1BQU07SUFFTiwrQkFBK0I7SUFDL0IsMkJBQTJCO0lBQzNCLHNDQUFzQztJQUN0QyxNQUFNO0lBRU4sa0NBQWtDO0lBQ2xDLHdCQUF3QjtJQUN4QixvQ0FBb0M7SUFDcEMsU0FBUztJQUNULDJCQUEyQjtJQUMzQixjQUFjO0lBQ2QsSUFBSTtJQUVKLGlDQUFpQztJQUNqQyxvRkFBb0Y7SUFDcEYsb0lBQW9JO0lBQ3BJLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsNEdBQTRHO0lBQzVHLHNDQUFzQztJQUN0QyxrRUFBa0U7SUFDbEUsdURBQXVEO0lBQ3ZELHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsU0FBUztJQUNULHFDQUFxQztJQUNyQyx5Q0FBeUM7SUFDekMsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixtQkFBbUI7SUFDbkIsK0NBQStDO0lBQy9DLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsMkNBQTJDO0lBQzNDLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQix5Q0FBeUM7SUFDekMscURBQXFEO0lBQ3JELG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBRUosT0FBTztRQUNMLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE9BQU87UUFDWixZQUFZO0tBQ2IsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtBQUVuRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLEVBQWM7Q0FDaEcifQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdG9yZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBMkU1Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsRUFNbEU7Q0FDSDtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7SUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFVLEVBQUUsSUFBd0IsRUFBRSxFQUFFO1FBQ3ZELElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzdELENBQUMsQ0FBQTtJQUVELCtCQUErQjtJQUMvQiwyQkFBMkI7SUFDM0IsZ0RBQWdEO0lBQ2hELE1BQU07SUFFTiwrQkFBK0I7SUFDL0IsMkJBQTJCO0lBQzNCLHNDQUFzQztJQUN0QyxNQUFNO0lBRU4sa0NBQWtDO0lBQ2xDLHdCQUF3QjtJQUN4QixvQ0FBb0M7SUFDcEMsU0FBUztJQUNULDJCQUEyQjtJQUMzQixjQUFjO0lBQ2QsSUFBSTtJQUVKLGlDQUFpQztJQUNqQyxvRkFBb0Y7SUFDcEYsb0lBQW9JO0lBQ3BJLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsNEdBQTRHO0lBQzVHLHNDQUFzQztJQUN0QyxrRUFBa0U7SUFDbEUsdURBQXVEO0lBQ3ZELHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsU0FBUztJQUNULHFDQUFxQztJQUNyQyx5Q0FBeUM7SUFDekMsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixtQkFBbUI7SUFDbkIsK0NBQStDO0lBQy9DLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsMkNBQTJDO0lBQzNDLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQix5Q0FBeUM7SUFDekMscURBQXFEO0lBQ3JELG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBRUosT0FBTztRQUNMLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE9BQU87UUFDWixZQUFZO0tBQ2IsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtBQUVuRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLEVBQWM7Q0FDaEcifQ==
@@ -1,5 +1,5 @@
1
1
  import { Effect, Option } from "effect-app";
2
- import { OptimisticConcurrencyException } from "../../errors.js";
2
+ import { OptimisticConcurrencyException } from "../errors.js";
3
3
  import type { PersistenceModelType, SupportedValues2 } from "./service.js";
4
4
  export declare const makeETag: <E extends PersistenceModelType<{}>>({ _etag, ...e }: E) => E;
5
5
  export declare const makeUpdateETag: (type: string) => <E extends PersistenceModelType<{
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/Store/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE1E,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,oBAAoB,CAAC,EAAE,CAAC,mBACxC,CAAC,KACjB,CAGO,CAAA;AACV,eAAO,MAAM,cAAc,SAClB,MAAM,MAAM,CAAC,SAAS,oBAAoB,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,4DAkBvF,CAAA;AAEN,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,cAK1C;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,WAEnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEvE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAEzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,WAElF"}
@@ -0,0 +1,44 @@
1
+ import { Effect, Option } from "effect-app";
2
+ import objectHash from "object-hash";
3
+ import { OptimisticConcurrencyException } from "../errors.js";
4
+ export const makeETag = ({ _etag, ...e }) => ({
5
+ ...e,
6
+ _etag: objectHash(e)
7
+ });
8
+ export const makeUpdateETag = (type) => (e, current) => Effect.gen(function* () {
9
+ if (e._etag) {
10
+ yield* Effect.mapError(current, () => new OptimisticConcurrencyException({ type, id: e.id, current: "", found: e._etag }));
11
+ }
12
+ if (Option.isSome(current) && current.value._etag !== e._etag) {
13
+ return yield* new OptimisticConcurrencyException({
14
+ type,
15
+ id: current.value.id,
16
+ current: current.value._etag,
17
+ found: e._etag
18
+ });
19
+ }
20
+ const newE = makeETag(e);
21
+ return newE;
22
+ });
23
+ export function lowercaseIfString(val) {
24
+ if (typeof val === "string") {
25
+ return val.toLowerCase();
26
+ }
27
+ return val;
28
+ }
29
+ export function compare(valA, valB) {
30
+ return valA === valB;
31
+ }
32
+ export function lowerThan(valA, valB) {
33
+ return valA < valB;
34
+ }
35
+ export function lowerThanExclusive(valA, valB) {
36
+ return valA <= valB;
37
+ }
38
+ export function greaterThan(valA, valB) {
39
+ return valA > valB;
40
+ }
41
+ export function greaterThanExclusive(valA, valB) {
42
+ return valA >= valB;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmUvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDM0MsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUc3RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUssRUFDZixFQUFFLENBQUUsQ0FBQztJQUNSLEdBQUcsQ0FBQztJQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0NBQ3JCLENBQVMsQ0FBQTtBQUNWLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQWlELENBQUksRUFBRSxPQUFrQixFQUFFLEVBQUUsQ0FDN0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUNwQixPQUFPLEVBQ1AsR0FBRyxFQUFFLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FDMUYsQ0FBQTtJQUNILENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSw4QkFBOEIsQ0FBQztZQUMvQyxJQUFJO1lBQ0osRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQzVCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztTQUNmLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDeEIsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDLENBQUMsQ0FBQTtBQUVOLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxHQUFNO0lBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDMUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsSUFBYSxFQUFFLElBQWE7SUFDbEQsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFBO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQXNCLEVBQUUsSUFBc0I7SUFDdEUsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFBO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUMvRSxPQUFPLElBQUksSUFBSSxJQUFJLENBQUE7QUFDckIsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBc0IsRUFBRSxJQUFzQjtJQUN4RSxPQUFPLElBQUksR0FBRyxJQUFJLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFzQixFQUFFLElBQXNCO0lBQ2pGLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQTtBQUNyQixDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../src/Store.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -1,2 +1,2 @@
1
1
  export * from "./Store/service.js";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvU3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQSJ9
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQSJ9