effect-app 4.0.0-beta.25 → 4.0.0-beta.250

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/CHANGELOG.md +1131 -0
  2. package/dist/Array.d.ts +3 -2
  3. package/dist/Array.d.ts.map +1 -1
  4. package/dist/Array.js +4 -4
  5. package/dist/Chunk.d.ts +1 -1
  6. package/dist/Chunk.d.ts.map +1 -1
  7. package/dist/Config/SecretURL.d.ts +4 -2
  8. package/dist/Config/SecretURL.d.ts.map +1 -1
  9. package/dist/Config/SecretURL.js +3 -6
  10. package/dist/Config/internal/configSecretURL.d.ts +1 -1
  11. package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
  12. package/dist/Config/internal/configSecretURL.js +2 -2
  13. package/dist/Config.d.ts +7 -0
  14. package/dist/Config.d.ts.map +1 -0
  15. package/dist/Config.js +6 -0
  16. package/dist/ConfigProvider.d.ts +39 -0
  17. package/dist/ConfigProvider.d.ts.map +1 -0
  18. package/dist/ConfigProvider.js +42 -0
  19. package/dist/Context.d.ts +42 -0
  20. package/dist/Context.d.ts.map +1 -0
  21. package/dist/Context.js +67 -0
  22. package/dist/Effect.d.ts +13 -12
  23. package/dist/Effect.d.ts.map +1 -1
  24. package/dist/Effect.js +5 -8
  25. package/dist/Emailer.d.ts +51 -0
  26. package/dist/Emailer.d.ts.map +1 -0
  27. package/dist/Emailer.js +7 -0
  28. package/dist/Function.d.ts +1 -1
  29. package/dist/Function.d.ts.map +1 -1
  30. package/dist/Inputify.type.d.ts +1 -1
  31. package/dist/Layer.d.ts +11 -7
  32. package/dist/Layer.d.ts.map +1 -1
  33. package/dist/Layer.js +3 -2
  34. package/dist/Model/Repository/Registry.d.ts +21 -0
  35. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  36. package/dist/Model/Repository/Registry.js +18 -0
  37. package/dist/Model/Repository/ext.d.ts +60 -0
  38. package/dist/Model/Repository/ext.d.ts.map +1 -0
  39. package/dist/Model/Repository/ext.js +122 -0
  40. package/dist/Model/Repository/internal/internal.d.ts +62 -0
  41. package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
  42. package/dist/Model/Repository/internal/internal.js +398 -0
  43. package/dist/Model/Repository/legacy.d.ts +21 -0
  44. package/dist/Model/Repository/legacy.d.ts.map +1 -0
  45. package/dist/Model/Repository/legacy.js +2 -0
  46. package/dist/Model/Repository/makeRepo.d.ts +53 -0
  47. package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
  48. package/dist/Model/Repository/makeRepo.js +27 -0
  49. package/dist/Model/Repository/service.d.ts +97 -0
  50. package/dist/Model/Repository/service.d.ts.map +1 -0
  51. package/dist/Model/Repository/service.js +2 -0
  52. package/dist/Model/Repository/validation.d.ts +71 -0
  53. package/dist/Model/Repository/validation.d.ts.map +1 -0
  54. package/dist/Model/Repository/validation.js +32 -0
  55. package/dist/Model/Repository.d.ts +7 -0
  56. package/dist/Model/Repository.d.ts.map +1 -0
  57. package/dist/Model/Repository.js +7 -0
  58. package/dist/Model/dsl.d.ts +33 -0
  59. package/dist/Model/dsl.d.ts.map +1 -0
  60. package/dist/Model/dsl.js +43 -0
  61. package/dist/Model/filter/filterApi.d.ts +30 -0
  62. package/dist/Model/filter/filterApi.d.ts.map +1 -0
  63. package/dist/Model/filter/filterApi.js +2 -0
  64. package/dist/Model/filter/types/errors.d.ts +29 -0
  65. package/dist/Model/filter/types/errors.d.ts.map +1 -0
  66. package/dist/Model/filter/types/errors.js +2 -0
  67. package/dist/Model/filter/types/fields.d.ts +15 -0
  68. package/dist/Model/filter/types/fields.d.ts.map +1 -0
  69. package/dist/Model/filter/types/fields.js +2 -0
  70. package/dist/Model/filter/types/path/common.d.ts +316 -0
  71. package/dist/Model/filter/types/path/common.d.ts.map +1 -0
  72. package/dist/Model/filter/types/path/common.js +2 -0
  73. package/dist/Model/filter/types/path/eager.d.ts +95 -0
  74. package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
  75. package/dist/Model/filter/types/path/eager.js +31 -0
  76. package/dist/Model/filter/types/path/index.d.ts +4 -0
  77. package/dist/Model/filter/types/path/index.d.ts.map +1 -0
  78. package/dist/Model/filter/types/path/index.js +3 -0
  79. package/dist/Model/filter/types/utils.d.ts +79 -0
  80. package/dist/Model/filter/types/utils.d.ts.map +1 -0
  81. package/dist/Model/filter/types/utils.js +2 -0
  82. package/dist/Model/filter/types/validator.d.ts +30 -0
  83. package/dist/Model/filter/types/validator.d.ts.map +1 -0
  84. package/dist/Model/filter/types/validator.js +2 -0
  85. package/dist/Model/filter/types.d.ts +5 -0
  86. package/dist/Model/filter/types.d.ts.map +1 -0
  87. package/dist/Model/filter/types.js +7 -0
  88. package/dist/Model/query/dsl.d.ts +446 -0
  89. package/dist/Model/query/dsl.d.ts.map +1 -0
  90. package/dist/Model/query/dsl.js +342 -0
  91. package/dist/Model/query/new-kid-interpreter.d.ts +136 -0
  92. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
  93. package/dist/Model/query/new-kid-interpreter.js +336 -0
  94. package/dist/Model/query.d.ts +15 -0
  95. package/dist/Model/query.d.ts.map +1 -0
  96. package/dist/Model/query.js +3 -0
  97. package/dist/Model.d.ts +5 -0
  98. package/dist/Model.d.ts.map +1 -0
  99. package/dist/Model.js +5 -0
  100. package/dist/NonEmptySet.d.ts +4 -2
  101. package/dist/NonEmptySet.d.ts.map +1 -1
  102. package/dist/NonEmptySet.js +2 -2
  103. package/dist/Option.d.ts +2 -1
  104. package/dist/Option.d.ts.map +1 -1
  105. package/dist/Option.js +3 -1
  106. package/dist/Pure.d.ts +8 -6
  107. package/dist/Pure.d.ts.map +1 -1
  108. package/dist/Pure.js +17 -14
  109. package/dist/QueueMaker.d.ts +13 -0
  110. package/dist/QueueMaker.d.ts.map +1 -0
  111. package/dist/QueueMaker.js +4 -0
  112. package/dist/RequestContext.d.ts +103 -0
  113. package/dist/RequestContext.d.ts.map +1 -0
  114. package/dist/RequestContext.js +49 -0
  115. package/dist/Schema/Class.d.ts +66 -20
  116. package/dist/Schema/Class.d.ts.map +1 -1
  117. package/dist/Schema/Class.js +192 -23
  118. package/dist/Schema/FastCheck.d.ts +1 -1
  119. package/dist/Schema/FastCheck.d.ts.map +1 -1
  120. package/dist/Schema/Methods.d.ts +1 -1
  121. package/dist/Schema/SchemaParser.d.ts +5 -0
  122. package/dist/Schema/SchemaParser.d.ts.map +1 -0
  123. package/dist/Schema/SchemaParser.js +6 -0
  124. package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
  125. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  126. package/dist/Schema/SpecialJsonSchema.js +118 -0
  127. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  128. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  129. package/dist/Schema/SpecialOpenApi.js +123 -0
  130. package/dist/Schema/brand.d.ts +5 -3
  131. package/dist/Schema/brand.d.ts.map +1 -1
  132. package/dist/Schema/brand.js +3 -1
  133. package/dist/Schema/email.d.ts +1 -1
  134. package/dist/Schema/email.d.ts.map +1 -1
  135. package/dist/Schema/email.js +7 -4
  136. package/dist/Schema/ext.d.ts +339 -56
  137. package/dist/Schema/ext.d.ts.map +1 -1
  138. package/dist/Schema/ext.js +358 -53
  139. package/dist/Schema/moreStrings.d.ts +108 -26
  140. package/dist/Schema/moreStrings.d.ts.map +1 -1
  141. package/dist/Schema/moreStrings.js +45 -16
  142. package/dist/Schema/numbers.d.ts +55 -15
  143. package/dist/Schema/numbers.d.ts.map +1 -1
  144. package/dist/Schema/numbers.js +60 -12
  145. package/dist/Schema/phoneNumber.d.ts +1 -1
  146. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  147. package/dist/Schema/phoneNumber.js +6 -3
  148. package/dist/Schema/schema.d.ts +1 -1
  149. package/dist/Schema/strings.d.ts +5 -5
  150. package/dist/Schema/strings.d.ts.map +1 -1
  151. package/dist/Schema/strings.js +1 -5
  152. package/dist/Schema.d.ts +214 -8
  153. package/dist/Schema.d.ts.map +1 -1
  154. package/dist/Schema.js +190 -11
  155. package/dist/Set.d.ts +5 -2
  156. package/dist/Set.d.ts.map +1 -1
  157. package/dist/Set.js +3 -2
  158. package/dist/Store.d.ts +166 -0
  159. package/dist/Store.d.ts.map +1 -0
  160. package/dist/Store.js +117 -0
  161. package/dist/TypeTest.d.ts +1 -1
  162. package/dist/Types.d.ts +1 -1
  163. package/dist/Widen.type.d.ts +1 -1
  164. package/dist/_ext/Array.d.ts +2 -2
  165. package/dist/_ext/Array.d.ts.map +1 -1
  166. package/dist/_ext/Array.js +4 -2
  167. package/dist/_ext/date.d.ts +1 -1
  168. package/dist/_ext/misc.d.ts +5 -2
  169. package/dist/_ext/misc.d.ts.map +1 -1
  170. package/dist/_ext/misc.js +4 -2
  171. package/dist/_ext/ord.ext.d.ts +3 -2
  172. package/dist/_ext/ord.ext.d.ts.map +1 -1
  173. package/dist/_ext/ord.ext.js +2 -2
  174. package/dist/builtin.d.ts +1 -1
  175. package/dist/builtin.d.ts.map +1 -1
  176. package/dist/client/InvalidationKeys.d.ts +29 -0
  177. package/dist/client/InvalidationKeys.d.ts.map +1 -0
  178. package/dist/client/InvalidationKeys.js +33 -0
  179. package/dist/client/apiClientFactory.d.ts +20 -32
  180. package/dist/client/apiClientFactory.d.ts.map +1 -1
  181. package/dist/client/apiClientFactory.js +104 -34
  182. package/dist/client/clientFor.d.ts +53 -19
  183. package/dist/client/clientFor.d.ts.map +1 -1
  184. package/dist/client/clientFor.js +9 -1
  185. package/dist/client/errors.d.ts +49 -25
  186. package/dist/client/errors.d.ts.map +1 -1
  187. package/dist/client/errors.js +43 -17
  188. package/dist/client/makeClient.d.ts +495 -33
  189. package/dist/client/makeClient.d.ts.map +1 -1
  190. package/dist/client/makeClient.js +66 -24
  191. package/dist/client.d.ts +6 -5
  192. package/dist/client.d.ts.map +1 -1
  193. package/dist/client.js +2 -1
  194. package/dist/faker.d.ts +1 -1
  195. package/dist/faker.d.ts.map +1 -1
  196. package/dist/http/Request.d.ts +2 -2
  197. package/dist/http/Request.d.ts.map +1 -1
  198. package/dist/http/Request.js +2 -2
  199. package/dist/http/internal/lib.d.ts +1 -1
  200. package/dist/http.d.ts +1 -1
  201. package/dist/ids.d.ts +40 -12
  202. package/dist/ids.d.ts.map +1 -1
  203. package/dist/ids.js +25 -3
  204. package/dist/index.d.ts +7 -8
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +8 -8
  207. package/dist/logger.d.ts +1 -1
  208. package/dist/middleware.d.ts +14 -8
  209. package/dist/middleware.d.ts.map +1 -1
  210. package/dist/middleware.js +14 -8
  211. package/dist/rpc/Invalidation.d.ts +420 -0
  212. package/dist/rpc/Invalidation.d.ts.map +1 -0
  213. package/dist/rpc/Invalidation.js +168 -0
  214. package/dist/rpc/MiddlewareMaker.d.ts +12 -8
  215. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  216. package/dist/rpc/MiddlewareMaker.js +59 -38
  217. package/dist/rpc/RpcContextMap.d.ts +4 -4
  218. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  219. package/dist/rpc/RpcContextMap.js +4 -4
  220. package/dist/rpc/RpcMiddleware.d.ts +15 -11
  221. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  222. package/dist/rpc/RpcMiddleware.js +1 -1
  223. package/dist/rpc.d.ts +2 -2
  224. package/dist/rpc.d.ts.map +1 -1
  225. package/dist/rpc.js +2 -2
  226. package/dist/runtime.d.ts +19 -0
  227. package/dist/runtime.d.ts.map +1 -0
  228. package/dist/runtime.js +40 -0
  229. package/dist/toast.d.ts +51 -0
  230. package/dist/toast.d.ts.map +1 -0
  231. package/dist/toast.js +34 -0
  232. package/dist/transform.d.ts +2 -2
  233. package/dist/transform.d.ts.map +1 -1
  234. package/dist/transform.js +4 -5
  235. package/dist/utils/effectify.d.ts +2 -2
  236. package/dist/utils/effectify.d.ts.map +1 -1
  237. package/dist/utils/effectify.js +2 -2
  238. package/dist/utils/extend.d.ts +1 -1
  239. package/dist/utils/extend.d.ts.map +1 -1
  240. package/dist/utils/gen.d.ts +5 -5
  241. package/dist/utils/gen.d.ts.map +1 -1
  242. package/dist/utils/logLevel.d.ts +3 -3
  243. package/dist/utils/logLevel.d.ts.map +1 -1
  244. package/dist/utils/logger.d.ts +5 -4
  245. package/dist/utils/logger.d.ts.map +1 -1
  246. package/dist/utils/logger.js +4 -4
  247. package/dist/utils.d.ts +40 -45
  248. package/dist/utils.d.ts.map +1 -1
  249. package/dist/utils.js +19 -27
  250. package/dist/validation/validators.d.ts +1 -1
  251. package/dist/validation/validators.d.ts.map +1 -1
  252. package/dist/validation.d.ts +1 -1
  253. package/dist/validation.d.ts.map +1 -1
  254. package/dist/withToast.d.ts +30 -0
  255. package/dist/withToast.d.ts.map +1 -0
  256. package/dist/withToast.js +64 -0
  257. package/package.json +158 -24
  258. package/src/Array.ts +3 -3
  259. package/src/Config/SecretURL.ts +5 -2
  260. package/src/Config/internal/configSecretURL.ts +1 -1
  261. package/src/Config.ts +14 -0
  262. package/src/ConfigProvider.ts +48 -0
  263. package/src/{ServiceMap.ts → Context.ts} +56 -63
  264. package/src/Effect.ts +12 -14
  265. package/src/Emailer.ts +51 -0
  266. package/src/Layer.ts +10 -6
  267. package/src/Model/Repository/Registry.ts +34 -0
  268. package/src/Model/Repository/ext.ts +375 -0
  269. package/src/Model/Repository/internal/internal.ts +692 -0
  270. package/src/Model/Repository/legacy.ts +29 -0
  271. package/src/Model/Repository/makeRepo.ts +144 -0
  272. package/src/Model/Repository/service.ts +639 -0
  273. package/src/Model/Repository/validation.ts +31 -0
  274. package/src/Model/Repository.ts +6 -0
  275. package/src/Model/dsl.ts +129 -0
  276. package/src/Model/filter/filterApi.ts +60 -0
  277. package/src/Model/filter/types/errors.ts +47 -0
  278. package/src/Model/filter/types/fields.ts +50 -0
  279. package/src/Model/filter/types/path/common.ts +404 -0
  280. package/src/Model/filter/types/path/eager.ts +297 -0
  281. package/src/Model/filter/types/path/index.ts +4 -0
  282. package/src/Model/filter/types/utils.ts +128 -0
  283. package/src/Model/filter/types/validator.ts +46 -0
  284. package/src/Model/filter/types.ts +6 -0
  285. package/src/Model/query/dsl.ts +2546 -0
  286. package/src/Model/query/new-kid-interpreter.ts +484 -0
  287. package/src/Model/query.ts +13 -0
  288. package/src/Model.ts +4 -0
  289. package/src/NonEmptySet.ts +3 -1
  290. package/src/Option.ts +2 -0
  291. package/src/Pure.ts +21 -19
  292. package/src/QueueMaker.ts +19 -0
  293. package/src/RequestContext.ts +62 -0
  294. package/src/Schema/Class.ts +274 -64
  295. package/src/Schema/SchemaParser.ts +12 -0
  296. package/src/Schema/SpecialJsonSchema.ts +139 -0
  297. package/src/Schema/SpecialOpenApi.ts +130 -0
  298. package/src/Schema/brand.ts +22 -2
  299. package/src/Schema/email.ts +7 -2
  300. package/src/Schema/ext.ts +443 -88
  301. package/src/Schema/moreStrings.ts +93 -37
  302. package/src/Schema/numbers.ts +64 -16
  303. package/src/Schema/phoneNumber.ts +5 -1
  304. package/src/Schema/strings.ts +4 -8
  305. package/src/Schema.ts +374 -10
  306. package/src/Set.ts +5 -1
  307. package/src/Store.ts +273 -0
  308. package/src/_ext/Array.ts +3 -1
  309. package/src/_ext/misc.ts +4 -1
  310. package/src/_ext/ord.ext.ts +2 -1
  311. package/src/client/InvalidationKeys.ts +50 -0
  312. package/src/client/apiClientFactory.ts +230 -131
  313. package/src/client/clientFor.ts +102 -31
  314. package/src/client/errors.ts +52 -26
  315. package/src/client/makeClient.ts +592 -71
  316. package/src/client.ts +5 -4
  317. package/src/http/Request.ts +1 -1
  318. package/src/ids.ts +25 -3
  319. package/src/index.ts +7 -10
  320. package/src/middleware.ts +13 -9
  321. package/src/rpc/Invalidation.ts +261 -0
  322. package/src/rpc/MiddlewareMaker.ts +83 -75
  323. package/src/rpc/README.md +2 -2
  324. package/src/rpc/RpcContextMap.ts +6 -5
  325. package/src/rpc/RpcMiddleware.ts +18 -12
  326. package/src/rpc.ts +1 -1
  327. package/src/runtime.ts +56 -0
  328. package/src/toast.ts +54 -0
  329. package/src/transform.ts +3 -3
  330. package/src/utils/effectify.ts +1 -1
  331. package/src/utils/gen.ts +8 -8
  332. package/src/utils/logLevel.ts +1 -1
  333. package/src/utils/logger.ts +4 -3
  334. package/src/utils.ts +62 -139
  335. package/src/withToast.ts +133 -0
  336. package/test/dist/rpc-dynamic-middleware.test.d.ts.map +1 -0
  337. package/test/dist/rpc.test.d.ts.map +1 -1
  338. package/test/dist/secretURL.test.d.ts.map +1 -0
  339. package/test/dist/special.test.d.ts.map +1 -0
  340. package/test/dist/stream-error.types.d.ts +2 -0
  341. package/test/dist/stream-error.types.d.ts.map +1 -0
  342. package/test/dist/stream-error.types.js +27 -0
  343. package/test/moreStrings.test.ts +1 -1
  344. package/test/rpc.test.ts +46 -6
  345. package/test/schema.test.ts +459 -30
  346. package/test/secretURL.test.ts +160 -0
  347. package/test/special.test.ts +1026 -0
  348. package/test/utils.test.ts +7 -7
  349. package/tsconfig.base.json +6 -5
  350. package/tsconfig.json +2 -1
  351. package/tsconfig.json.bak +2 -2
  352. package/tsconfig.src.json +29 -29
  353. package/tsconfig.test.json +2 -2
  354. package/dist/Operations.d.ts +0 -123
  355. package/dist/Operations.d.ts.map +0 -1
  356. package/dist/Operations.js +0 -29
  357. package/dist/ServiceMap.d.ts +0 -44
  358. package/dist/ServiceMap.d.ts.map +0 -1
  359. package/dist/ServiceMap.js +0 -91
  360. package/eslint.config.mjs +0 -26
  361. package/src/Operations.ts +0 -55
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../src/Model/Repository/internal/internal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,398 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import * as Equivalence from "effect/Equivalence";
3
+ import { flow, pipe } from "effect/Function";
4
+ import * as Pipeable from "effect/Pipeable";
5
+ import * as PubSub from "effect/PubSub";
6
+ import * as Result from "effect/Result";
7
+ import * as SchemaAST from "effect/SchemaAST";
8
+ import * as Unify from "effect/Unify";
9
+ import * as Array from "../../../Array.js";
10
+ import { toNonEmptyArray } from "../../../Array.js";
11
+ import * as Chunk from "../../../Chunk.js";
12
+ import { NotFoundError } from "../../../client/errors.js";
13
+ import * as Context from "../../../Context.js";
14
+ import * as Effect from "../../../Effect.js";
15
+ import { flatMapOption } from "../../../Effect.js";
16
+ import * as Option from "../../../Option.js";
17
+ import * as S from "../../../Schema.js";
18
+ import { NonNegativeInt } from "../../../Schema.js";
19
+ import { getContextMap, StoreMaker } from "../../../Store.js";
20
+ import * as Q from "../../query.js";
21
+ import { ValidationError, ValidationResult } from "../validation.js";
22
+ const dedupe = Array.dedupeWith(Equivalence.String);
23
+ /**
24
+ * A base implementation to create a repository.
25
+ */
26
+ export function makeRepoInternal() {
27
+ return (name, schema, mapFrom, mapTo, idKey) => {
28
+ function mapToPersistenceModel(e, getEtag) {
29
+ return mapTo(e, getEtag(e[idKey]));
30
+ }
31
+ function mapReverse({ _etag, ...e }, setEtag) {
32
+ setEtag(e[idKey], _etag);
33
+ return mapFrom(e);
34
+ }
35
+ const mkStore = makeStore()(name, schema, mapTo, idKey);
36
+ function make(args) {
37
+ return Effect
38
+ .gen(function* () {
39
+ const rctx = args.schemaContext ?? Context.empty();
40
+ const provideRctx = Effect.provide(rctx);
41
+ const encodeMany = flow(S.encodeEffect(S.Array(schema)), provideRctx, Effect.withSpan("encodeMany", { attributes: { "app.entity": name } }, { captureStackTrace: false }));
42
+ const decode = flow(S.decodeEffectConcurrently(schema), provideRctx);
43
+ const decodeMany = flow(S.decodeEffectConcurrently(S.Array(schema)), provideRctx);
44
+ const store = yield* mkStore(args.makeInitial, args.config);
45
+ const cms = Effect.map(getContextMap.pipe(Effect.orDie), (_) => ({
46
+ get: (id) => _.get(`${name}.${id}`),
47
+ set: (id, etag) => _.set(`${name}.${id}`, etag)
48
+ }));
49
+ const pub = "publishEvents" in args
50
+ ? args.publishEvents
51
+ : () => Effect.void;
52
+ const changeFeed = yield* PubSub.unbounded();
53
+ const allE = cms
54
+ .pipe(Effect.flatMap((cm) => Effect.map(store.all, (_) => _.map((_) => mapReverse(_, cm.set)))));
55
+ const all = Effect
56
+ .flatMap(allE, (_) => decodeMany(_).pipe(Effect.orDie))
57
+ .pipe(Effect.map((_) => _), Effect.withSpan("Repository.all", {
58
+ kind: "client",
59
+ attributes: { "app.entity": name }
60
+ }, { captureStackTrace: false }));
61
+ const fieldsSchema = schema;
62
+ // assumes the id field never needs a service...
63
+ const i = ("fields" in fieldsSchema ? S.Struct(fieldsSchema["fields"]) : schema)
64
+ .pipe((_) => {
65
+ let ast = _.ast;
66
+ if (ast._tag === "Declaration")
67
+ ast = ast.typeParameters[0];
68
+ const pickIdFromAst = (a) => {
69
+ // Unwrap Declaration (e.g. TaggedClass) to get the underlying Objects AST
70
+ let inner = a;
71
+ if (inner._tag === "Declaration")
72
+ inner = inner.typeParameters[0];
73
+ // Pick from the original AST to preserve the full encoding chain (e.g. decodeTo transformations).
74
+ // Using toEncoded would lose transformation info needed to encode Type -> Encoded.
75
+ if (SchemaAST.isObjects(inner)) {
76
+ const field = inner.propertySignatures.find((_) => _.name === idKey);
77
+ if (field) {
78
+ return S.Struct({ [idKey]: S.make(field.type) });
79
+ }
80
+ }
81
+ return S.make(a);
82
+ };
83
+ return ast._tag === "Union"
84
+ // we need to get the Objects (TypeLiteral), in case of class it has encoding chain...
85
+ ? S.Union(ast.types.map((_) => pickIdFromAst(_)))
86
+ : pickIdFromAst(ast);
87
+ });
88
+ const encodeId = flow(S.encodeEffect(i), provideRctx);
89
+ const encodeIdOnly = (id) => encodeId({ [idKey]: id }).pipe(Effect.map((_) => _[idKey]));
90
+ const findEId = Effect.fnUntraced(function* (id) {
91
+ yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
92
+ return yield* Effect.flatMap(store.find(id), (item) => Effect.gen(function* () {
93
+ const { set } = yield* cms;
94
+ return item.pipe(Option.map((_) => mapReverse(_, set)));
95
+ }));
96
+ });
97
+ // TODO: select the particular field, instead of as struct
98
+ const findE = Effect.fnUntraced(function* (id) {
99
+ yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
100
+ return yield* pipe(encodeId({ [idKey]: id }), Effect.orDie, Effect.map((_) => _[idKey]), Effect.flatMap(findEId));
101
+ });
102
+ const find = Effect.fn("Repository.find", {
103
+ kind: "client",
104
+ attributes: { "app.entity": name }
105
+ })(function* (id) {
106
+ yield* Effect.annotateCurrentSpan({ "app.entity.id": id });
107
+ return yield* flatMapOption(findE(id), (_) => Effect.orDie(decode(_)));
108
+ });
109
+ const saveAllE = (a) => flatMapOption(Effect
110
+ .sync(() => toNonEmptyArray([...a])), (a) => Effect.gen(function* () {
111
+ const { get, set } = yield* cms;
112
+ const items = a.map((_) => mapToPersistenceModel(_, get));
113
+ const ret = yield* store.batchSet(items);
114
+ ret.forEach((_) => set(_[idKey], _._etag));
115
+ }))
116
+ .pipe(Effect.asVoid);
117
+ const saveAll = (a) => encodeMany(Array.fromIterable(a))
118
+ .pipe(Effect.orDie, Effect.andThen(saveAllE));
119
+ const saveAndPublish = Effect.fn("Repository.saveAndPublish", { attributes: { "app.entity": name } })(function* (items, events = []) {
120
+ const it = Chunk.fromIterable(items);
121
+ const evts = [...events];
122
+ yield* Effect.annotateCurrentSpan({
123
+ "app.entity.ids": Chunk.map(it, (_) => _[idKey]),
124
+ "app.event.count": evts.length
125
+ });
126
+ return yield* saveAll(it)
127
+ .pipe(Effect.andThen(Effect.sync(() => toNonEmptyArray(evts))),
128
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
129
+ (_) => flatMapOption(_, pub), Effect.andThen(PubSub.publish(changeFeed, [Chunk.toArray(it), "save"])), Effect.asVoid);
130
+ });
131
+ const removeAndPublish = Effect.fn("Repository.removeAndPublish", { attributes: { "app.entity": name } })(function* (a, events = []) {
132
+ const { set } = yield* cms;
133
+ const it = [...a];
134
+ const evts = [...events];
135
+ yield* Effect.annotateCurrentSpan({
136
+ "app.entity.ids": it.map((_) => _[idKey]),
137
+ "app.event.count": evts.length
138
+ });
139
+ const items = yield* encodeMany(it).pipe(Effect.orDie);
140
+ if (Array.isReadonlyArrayNonEmpty(items)) {
141
+ yield* store.batchRemove(items.map((_) => (_[idKey])), args.config?.partitionValue?.(items[0]));
142
+ for (const e of items) {
143
+ set(e[idKey], undefined);
144
+ }
145
+ yield* Effect
146
+ .sync(() => toNonEmptyArray(evts))
147
+ // TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
148
+ .pipe((_) => flatMapOption(_, pub));
149
+ yield* PubSub.publish(changeFeed, [it, "remove"]);
150
+ }
151
+ });
152
+ const removeById = Effect.fn("Repository.removeById", { attributes: { "app.entity": name } })(function* (idOrIds) {
153
+ const ids = globalThis.Array.isArray(idOrIds)
154
+ ? idOrIds
155
+ : [idOrIds];
156
+ if (!Array.isReadonlyArrayNonEmpty(ids)) {
157
+ return;
158
+ }
159
+ const { set } = yield* cms;
160
+ const eids = yield* Effect.forEach(ids, (_) => encodeIdOnly(_)).pipe(Effect.orDie);
161
+ yield* Effect.annotateCurrentSpan({ "app.entity.ids": eids });
162
+ yield* store.batchRemove(eids);
163
+ for (const id of eids) {
164
+ set(id, undefined);
165
+ }
166
+ yield* PubSub.publish(changeFeed, [[], "remove"]);
167
+ });
168
+ const parseMany = Effect.fn("parseMany", {
169
+ attributes: { "app.entity": name, "app.query.mode": "transform" }
170
+ })(function* (items) {
171
+ const cm = yield* cms;
172
+ return yield* decodeMany(items.map((_) => mapReverse(_, cm.set))).pipe(Effect.orDie);
173
+ });
174
+ const decodeManyCache = new WeakMap();
175
+ const getDecodeMany = (s) => {
176
+ let dec = decodeManyCache.get(s);
177
+ if (!dec) {
178
+ dec = S.decodeEffectConcurrently(S.Array(s));
179
+ decodeManyCache.set(s, dec);
180
+ }
181
+ return dec;
182
+ };
183
+ const parseMany2 = Effect.fn("parseMany", {
184
+ attributes: { "app.entity": name, "app.query.mode": "transform" }
185
+ })(function* (items, schema) {
186
+ const cm = yield* cms;
187
+ return yield* getDecodeMany(schema)(items.map((_) => mapReverse(_, cm.set))).pipe(Effect.orDie);
188
+ });
189
+ const filter = (args) => store
190
+ .filter(
191
+ // always enforce id and _etag because they are system fields, required for etag tracking etc
192
+ {
193
+ ...args,
194
+ select: args.select
195
+ ? dedupe([...args.select, idKey, "_etag"])
196
+ : undefined
197
+ })
198
+ .pipe(Effect.tap((items) => Effect.map(cms, ({ set }) => items.forEach((_) => set(_[idKey], _._etag)))));
199
+ // TODO: For raw we should use S.from, and drop the R...
200
+ const query = ((q) => {
201
+ const a = Q.toFilter(q, schema);
202
+ // Mode dispatch — see `Q.project` JSDoc for the contract:
203
+ // aggregate: GROUP BY + aggregate functions at DB level; decode raw rows with schema; SchemaError surfaces.
204
+ // project : decode raw encoded rows with schema; no PM reverse-mapping; SchemaError surfaces.
205
+ // collect : same as project, but schema yields Option and None rows are dropped.
206
+ // transform: PM reverse-map (re-inject _etag/PM state from cms cache) then decode; orDie.
207
+ const eff = a.mode === "aggregate"
208
+ ? store
209
+ // `a.select` contains `{ key, aggregate }` items not expressible in FilterFunc<Encoded, U>'s
210
+ // `U extends keyof Encoded` generic. Cast is unavoidable until FilterFunc supports aggregate mode.
211
+ .filter(a)
212
+ // Decode raw aggregate rows directly — no PM reverse-mapping, no id/_etag needed.
213
+ .pipe(Effect.andThen(flow(S.decodeEffectConcurrently(S.Array(a.schema ?? schema)), provideRctx, Effect.withSpan("parseMany", {
214
+ attributes: { "app.entity": name, "app.query.mode": "aggregate" }
215
+ }))))
216
+ : a.mode === "project"
217
+ ? filter(a)
218
+ // TODO: mapFrom but need to support per field and dependencies
219
+ .pipe(Effect.andThen(flow(S.decodeEffectConcurrently(S.Array(a.schema ?? schema)), provideRctx, Effect.withSpan("parseMany", {
220
+ attributes: { "app.entity": name, "app.query.mode": "project" }
221
+ }))))
222
+ : a.mode === "collect"
223
+ ? filter(a)
224
+ // TODO: mapFrom but need to support per field and dependencies
225
+ .pipe(Effect.flatMap(flow(S.decodeEffectConcurrently(S.Array(a.schema)), Effect.map(Array.getSomes), provideRctx, Effect.withSpan("parseMany", {
226
+ attributes: { "app.entity": name, "app.query.mode": "collect" }
227
+ }))))
228
+ : Effect.flatMap(filter(a), (_) => Unify.unify(a.schema
229
+ // TODO: partial may not match?
230
+ ? parseMany2(_, a.schema)
231
+ : parseMany(_)));
232
+ return pipe(a.ttype === "one"
233
+ ? Effect.flatMap(eff, flow(Array.head, Option.match({
234
+ onNone: () => Effect.fail(new NotFoundError({ id: "query", /* TODO */ type: name })),
235
+ onSome: Effect.succeed
236
+ })))
237
+ : a.ttype === "count"
238
+ ? Effect
239
+ .map(eff, (_) => NonNegativeInt(_.length))
240
+ .pipe(Effect.orDie)
241
+ : eff, Effect.tap((r) => Effect.annotateCurrentSpan({
242
+ "app.query.ttype": a.ttype,
243
+ "app.query.mode": a.mode,
244
+ "db.response.returned_rows": Array.isArray(r) ? r.length : 1
245
+ })), Effect.withSpan("Repository.query", {
246
+ kind: "client",
247
+ attributes: { "app.entity": name }
248
+ }, { captureStackTrace: false }));
249
+ });
250
+ const validateSample = Effect.fn("Repository.validateSample", { attributes: { "app.entity": name } })(function* (options) {
251
+ const percentage = options?.percentage ?? 0.1; // default 10%
252
+ const maxItems = options?.maxItems;
253
+ // 1. get all IDs with projection (bypasses main schema decode)
254
+ const allIds = yield* store
255
+ .filter({
256
+ t: null,
257
+ select: [idKey]
258
+ })
259
+ .pipe(Effect.withSpan("Repository.filter", {
260
+ kind: "client",
261
+ attributes: { "app.entity": name }
262
+ }, { captureStackTrace: false }));
263
+ // 2. random subset
264
+ const shuffled = [...allIds].sort(() => Math.random() - 0.5);
265
+ const sampleSize = Math.min(maxItems ?? Infinity, Math.ceil(allIds.length * percentage));
266
+ const sample = shuffled.slice(0, sampleSize);
267
+ // 3. validate each item
268
+ const errors = [];
269
+ for (const item of sample) {
270
+ const id = item[idKey];
271
+ const rawResult = yield* store.find(id).pipe(Effect.withSpan("Repository.find", {
272
+ kind: "client",
273
+ attributes: { "app.entity": name, "app.entity.id": id }
274
+ }, { captureStackTrace: false }));
275
+ if (Option.isNone(rawResult))
276
+ continue;
277
+ const rawData = rawResult.value;
278
+ const jitMResult = mapFrom(rawData); // apply jitM
279
+ const decodeResult = yield* S.decodeEffectConcurrently(schema)(jitMResult).pipe(Effect.result, provideRctx);
280
+ if (Result.isFailure(decodeResult)) {
281
+ errors.push(ValidationError.make({
282
+ id,
283
+ rawData,
284
+ jitMResult,
285
+ error: decodeResult.failure
286
+ }));
287
+ }
288
+ }
289
+ return ValidationResult.make({
290
+ total: NonNegativeInt(allIds.length),
291
+ sampled: NonNegativeInt(sample.length),
292
+ valid: NonNegativeInt(sample.length - errors.length),
293
+ errors
294
+ });
295
+ });
296
+ const r = {
297
+ changeFeed,
298
+ itemType: name,
299
+ idKey,
300
+ find,
301
+ all,
302
+ saveAndPublish,
303
+ removeAndPublish,
304
+ removeById,
305
+ seedNamespace: (namespace) => store.seedNamespace(namespace),
306
+ validateSample,
307
+ queryRaw(schema, q) {
308
+ const dec = S.decodeEffectConcurrently(S.Array(schema));
309
+ return store.queryRaw(q).pipe(Effect.flatMap(dec), Effect.withSpan("Repository.queryRaw", {
310
+ kind: "client",
311
+ attributes: { "app.entity": name }
312
+ }, { captureStackTrace: false }));
313
+ },
314
+ query(q) {
315
+ // eslint-disable-next-line prefer-rest-params
316
+ return query(typeof q === "function" ? Pipeable.pipeArguments(Q.make(), arguments) : q);
317
+ },
318
+ /**
319
+ * @internal
320
+ */
321
+ mapped: (schema) => {
322
+ const dec = S.decodeEffectConcurrently(schema);
323
+ const encMany = S.encodeEffect(S.Array(schema));
324
+ const decMany = S.decodeEffectConcurrently(S.Array(schema));
325
+ const spanAttrs = { kind: "client", attributes: { "app.entity": name } };
326
+ return {
327
+ all: allE.pipe(Effect.flatMap(decMany), Effect.map((_) => _), Effect.withSpan("Repository.mapped.all", spanAttrs, { captureStackTrace: false })),
328
+ find: (id) => flatMapOption(findE(id), dec).pipe(Effect.withSpan("Repository.mapped.find", {
329
+ ...spanAttrs,
330
+ attributes: { ...spanAttrs.attributes, "app.entity.id": id }
331
+ }, { captureStackTrace: false })),
332
+ // query: (q: any) => {
333
+ // const a = Q.toFilter(q)
334
+ // return filter(a)
335
+ // .pipe(
336
+ // Effect.flatMap(decMany),
337
+ // Effect.map((_) => _ as any[]),
338
+ // Effect.withSpan("Repository.mapped.query [effect-app/infra]", {
339
+ // captureStackTrace: false,
340
+ // attributes: {
341
+ // "repository.model_name": name,
342
+ // query: { ...a, schema: a.schema ? "__SCHEMA__" : a.schema, filter: a.filter.build() }
343
+ // }
344
+ // })
345
+ // )
346
+ // },
347
+ save: (...xes) => Effect.flatMap(encMany(xes), (_) => saveAllE(_)).pipe(Effect.withSpan("Repository.mapped.save", spanAttrs, { captureStackTrace: false }))
348
+ };
349
+ }
350
+ };
351
+ return r;
352
+ })
353
+ .pipe(Effect
354
+ // .withSpan("Repository.make [effect-app/infra]", { attributes: { "repository.model_name": name } })
355
+ .withLogSpan("Repository.make: " + name));
356
+ }
357
+ return {
358
+ make,
359
+ Q: Q.make()
360
+ };
361
+ };
362
+ }
363
+ const pluralize = (s) => s.endsWith("s")
364
+ ? s + "es"
365
+ : s.endsWith("y")
366
+ ? s.substring(0, s.length - 1) + "ies"
367
+ : s + "s";
368
+ export function makeStore() {
369
+ return (name, schema, mapTo, idKey) => {
370
+ function makeStore(makeInitial, config) {
371
+ function encodeToEncoded() {
372
+ const getEtag = () => undefined;
373
+ return (t) => S.encodeEffect(schema)(t).pipe(Effect.orDie, Effect.map((_) => mapToPersistenceModel(_, getEtag)));
374
+ }
375
+ function mapToPersistenceModel(e, getEtag) {
376
+ return mapTo(e, getEtag(e[idKey]));
377
+ }
378
+ return Effect.gen(function* () {
379
+ const { make } = yield* StoreMaker;
380
+ const store = yield* make(pluralize(name), idKey, makeInitial
381
+ ? makeInitial
382
+ .pipe(Effect.flatMap(Effect.forEach(encodeToEncoded())), Effect.withSpan("Repository.makeInitial", {
383
+ attributes: { "app.entity": name }
384
+ }, {
385
+ captureStackTrace: false
386
+ }))
387
+ : undefined, {
388
+ ...config,
389
+ partitionValue: config?.partitionValue
390
+ ?? ((_) => "primary") /*(isIntegrationEvent(r) ? r.companyId : r.id*/
391
+ });
392
+ return store;
393
+ });
394
+ }
395
+ return makeStore;
396
+ };
397
+ }
398
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9pbnRlcm5hbC9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzVDLE9BQU8sS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRCxPQUFPLEtBQUssS0FBSyxNQUFNLG1CQUFtQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN6RCxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFBO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0sb0JBQW9CLENBQUE7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE1BQU0sb0JBQW9CLENBQUE7QUFDNUMsT0FBTyxLQUFLLENBQUMsTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDL0QsT0FBTyxFQUFtQixhQUFhLEVBQStDLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTNILE9BQU8sS0FBSyxD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
@@ -0,0 +1,21 @@
1
+ import type { OptimisticConcurrencyException } from "../../client/errors.js";
2
+ import type * as Effect from "../../Effect.js";
3
+ import type * as Option from "../../Option.js";
4
+ import type * as S from "../../Schema.js";
5
+ export interface Mapped1<A, IdKey extends keyof A, R> {
6
+ all: Effect.Effect<A[], S.SchemaError, R>;
7
+ save: (...xes: readonly A[]) => Effect.Effect<void, OptimisticConcurrencyException | S.SchemaError, R>;
8
+ find: (id: A[IdKey]) => Effect.Effect<Option.Option<A>, S.SchemaError, R>;
9
+ }
10
+ export interface Mapped2<A, R> {
11
+ all: Effect.Effect<A[], S.SchemaError, R>;
12
+ }
13
+ export interface Mapped<Encoded> {
14
+ <A, R, IdKey extends keyof A>(schema: S.Codec<A, Encoded, R>): Mapped1<A, IdKey, R>;
15
+ <A, Encoded2, R>(schema: S.Codec<A, Encoded2, R>): Mapped2<A, R>;
16
+ }
17
+ export interface MM<Repo, Encoded> {
18
+ <A, R, IdKey extends keyof A>(schema: S.Codec<A, Encoded, R>): Effect.Effect<Mapped1<A, IdKey, R>, never, Repo>;
19
+ <A, Encoded2, R>(schema: S.Codec<A, Encoded2, R>): Effect.Effect<Mapped2<A, R>, never, Repo>;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9sZWdhY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUM1RSxPQUFPLEtBQUssS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxLQUFLLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sS0FBSyxLQUFLLENBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUV6QyxNQUFNLFdBQVcsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNsRCxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN0RyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQzFFO0FBR0QsTUFBTSxXQUFXLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQixHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBO0NBQzFDO0FBRUQsTUFBTSxXQUFXLE1BQU0sQ0FBQyxPQUFPO0lBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUVuRixDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtDQUNqRTtBQUVELE1BQU0sV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU87SUFDL0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRS9HLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0NBQzdGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/legacy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,KAAK,CAAC,MAAM,iBAAiB,CAAA;AAEzC,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,CAAC;IAClD,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,8BAA8B,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACtG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;CAC1E;AAGD,MAAM,WAAW,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,MAAM,CAAC,OAAO;IAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IAEnF,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CACjE;AAED,MAAM,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO;IAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAE/G,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;CAC7F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVnYWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL01vZGVsL1JlcG9zaXRvcnkvbGVnYWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,53 @@
1
+ import type { NonEmptyReadonlyArray } from "../../Array.js";
2
+ import type * as Context from "../../Context.js";
3
+ import * as Effect from "../../Effect.js";
4
+ import type * as S from "../../Schema.js";
5
+ import type { StoreConfig, StoreMaker } from "../../Store.js";
6
+ import type { FieldValues } from "../filter/types.js";
7
+ import { type ExtendedRepository } from "./ext.js";
8
+ import { RepositoryRegistry } from "./Registry.js";
9
+ import type { Repository } from "./service.js";
10
+ export interface RepositoryOptions<IdKey extends keyof T & keyof Encoded, Encoded extends FieldValues, T, ItemType extends string, Evt = never, RPublish = never, E = never, RInitial = never, RCtx = never, RSchema = never> {
11
+ /**
12
+ * Specify the idKey of the Type side, if it's different from the default "id".
13
+ * Does not change the Encoded side, which is always "id" to support database drivers.
14
+ * At this time as queries are operating on the Encoded side, the queries must still specify "id" regardless.
15
+ */
16
+ idKey: IdKey;
17
+ /**
18
+ * just in time Migration: for complex migrations that aren't just default simple values
19
+ * use the config.defaultValues instead for simple default values
20
+ */
21
+ jitM?: (pm: Encoded) => Encoded;
22
+ config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
23
+ partitionValue?: (e?: Encoded) => string;
24
+ };
25
+ /**
26
+ * Optional handler to be able to publish events after successfull save.
27
+ */
28
+ publishEvents?: (evt: NonEmptyReadonlyArray<Evt>) => Effect.Effect<void, never, RPublish>;
29
+ /**
30
+ * Optional creator for initial data in the table when it's created for the first itme.
31
+ */
32
+ makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined;
33
+ /**
34
+ * Optional context to be provided to Schema decode/encode.
35
+ * Useful for effectful transformations like XWithItems, where items is a transformation retrieving elements from another database table or other source.
36
+ */
37
+ schemaContext?: Context.Context<RCtx>;
38
+ overrides?: (repo: Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish, RCtx>) => Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish, RCtx>;
39
+ }
40
+ /**
41
+ * Create a repository instance.
42
+ * @param itemType an identifier used for the table name and e.g NotFoundError
43
+ * @param schema the Schema used for this Repository
44
+ * @param options @see RepositoryOptions
45
+ * @returns a Repository
46
+ */
47
+ export declare const makeRepo: {
48
+ <ItemType extends string, RSchema, Encoded extends FieldValues, T, IdKey extends keyof T & keyof Encoded, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Codec<T, Encoded, RSchema>, options: RepositoryOptions<IdKey, Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry>;
49
+ <ItemType extends string, RSchema, Encoded extends FieldValues, T extends {
50
+ id: unknown;
51
+ }, E = never, Evt = never, RInitial = never, RPublish = never, RCtx = never>(itemType: ItemType, schema: S.Codec<T, Encoded, RSchema>, options: Omit<RepositoryOptions<"id", Encoded, T, ItemType, Evt, RPublish, E, RInitial, RCtx, RSchema>, "idKey">): Effect.Effect<ExtendedRepository<T, Encoded, Evt, ItemType, "id", Exclude<RSchema, RCtx>, RPublish, RCtx>, E, RInitial | StoreMaker | RepositoryRegistry>;
52
+ };
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9Nb2RlbC9SZXBvc2l0b3J5L21ha2VSZXBvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDM0QsT0FBTyxLQUFLLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxLQUFLLEtBQUssQ0FBQyxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM3RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBYyxNQUFNLFVBQVUsQ0FBQTtBQUU5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTlDLE1BQU0sV0FBVyxpQkFBaUIsQ0FDaEMsS0FBSyxTQUFTLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxFQUNyQyxPQUFPLFNBQVMsV0FBVyxFQUMzQixDQUFDLEVBQ0QsUUFBUSxTQUFTLE1BQU0sRUFDdkIsR0FBRyxHQUFHLEtBQUssRUFDWCxRQUFRLEdBQUcsS0FBSyxFQUNoQixDQUFDLEdBQUcsS0FBSyxFQUNULFFBQVEsR0FBRyxLQUFLLEVBQ2hCLElBQUksR0FBRyxLQUFLLEVBQ1osT0FBTyxHQUFHLEtBQUs7SUFFZjs7OztPQUlHO0lBQ0gsS0FBSyxFQUFFLEtBQUssQ0FBQTtJQUNaOzs7T0FHRztJQUNILElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxPQUFPLENBQUE7SUFDL0IsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHO1FBQ3RELGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLLE1BQU0sQ0FBQTtLQUN6QyxDQUFBO0lBQ0Q7O09BRUc7SUFDSCxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDekY7O09BRUc7SUFDSCxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtJQUNsRTs7O09BR0c7SUFDSCxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXJDLFNBQVMsQ0FBQyxFQUFFLENBQ1YsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUN2RixVQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQTtDQUMxRjtBQUVEOzs7Ozs7R0FNRztBQUNILGVBQU8sTUFBTSxRQUFRLEVBQUU7SUFDckIsQ0FDRSxRQUFRLFNBQVMsTUFBTSxFQUN2QixPQUFPLEVBQ1AsT0FBTyxTQUFTLFdBQVcsRUFDM0IsQ0FBQyxFQUNELEtBQUssU0FBUyxNQUFNLENBQUMsR0FBRyxNQUFNLE9BQU8sRUFDckMsQ0FBQyxHQUFHLEtBQUssRUFDVCxHQUFHLEdBQUcsS0FBSyxFQUNYLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLElBQUksR0FBRyxLQUFLLEVBRVosUUFBUSxFQUFFLFFBQVEsRUFDbEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFDcEMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxHQUNqRyxNQUFNLENBQUMsTUFBTSxDQUNkLGtCQUFrQixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQzVGLENBQUMsRUFDRCxRQUFRLEdBQUcsVUFBVSxHQUFHLGtCQUFrQixDQUMzQyxDQUFBO0lBQ0QsQ0FDRSxRQUFRLFNBQVMsTUFBTSxFQUN2QixPQUFPLEVBQ1AsT0FBTyxTQUFTLFdBQVcsRUFDM0IsQ0FBQyxTQUFTO1FBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBQ3pCLENBQUMsR0FBRyxLQUFLLEVBQ1QsR0FBRyxHQUFHLEtBQUssRUFDWCxRQUFRLEdBQUcsS0FBSyxFQUNoQixRQUFRLEdBQUcsS0FBSyxFQUNoQixJQUFJLEdBQUcsS0FBSyxFQUVaLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQy9HLE1BQU0sQ0FBQyxNQUFNLENBQ2Qsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFDM0YsQ0FBQyxFQUNELFFBQVEsR0FBRyxVQUFVLEdBQUcsa0JBQWtCLENBQzNDLENBQUE7Q0FpQ0MsQ0FBQSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeRepo.d.ts","sourceRoot":"","sources":["../../../src/Model/Repository/makeRepo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /* eslint-disable @typescript-eslint/no-empty-object-type */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ import * as Effect from "../../Effect.js";
7
+ import { extendRepo } from "./ext.js";
8
+ import { makeRepoInternal } from "./internal/internal.js";
9
+ import { RepositoryRegistry } from "./Registry.js";
10
+ /**
11
+ * Create a repository instance.
12
+ * @param itemType an identifier used for the table name and e.g NotFoundError
13
+ * @param schema the Schema used for this Repository
14
+ * @param options @see RepositoryOptions
15
+ * @returns a Repository
16
+ */
17
+ export const makeRepo = (itemType, schema, options) => Effect.gen(function* () {
18
+ const mkRepo = makeRepoInternal()(itemType, schema, options?.jitM ? (pm) => options.jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), options.idKey ?? "id");
19
+ let r = yield* mkRepo.make(options);
20
+ if (options.overrides)
21
+ r = options.overrides(r);
22
+ const repo = extendRepo(r);
23
+ const registry = yield* RepositoryRegistry;
24
+ registry.register(itemType, repo);
25
+ return repo;
26
+ });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvTW9kZWwvUmVwb3NpdG9yeS9tYWtlUmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELDBEQUEwRDtBQUMxRCw0REFBNEQ7QUFDNUQsdURBQXVEO0FBTXZELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFJekMsT0FBTyxFQUEyQixVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBZ0RsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBd0NqQixDQVlGLFFBQWtCLEVBQ2xCLE1BQW9DLEVBQ3BDLE9BRUMsRUFDRCxFQUFFLENBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLEVBQU8sQ0FDcEMsUUFBUSxFQUNSLE1BQU0sRUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFDdEQsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDL0IsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFXLENBQzdCLENBQUE7SUFDRCxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUE4QixPQUFjLENBQUMsQ0FBQTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxTQUFTO1FBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0MsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFBO0lBQzFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2pDLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFDLENBQUEifQ==