equipped 5.2.9 → 5.3.0-alpha.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.
- package/CHANGELOG.md +88 -0
- package/README.md +362 -34
- package/dist/cjs/cache/adapters/in-memory/index.cjs +824 -0
- package/dist/cjs/cache/adapters/in-memory/index.cjs.map +1 -0
- package/dist/cjs/cache/adapters/in-memory/index.min.cjs +4 -0
- package/dist/cjs/cache/adapters/in-memory/index.min.cjs.map +1 -0
- package/dist/cjs/cache/adapters/redis/index.cjs +844 -0
- package/dist/cjs/cache/adapters/redis/index.cjs.map +1 -0
- package/dist/cjs/cache/adapters/redis/index.min.cjs +4 -0
- package/dist/cjs/cache/adapters/redis/index.min.cjs.map +1 -0
- package/dist/cjs/cache/index.cjs +602 -4
- package/dist/cjs/cache/index.cjs.map +1 -1
- package/dist/cjs/cache/index.min.cjs +3 -1
- package/dist/cjs/cache/index.min.cjs.map +1 -1
- package/dist/cjs/dbs/adapters/mongodb/index.cjs +1314 -0
- package/dist/cjs/dbs/adapters/mongodb/index.cjs.map +1 -0
- package/dist/cjs/dbs/adapters/mongodb/index.min.cjs +4 -0
- package/dist/cjs/dbs/adapters/mongodb/index.min.cjs.map +1 -0
- package/dist/cjs/dbs/index.cjs +965 -6
- package/dist/cjs/dbs/index.cjs.map +1 -1
- package/dist/cjs/dbs/index.min.cjs +3 -1
- package/dist/cjs/dbs/index.min.cjs.map +1 -1
- package/dist/cjs/errors/index.cjs +127 -8
- package/dist/cjs/errors/index.cjs.map +1 -1
- package/dist/cjs/errors/index.min.cjs +1 -1
- package/dist/cjs/errors/index.min.cjs.map +1 -1
- package/dist/cjs/events/adapters/kafka/index.cjs +845 -0
- package/dist/cjs/events/adapters/kafka/index.cjs.map +1 -0
- package/dist/cjs/events/adapters/kafka/index.min.cjs +4 -0
- package/dist/cjs/events/adapters/kafka/index.min.cjs.map +1 -0
- package/dist/cjs/events/adapters/rabbitmq/index.cjs +836 -0
- package/dist/cjs/events/adapters/rabbitmq/index.cjs.map +1 -0
- package/dist/cjs/events/adapters/rabbitmq/index.min.cjs +4 -0
- package/dist/cjs/events/adapters/rabbitmq/index.min.cjs.map +1 -0
- package/dist/cjs/events/index.cjs +33 -4
- package/dist/cjs/events/index.cjs.map +1 -1
- package/dist/cjs/events/index.min.cjs +1 -1
- package/dist/cjs/events/index.min.cjs.map +1 -1
- package/dist/cjs/index.cjs +588 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.min.cjs +3 -1
- package/dist/cjs/index.min.cjs.map +1 -1
- package/dist/cjs/instance/index.cjs +514 -64
- package/dist/cjs/instance/index.cjs.map +1 -1
- package/dist/cjs/instance/index.min.cjs +3 -3
- package/dist/cjs/instance/index.min.cjs.map +1 -1
- package/dist/cjs/jobs/adapters/redis/index.cjs +979 -0
- package/dist/cjs/jobs/adapters/redis/index.cjs.map +1 -0
- package/dist/cjs/jobs/adapters/redis/index.min.cjs +4 -0
- package/dist/cjs/jobs/adapters/redis/index.min.cjs.map +1 -0
- package/dist/cjs/jobs/index.cjs +55 -2
- package/dist/cjs/jobs/index.cjs.map +1 -1
- package/dist/cjs/jobs/index.min.cjs +1 -1
- package/dist/cjs/jobs/index.min.cjs.map +1 -1
- package/dist/cjs/orm/adapters/in-memory/index.cjs +2551 -0
- package/dist/cjs/orm/adapters/in-memory/index.cjs.map +1 -0
- package/dist/cjs/orm/adapters/in-memory/index.min.cjs +4 -0
- package/dist/cjs/orm/adapters/in-memory/index.min.cjs.map +1 -0
- package/dist/cjs/orm/adapters/json/index.cjs +3518 -0
- package/dist/cjs/orm/adapters/json/index.cjs.map +1 -0
- package/dist/cjs/orm/adapters/json/index.min.cjs +4 -0
- package/dist/cjs/orm/adapters/json/index.min.cjs.map +1 -0
- package/dist/cjs/orm/adapters/mongodb/index.cjs +3299 -0
- package/dist/cjs/orm/adapters/mongodb/index.cjs.map +1 -0
- package/dist/cjs/orm/adapters/mongodb/index.min.cjs +4 -0
- package/dist/cjs/orm/adapters/mongodb/index.min.cjs.map +1 -0
- package/dist/cjs/orm/adapters/postgresql/index.cjs +4114 -0
- package/dist/cjs/orm/adapters/postgresql/index.cjs.map +1 -0
- package/dist/cjs/orm/adapters/postgresql/index.min.cjs +49 -0
- package/dist/cjs/orm/adapters/postgresql/index.min.cjs.map +1 -0
- package/dist/cjs/orm/index.cjs +9216 -0
- package/dist/cjs/orm/index.cjs.map +1 -0
- package/dist/cjs/orm/index.min.cjs +4 -0
- package/dist/cjs/orm/index.min.cjs.map +1 -0
- package/dist/cjs/server/adapters/express/index.cjs +1705 -0
- package/dist/cjs/server/adapters/express/index.cjs.map +1 -0
- package/dist/cjs/server/adapters/express/index.min.cjs +32 -0
- package/dist/cjs/server/adapters/express/index.min.cjs.map +1 -0
- package/dist/cjs/server/adapters/fastify/index.cjs +1709 -0
- package/dist/cjs/server/adapters/fastify/index.cjs.map +1 -0
- package/dist/cjs/server/adapters/fastify/index.min.cjs +32 -0
- package/dist/cjs/server/adapters/fastify/index.min.cjs.map +1 -0
- package/dist/cjs/server/index.cjs +1600 -9
- package/dist/cjs/server/index.cjs.map +1 -1
- package/dist/cjs/server/index.min.cjs +31 -1
- package/dist/cjs/server/index.min.cjs.map +1 -1
- package/dist/cjs/types/index.cjs +18 -1
- package/dist/cjs/types/index.cjs.map +1 -1
- package/dist/cjs/types/index.min.cjs +1 -1
- package/dist/cjs/types/index.min.cjs.map +1 -1
- package/dist/cjs/utilities/index.cjs +862 -7
- package/dist/cjs/utilities/index.cjs.map +1 -1
- package/dist/cjs/utilities/index.min.cjs +3 -1
- package/dist/cjs/utilities/index.min.cjs.map +1 -1
- package/dist/cjs/validations/index.cjs +679 -10
- package/dist/cjs/validations/index.cjs.map +1 -1
- package/dist/cjs/validations/index.min.cjs +3 -1
- package/dist/cjs/validations/index.min.cjs.map +1 -1
- package/dist/esm/cache/adapters/in-memory/index.min.mjs +2 -0
- package/dist/esm/cache/adapters/in-memory/index.min.mjs.map +1 -0
- package/dist/esm/cache/adapters/in-memory/index.mjs +93 -0
- package/dist/esm/cache/adapters/in-memory/index.mjs.map +1 -0
- package/dist/esm/cache/adapters/redis/index.min.mjs +2 -0
- package/dist/esm/cache/adapters/redis/index.mjs +13 -0
- package/dist/esm/cache/index.min.mjs +1 -1
- package/dist/esm/cache/index.min.mjs.map +1 -1
- package/dist/esm/cache/index.mjs +9 -4
- package/dist/esm/cache/index.mjs.map +1 -1
- package/dist/esm/chunk-2TCFNKRZ.mjs +1824 -0
- package/dist/esm/chunk-2TCFNKRZ.mjs.map +1 -0
- package/dist/esm/chunk-6DW4GW3R.min.mjs +2 -0
- package/dist/esm/chunk-6DW4GW3R.min.mjs.map +1 -0
- package/dist/esm/chunk-6SB5M4XH.mjs +795 -0
- package/dist/esm/chunk-6SB5M4XH.mjs.map +1 -0
- package/dist/esm/chunk-AQY7QVYI.min.mjs +2 -0
- package/dist/esm/chunk-AUKXL4EA.min.mjs +2 -0
- package/dist/esm/chunk-AUKXL4EA.min.mjs.map +1 -0
- package/dist/esm/chunk-BJNIUCPT.min.mjs +2 -0
- package/dist/esm/chunk-BJNIUCPT.min.mjs.map +1 -0
- package/dist/esm/chunk-DKPZJIIR.mjs +29 -0
- package/dist/esm/chunk-DKPZJIIR.mjs.map +1 -0
- package/dist/esm/chunk-DSUJ5FUL.min.mjs +2 -0
- package/dist/esm/chunk-DSUJ5FUL.min.mjs.map +1 -0
- package/dist/esm/chunk-ECBJ3NT3.min.mjs +2 -0
- package/dist/esm/chunk-ECBJ3NT3.min.mjs.map +1 -0
- package/dist/{types/events/types/kafka.js → esm/chunk-I4BB436E.mjs} +60 -37
- package/dist/esm/chunk-I4BB436E.mjs.map +1 -0
- package/dist/esm/chunk-IEBC3OWN.mjs +22 -0
- package/dist/esm/chunk-IEBC3OWN.mjs.map +1 -0
- package/dist/esm/chunk-J5LGTIGS.mjs +10 -0
- package/dist/esm/chunk-KW3PBDFD.mjs +53 -0
- package/dist/esm/chunk-KW3PBDFD.mjs.map +1 -0
- package/dist/esm/chunk-LTDVZJYJ.min.mjs +32 -0
- package/dist/esm/chunk-LTDVZJYJ.min.mjs.map +1 -0
- package/dist/esm/chunk-MYGAF2AC.min.mjs +2 -0
- package/dist/esm/chunk-MYGAF2AC.min.mjs.map +1 -0
- package/dist/esm/chunk-OXI6IKAM.min.mjs +2 -0
- package/dist/esm/chunk-OXI6IKAM.min.mjs.map +1 -0
- package/dist/esm/chunk-RIRBNBTC.mjs +113 -0
- package/dist/esm/chunk-RIRBNBTC.mjs.map +1 -0
- package/dist/esm/chunk-TWKHVLLT.mjs +1280 -0
- package/dist/esm/chunk-TWKHVLLT.mjs.map +1 -0
- package/dist/esm/chunk-VCCS7CAI.mjs +8 -0
- package/dist/esm/chunk-VCCS7CAI.mjs.map +1 -0
- package/dist/esm/chunk-WHIWTP2Z.min.mjs +2 -0
- package/dist/esm/chunk-WHIWTP2Z.min.mjs.map +1 -0
- package/dist/esm/chunk-YTHRK2PO.mjs +126 -0
- package/dist/esm/chunk-YTHRK2PO.mjs.map +1 -0
- package/dist/esm/chunk-YTM6ZURZ.min.mjs +2 -0
- package/dist/esm/chunk-YTM6ZURZ.min.mjs.map +1 -0
- package/dist/esm/dbs/adapters/mongodb/index.min.mjs +2 -0
- package/dist/esm/dbs/adapters/mongodb/index.min.mjs.map +1 -0
- package/dist/esm/dbs/adapters/mongodb/index.mjs +419 -0
- package/dist/esm/dbs/adapters/mongodb/index.mjs.map +1 -0
- package/dist/esm/dbs/index.min.mjs +1 -1
- package/dist/esm/dbs/index.min.mjs.map +1 -1
- package/dist/esm/dbs/index.mjs +22 -6
- package/dist/esm/dbs/index.mjs.map +1 -1
- package/dist/esm/errors/index.min.mjs +1 -1
- package/dist/esm/errors/index.min.mjs.map +1 -1
- package/dist/esm/errors/index.mjs +22 -8
- package/dist/esm/errors/index.mjs.map +1 -1
- package/dist/esm/events/adapters/kafka/index.min.mjs +2 -0
- package/dist/esm/events/adapters/kafka/index.min.mjs.map +1 -0
- package/dist/esm/events/adapters/kafka/index.mjs +12 -0
- package/dist/esm/events/adapters/kafka/index.mjs.map +1 -0
- package/dist/esm/events/adapters/rabbitmq/index.min.mjs +2 -0
- package/dist/esm/events/adapters/rabbitmq/index.min.mjs.map +1 -0
- package/dist/esm/events/adapters/rabbitmq/index.mjs +92 -0
- package/dist/esm/events/adapters/rabbitmq/index.mjs.map +1 -0
- package/dist/esm/events/index.min.mjs +1 -1
- package/dist/esm/events/index.min.mjs.map +1 -1
- package/dist/esm/events/index.mjs +7 -4
- package/dist/esm/events/index.mjs.map +1 -1
- package/dist/esm/index.min.mjs +1 -1
- package/dist/esm/index.min.mjs.map +1 -1
- package/dist/esm/index.mjs +8 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/instance/index.min.mjs +1 -3
- package/dist/esm/instance/index.min.mjs.map +1 -1
- package/dist/esm/instance/index.mjs +4 -132
- package/dist/esm/instance/index.mjs.map +1 -1
- package/dist/esm/introspection-GP3G26B6.min.mjs +2 -0
- package/dist/esm/introspection-GP3G26B6.min.mjs.map +1 -0
- package/dist/esm/introspection-Y7EXSYPD.mjs +10 -0
- package/dist/esm/introspection-Y7EXSYPD.mjs.map +1 -0
- package/dist/esm/jobs/adapters/redis/index.min.mjs +2 -0
- package/dist/esm/jobs/adapters/redis/index.min.mjs.map +1 -0
- package/dist/esm/jobs/{types/redis.mjs → adapters/redis/index.mjs} +71 -56
- package/dist/esm/jobs/adapters/redis/index.mjs.map +1 -0
- package/dist/esm/jobs/index.min.mjs +1 -1
- package/dist/esm/jobs/index.min.mjs.map +1 -1
- package/dist/esm/jobs/index.mjs +9 -2
- package/dist/esm/jobs/index.mjs.map +1 -1
- package/dist/esm/orm/adapters/in-memory/index.min.mjs +2 -0
- package/dist/esm/orm/adapters/in-memory/index.min.mjs.map +1 -0
- package/dist/esm/orm/adapters/in-memory/index.mjs +11 -0
- package/dist/esm/orm/adapters/in-memory/index.mjs.map +1 -0
- package/dist/esm/orm/adapters/json/index.min.mjs +2 -0
- package/dist/esm/orm/adapters/json/index.min.mjs.map +1 -0
- package/dist/esm/orm/adapters/json/index.mjs +980 -0
- package/dist/esm/orm/adapters/json/index.mjs.map +1 -0
- package/dist/esm/orm/adapters/mongodb/index.min.mjs +2 -0
- package/dist/esm/orm/adapters/mongodb/index.min.mjs.map +1 -0
- package/dist/esm/orm/adapters/mongodb/index.mjs +1539 -0
- package/dist/esm/orm/adapters/mongodb/index.mjs.map +1 -0
- package/dist/esm/orm/adapters/postgresql/index.min.mjs +47 -0
- package/dist/esm/orm/adapters/postgresql/index.min.mjs.map +1 -0
- package/dist/esm/orm/adapters/postgresql/index.mjs +2070 -0
- package/dist/esm/orm/adapters/postgresql/index.mjs.map +1 -0
- package/dist/esm/orm/index.min.mjs +2 -0
- package/dist/esm/orm/index.min.mjs.map +1 -0
- package/dist/esm/orm/index.mjs +7326 -0
- package/dist/esm/orm/index.mjs.map +1 -0
- package/dist/esm/server/adapters/express/index.min.mjs +2 -0
- package/dist/esm/server/adapters/express/index.min.mjs.map +1 -0
- package/dist/esm/server/adapters/express/index.mjs +126 -0
- package/dist/esm/server/adapters/express/index.mjs.map +1 -0
- package/dist/esm/server/adapters/fastify/index.min.mjs +2 -0
- package/dist/esm/server/adapters/fastify/index.min.mjs.map +1 -0
- package/dist/{types/server/impls/fastify.js → esm/server/adapters/fastify/index.mjs} +56 -45
- package/dist/esm/server/adapters/fastify/index.mjs.map +1 -0
- package/dist/esm/server/index.min.mjs +1 -1
- package/dist/esm/server/index.min.mjs.map +1 -1
- package/dist/esm/server/index.mjs +38 -9
- package/dist/esm/server/index.mjs.map +1 -1
- package/dist/esm/types/index.min.mjs +0 -1
- package/dist/esm/types/index.min.mjs.map +1 -1
- package/dist/esm/types/index.mjs +0 -1
- package/dist/esm/types/index.mjs.map +1 -1
- package/dist/esm/utilities/index.min.mjs +1 -1
- package/dist/esm/utilities/index.min.mjs.map +1 -1
- package/dist/esm/utilities/index.mjs +22 -9
- package/dist/esm/utilities/index.mjs.map +1 -1
- package/dist/esm/validations/index.min.mjs +1 -1
- package/dist/esm/validations/index.min.mjs.map +1 -1
- package/dist/esm/validations/index.mjs +8 -18
- package/dist/esm/validations/index.mjs.map +1 -1
- package/dist/types/adapter-Coap9ISX.d.ts +1435 -0
- package/dist/types/{fastify-DLPUK3vD.d.ts → base-3PpBAx1K.d.ts} +58 -143
- package/dist/types/cache/adapters/in-memory/index.d.ts +21 -0
- package/dist/types/cache/adapters/in-memory/index.js +92 -0
- package/dist/types/cache/adapters/redis/index.d.ts +73 -0
- package/dist/types/cache/adapters/redis/index.js +12 -0
- package/dist/types/cache/index.d.ts +2 -42
- package/dist/types/cache/index.js +9 -4
- package/dist/types/chunk-32DMHN3G.js +1823 -0
- package/dist/types/chunk-4LRJJSGG.js +112 -0
- package/dist/types/chunk-A2MRYMCA.js +1279 -0
- package/dist/types/chunk-H6JBLKX5.js +794 -0
- package/dist/{esm/events/types/kafka.mjs → types/chunk-IAHTILKJ.js} +59 -38
- package/dist/types/chunk-JZ2JTENY.js +125 -0
- package/dist/types/chunk-KZKFYO4V.js +7 -0
- package/dist/types/chunk-LN3A6R4Y.js +28 -0
- package/dist/types/chunk-LWUMIHL4.js +21 -0
- package/dist/types/chunk-MLKGABMK.js +9 -0
- package/dist/types/chunk-XOU2A2Y6.js +52 -0
- package/dist/types/{core-BrkNSwvc.d.ts → core-tNlIMH9Y.d.ts} +48 -38
- package/dist/types/dbs/adapters/mongodb/index.d.ts +43 -0
- package/dist/types/dbs/adapters/mongodb/index.js +418 -0
- package/dist/types/dbs/index.d.ts +14 -12
- package/dist/types/dbs/index.js +22 -6
- package/dist/types/equippedError-Cmo60Kn-.d.ts +8 -0
- package/dist/types/errors/index.d.ts +3 -3
- package/dist/types/errors/index.js +22 -8
- package/dist/types/events/adapters/kafka/index.d.ts +83 -0
- package/dist/types/events/adapters/kafka/index.js +11 -0
- package/dist/types/events/adapters/rabbitmq/index.d.ts +41 -0
- package/dist/types/events/adapters/rabbitmq/index.js +91 -0
- package/dist/types/events/index.d.ts +11 -11
- package/dist/types/events/index.js +7 -4
- package/dist/types/index.d.ts +2 -25
- package/dist/types/index.js +8 -1
- package/dist/types/instance/index.d.ts +12 -179
- package/dist/types/instance/index.js +4 -132
- package/dist/types/introspection-ZQCAW254.js +9 -0
- package/dist/types/jobs/adapters/redis/index.d.ts +93 -0
- package/dist/types/jobs/{types/redis.js → adapters/redis/index.js} +70 -55
- package/dist/types/jobs/index.d.ts +19 -35
- package/dist/types/jobs/index.js +9 -2
- package/dist/types/orm/adapters/in-memory/index.d.ts +92 -0
- package/dist/types/orm/adapters/in-memory/index.js +10 -0
- package/dist/types/orm/adapters/json/index.d.ts +72 -0
- package/dist/types/orm/adapters/json/index.js +979 -0
- package/dist/types/orm/adapters/mongodb/index.d.ts +74 -0
- package/dist/types/orm/adapters/mongodb/index.js +1538 -0
- package/dist/types/orm/adapters/postgresql/index.d.ts +112 -0
- package/dist/types/orm/adapters/postgresql/index.js +2069 -0
- package/dist/types/orm/index.d.ts +160 -0
- package/dist/types/orm/index.js +7325 -0
- package/dist/types/{requestError-C2PNWUrt.d.ts → requestError-DdaL8hc3.d.ts} +2 -8
- package/dist/types/server/adapters/express/index.d.ts +194 -0
- package/dist/types/server/adapters/express/index.js +125 -0
- package/dist/types/server/adapters/fastify/index.d.ts +219 -0
- package/dist/{esm/server/impls/fastify.mjs → types/server/adapters/fastify/index.js} +55 -46
- package/dist/types/server/index.d.ts +10 -11
- package/dist/types/server/index.js +38 -9
- package/dist/types/types/index.js +0 -1
- package/dist/types/utilities/index.d.ts +22 -9
- package/dist/types/utilities/index.js +22 -9
- package/dist/types/{validationError-Bw8OYv5s.d.ts → validationError-oigtHqBi.d.ts} +1 -1
- package/dist/types/validations/index.d.ts +3 -2
- package/dist/types/validations/index.js +8 -18
- package/package.json +154 -15
- package/dist/cjs/audit/events.cjs +0 -101
- package/dist/cjs/audit/events.cjs.map +0 -1
- package/dist/cjs/audit/events.min.cjs +0 -2
- package/dist/cjs/audit/events.min.cjs.map +0 -1
- package/dist/cjs/audit/index.cjs +0 -2
- package/dist/cjs/audit/index.cjs.map +0 -1
- package/dist/cjs/audit/index.min.cjs +0 -2
- package/dist/cjs/audit/index.min.cjs.map +0 -1
- package/dist/cjs/cache/base.cjs +0 -6
- package/dist/cjs/cache/base.cjs.map +0 -1
- package/dist/cjs/cache/base.min.cjs +0 -2
- package/dist/cjs/cache/base.min.cjs.map +0 -1
- package/dist/cjs/cache/pipes.cjs +0 -16
- package/dist/cjs/cache/pipes.cjs.map +0 -1
- package/dist/cjs/cache/pipes.min.cjs +0 -2
- package/dist/cjs/cache/pipes.min.cjs.map +0 -1
- package/dist/cjs/cache/types/in-memory.cjs +0 -47
- package/dist/cjs/cache/types/in-memory.cjs.map +0 -1
- package/dist/cjs/cache/types/in-memory.min.cjs +0 -2
- package/dist/cjs/cache/types/in-memory.min.cjs.map +0 -1
- package/dist/cjs/cache/types/redis.cjs +0 -55
- package/dist/cjs/cache/types/redis.cjs.map +0 -1
- package/dist/cjs/cache/types/redis.min.cjs +0 -2
- package/dist/cjs/cache/types/redis.min.cjs.map +0 -1
- package/dist/cjs/dbs/base/changes.cjs +0 -36
- package/dist/cjs/dbs/base/changes.cjs.map +0 -1
- package/dist/cjs/dbs/base/changes.min.cjs +0 -2
- package/dist/cjs/dbs/base/changes.min.cjs.map +0 -1
- package/dist/cjs/dbs/base/core.cjs +0 -1
- package/dist/cjs/dbs/base/core.cjs.map +0 -1
- package/dist/cjs/dbs/base/core.min.cjs +0 -1
- package/dist/cjs/dbs/base/core.min.cjs.map +0 -1
- package/dist/cjs/dbs/base/db.cjs +0 -14
- package/dist/cjs/dbs/base/db.cjs.map +0 -1
- package/dist/cjs/dbs/base/db.min.cjs +0 -2
- package/dist/cjs/dbs/base/db.min.cjs.map +0 -1
- package/dist/cjs/dbs/base/types.cjs +0 -2
- package/dist/cjs/dbs/base/types.cjs.map +0 -1
- package/dist/cjs/dbs/base/types.min.cjs +0 -2
- package/dist/cjs/dbs/base/types.min.cjs.map +0 -1
- package/dist/cjs/dbs/mongo/changes.cjs +0 -81
- package/dist/cjs/dbs/mongo/changes.cjs.map +0 -1
- package/dist/cjs/dbs/mongo/changes.min.cjs +0 -2
- package/dist/cjs/dbs/mongo/changes.min.cjs.map +0 -1
- package/dist/cjs/dbs/mongo/db.cjs +0 -225
- package/dist/cjs/dbs/mongo/db.cjs.map +0 -1
- package/dist/cjs/dbs/mongo/db.min.cjs +0 -2
- package/dist/cjs/dbs/mongo/db.min.cjs.map +0 -1
- package/dist/cjs/dbs/mongo/query.cjs +0 -66
- package/dist/cjs/dbs/mongo/query.cjs.map +0 -1
- package/dist/cjs/dbs/mongo/query.min.cjs +0 -2
- package/dist/cjs/dbs/mongo/query.min.cjs.map +0 -1
- package/dist/cjs/dbs/pipes.cjs +0 -104
- package/dist/cjs/dbs/pipes.cjs.map +0 -1
- package/dist/cjs/dbs/pipes.min.cjs +0 -2
- package/dist/cjs/dbs/pipes.min.cjs.map +0 -1
- package/dist/cjs/errors/equippedError.cjs +0 -12
- package/dist/cjs/errors/equippedError.cjs.map +0 -1
- package/dist/cjs/errors/equippedError.min.cjs +0 -2
- package/dist/cjs/errors/equippedError.min.cjs.map +0 -1
- package/dist/cjs/errors/requestError.cjs +0 -12
- package/dist/cjs/errors/requestError.cjs.map +0 -1
- package/dist/cjs/errors/requestError.min.cjs +0 -2
- package/dist/cjs/errors/requestError.min.cjs.map +0 -1
- package/dist/cjs/errors/types/badRequestError.cjs +0 -12
- package/dist/cjs/errors/types/badRequestError.cjs.map +0 -1
- package/dist/cjs/errors/types/badRequestError.min.cjs +0 -2
- package/dist/cjs/errors/types/badRequestError.min.cjs.map +0 -1
- package/dist/cjs/errors/types/notAuthenticatedError.cjs +0 -12
- package/dist/cjs/errors/types/notAuthenticatedError.cjs.map +0 -1
- package/dist/cjs/errors/types/notAuthenticatedError.min.cjs +0 -2
- package/dist/cjs/errors/types/notAuthenticatedError.min.cjs.map +0 -1
- package/dist/cjs/errors/types/notAuthorizedError.cjs +0 -12
- package/dist/cjs/errors/types/notAuthorizedError.cjs.map +0 -1
- package/dist/cjs/errors/types/notAuthorizedError.min.cjs +0 -2
- package/dist/cjs/errors/types/notAuthorizedError.min.cjs.map +0 -1
- package/dist/cjs/errors/types/notFoundError.cjs +0 -12
- package/dist/cjs/errors/types/notFoundError.cjs.map +0 -1
- package/dist/cjs/errors/types/notFoundError.min.cjs +0 -2
- package/dist/cjs/errors/types/notFoundError.min.cjs.map +0 -1
- package/dist/cjs/errors/types/tokenExpired.cjs +0 -12
- package/dist/cjs/errors/types/tokenExpired.cjs.map +0 -1
- package/dist/cjs/errors/types/tokenExpired.min.cjs +0 -2
- package/dist/cjs/errors/types/tokenExpired.min.cjs.map +0 -1
- package/dist/cjs/errors/types/validationError.cjs +0 -16
- package/dist/cjs/errors/types/validationError.cjs.map +0 -1
- package/dist/cjs/errors/types/validationError.min.cjs +0 -2
- package/dist/cjs/errors/types/validationError.min.cjs.map +0 -1
- package/dist/cjs/events/base.cjs +0 -6
- package/dist/cjs/events/base.cjs.map +0 -1
- package/dist/cjs/events/base.min.cjs +0 -2
- package/dist/cjs/events/base.min.cjs.map +0 -1
- package/dist/cjs/events/pipes.cjs +0 -28
- package/dist/cjs/events/pipes.cjs.map +0 -1
- package/dist/cjs/events/pipes.min.cjs +0 -2
- package/dist/cjs/events/pipes.min.cjs.map +0 -1
- package/dist/cjs/events/types/kafka.cjs +0 -80
- package/dist/cjs/events/types/kafka.cjs.map +0 -1
- package/dist/cjs/events/types/kafka.min.cjs +0 -2
- package/dist/cjs/events/types/kafka.min.cjs.map +0 -1
- package/dist/cjs/events/types/rabbitmq.cjs +0 -54
- package/dist/cjs/events/types/rabbitmq.cjs.map +0 -1
- package/dist/cjs/events/types/rabbitmq.min.cjs +0 -2
- package/dist/cjs/events/types/rabbitmq.min.cjs.map +0 -1
- package/dist/cjs/instance/hooks.cjs +0 -26
- package/dist/cjs/instance/hooks.cjs.map +0 -1
- package/dist/cjs/instance/hooks.min.cjs +0 -2
- package/dist/cjs/instance/hooks.min.cjs.map +0 -1
- package/dist/cjs/instance/settings.cjs +0 -57
- package/dist/cjs/instance/settings.cjs.map +0 -1
- package/dist/cjs/instance/settings.min.cjs +0 -2
- package/dist/cjs/instance/settings.min.cjs.map +0 -1
- package/dist/cjs/jobs/pipes.cjs +0 -13
- package/dist/cjs/jobs/pipes.cjs.map +0 -1
- package/dist/cjs/jobs/pipes.min.cjs +0 -2
- package/dist/cjs/jobs/pipes.min.cjs.map +0 -1
- package/dist/cjs/jobs/types/redis.cjs +0 -106
- package/dist/cjs/jobs/types/redis.cjs.map +0 -1
- package/dist/cjs/jobs/types/redis.min.cjs +0 -2
- package/dist/cjs/jobs/types/redis.min.cjs.map +0 -1
- package/dist/cjs/server/impls/base.cjs +0 -211
- package/dist/cjs/server/impls/base.cjs.map +0 -1
- package/dist/cjs/server/impls/base.min.cjs +0 -2
- package/dist/cjs/server/impls/base.min.cjs.map +0 -1
- package/dist/cjs/server/impls/express.cjs +0 -111
- package/dist/cjs/server/impls/express.cjs.map +0 -1
- package/dist/cjs/server/impls/express.min.cjs +0 -2
- package/dist/cjs/server/impls/express.min.cjs.map +0 -1
- package/dist/cjs/server/impls/fastify.cjs +0 -121
- package/dist/cjs/server/impls/fastify.cjs.map +0 -1
- package/dist/cjs/server/impls/fastify.min.cjs +0 -2
- package/dist/cjs/server/impls/fastify.min.cjs.map +0 -1
- package/dist/cjs/server/middlewares/index.cjs +0 -2
- package/dist/cjs/server/middlewares/index.cjs.map +0 -1
- package/dist/cjs/server/middlewares/index.min.cjs +0 -2
- package/dist/cjs/server/middlewares/index.min.cjs.map +0 -1
- package/dist/cjs/server/middlewares/requireAuthUser.cjs +0 -22
- package/dist/cjs/server/middlewares/requireAuthUser.cjs.map +0 -1
- package/dist/cjs/server/middlewares/requireAuthUser.min.cjs +0 -2
- package/dist/cjs/server/middlewares/requireAuthUser.min.cjs.map +0 -1
- package/dist/cjs/server/openapi.cjs +0 -191
- package/dist/cjs/server/openapi.cjs.map +0 -1
- package/dist/cjs/server/openapi.min.cjs +0 -30
- package/dist/cjs/server/openapi.min.cjs.map +0 -1
- package/dist/cjs/server/pipes.cjs +0 -67
- package/dist/cjs/server/pipes.cjs.map +0 -1
- package/dist/cjs/server/pipes.min.cjs +0 -2
- package/dist/cjs/server/pipes.min.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/apiKeys.cjs +0 -21
- package/dist/cjs/server/requests-auth-methods/apiKeys.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/apiKeys.min.cjs +0 -2
- package/dist/cjs/server/requests-auth-methods/apiKeys.min.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/base.cjs +0 -20
- package/dist/cjs/server/requests-auth-methods/base.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/base.min.cjs +0 -2
- package/dist/cjs/server/requests-auth-methods/base.min.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/index.cjs +0 -4
- package/dist/cjs/server/requests-auth-methods/index.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/index.min.cjs +0 -2
- package/dist/cjs/server/requests-auth-methods/index.min.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/jwt.cjs +0 -78
- package/dist/cjs/server/requests-auth-methods/jwt.cjs.map +0 -1
- package/dist/cjs/server/requests-auth-methods/jwt.min.cjs +0 -2
- package/dist/cjs/server/requests-auth-methods/jwt.min.cjs.map +0 -1
- package/dist/cjs/server/requests.cjs +0 -80
- package/dist/cjs/server/requests.cjs.map +0 -1
- package/dist/cjs/server/requests.min.cjs +0 -2
- package/dist/cjs/server/requests.min.cjs.map +0 -1
- package/dist/cjs/server/routes.cjs +0 -74
- package/dist/cjs/server/routes.cjs.map +0 -1
- package/dist/cjs/server/routes.min.cjs +0 -2
- package/dist/cjs/server/routes.min.cjs.map +0 -1
- package/dist/cjs/server/sockets.cjs +0 -126
- package/dist/cjs/server/sockets.cjs.map +0 -1
- package/dist/cjs/server/sockets.min.cjs +0 -2
- package/dist/cjs/server/sockets.min.cjs.map +0 -1
- package/dist/cjs/server/types.cjs +0 -34
- package/dist/cjs/server/types.cjs.map +0 -1
- package/dist/cjs/server/types.min.cjs +0 -2
- package/dist/cjs/server/types.min.cjs.map +0 -1
- package/dist/cjs/types/overrides.cjs +0 -1
- package/dist/cjs/types/overrides.cjs.map +0 -1
- package/dist/cjs/types/overrides.min.cjs +0 -1
- package/dist/cjs/types/overrides.min.cjs.map +0 -1
- package/dist/cjs/utilities/authProviders.cjs +0 -53
- package/dist/cjs/utilities/authProviders.cjs.map +0 -1
- package/dist/cjs/utilities/authProviders.min.cjs +0 -2
- package/dist/cjs/utilities/authProviders.min.cjs.map +0 -1
- package/dist/cjs/utilities/hash.cjs +0 -17
- package/dist/cjs/utilities/hash.cjs.map +0 -1
- package/dist/cjs/utilities/hash.min.cjs +0 -2
- package/dist/cjs/utilities/hash.min.cjs.map +0 -1
- package/dist/cjs/utilities/json.cjs +0 -16
- package/dist/cjs/utilities/json.cjs.map +0 -1
- package/dist/cjs/utilities/json.min.cjs +0 -2
- package/dist/cjs/utilities/json.min.cjs.map +0 -1
- package/dist/cjs/utilities/media.cjs +0 -13
- package/dist/cjs/utilities/media.cjs.map +0 -1
- package/dist/cjs/utilities/media.min.cjs +0 -2
- package/dist/cjs/utilities/media.min.cjs.map +0 -1
- package/dist/cjs/utilities/random.cjs +0 -12
- package/dist/cjs/utilities/random.cjs.map +0 -1
- package/dist/cjs/utilities/random.min.cjs +0 -2
- package/dist/cjs/utilities/random.min.cjs.map +0 -1
- package/dist/cjs/utilities/retry.cjs +0 -14
- package/dist/cjs/utilities/retry.cjs.map +0 -1
- package/dist/cjs/utilities/retry.min.cjs +0 -2
- package/dist/cjs/utilities/retry.min.cjs.map +0 -1
- package/dist/cjs/validations/valleyed.cjs +0 -43
- package/dist/cjs/validations/valleyed.cjs.map +0 -1
- package/dist/cjs/validations/valleyed.min.cjs +0 -2
- package/dist/cjs/validations/valleyed.min.cjs.map +0 -1
- package/dist/esm/audit/events.min.mjs +0 -2
- package/dist/esm/audit/events.min.mjs.map +0 -1
- package/dist/esm/audit/events.mjs +0 -101
- package/dist/esm/audit/events.mjs.map +0 -1
- package/dist/esm/audit/index.min.mjs +0 -2
- package/dist/esm/audit/index.min.mjs.map +0 -1
- package/dist/esm/audit/index.mjs +0 -2
- package/dist/esm/audit/index.mjs.map +0 -1
- package/dist/esm/cache/base.min.mjs +0 -2
- package/dist/esm/cache/base.min.mjs.map +0 -1
- package/dist/esm/cache/base.mjs +0 -6
- package/dist/esm/cache/base.mjs.map +0 -1
- package/dist/esm/cache/pipes.min.mjs +0 -2
- package/dist/esm/cache/pipes.min.mjs.map +0 -1
- package/dist/esm/cache/pipes.mjs +0 -16
- package/dist/esm/cache/pipes.mjs.map +0 -1
- package/dist/esm/cache/types/in-memory.min.mjs +0 -2
- package/dist/esm/cache/types/in-memory.min.mjs.map +0 -1
- package/dist/esm/cache/types/in-memory.mjs +0 -47
- package/dist/esm/cache/types/in-memory.mjs.map +0 -1
- package/dist/esm/cache/types/redis.min.mjs +0 -2
- package/dist/esm/cache/types/redis.min.mjs.map +0 -1
- package/dist/esm/cache/types/redis.mjs +0 -55
- package/dist/esm/cache/types/redis.mjs.map +0 -1
- package/dist/esm/dbs/base/changes.min.mjs +0 -2
- package/dist/esm/dbs/base/changes.min.mjs.map +0 -1
- package/dist/esm/dbs/base/changes.mjs +0 -36
- package/dist/esm/dbs/base/changes.mjs.map +0 -1
- package/dist/esm/dbs/base/core.min.mjs +0 -1
- package/dist/esm/dbs/base/core.mjs +0 -1
- package/dist/esm/dbs/base/db.min.mjs +0 -2
- package/dist/esm/dbs/base/db.min.mjs.map +0 -1
- package/dist/esm/dbs/base/db.mjs +0 -14
- package/dist/esm/dbs/base/db.mjs.map +0 -1
- package/dist/esm/dbs/base/types.min.mjs +0 -2
- package/dist/esm/dbs/base/types.min.mjs.map +0 -1
- package/dist/esm/dbs/base/types.mjs +0 -2
- package/dist/esm/dbs/base/types.mjs.map +0 -1
- package/dist/esm/dbs/mongo/changes.min.mjs +0 -2
- package/dist/esm/dbs/mongo/changes.min.mjs.map +0 -1
- package/dist/esm/dbs/mongo/changes.mjs +0 -81
- package/dist/esm/dbs/mongo/changes.mjs.map +0 -1
- package/dist/esm/dbs/mongo/db.min.mjs +0 -2
- package/dist/esm/dbs/mongo/db.min.mjs.map +0 -1
- package/dist/esm/dbs/mongo/db.mjs +0 -225
- package/dist/esm/dbs/mongo/db.mjs.map +0 -1
- package/dist/esm/dbs/mongo/query.min.mjs +0 -2
- package/dist/esm/dbs/mongo/query.min.mjs.map +0 -1
- package/dist/esm/dbs/mongo/query.mjs +0 -66
- package/dist/esm/dbs/mongo/query.mjs.map +0 -1
- package/dist/esm/dbs/pipes.min.mjs +0 -2
- package/dist/esm/dbs/pipes.min.mjs.map +0 -1
- package/dist/esm/dbs/pipes.mjs +0 -104
- package/dist/esm/dbs/pipes.mjs.map +0 -1
- package/dist/esm/errors/equippedError.min.mjs +0 -2
- package/dist/esm/errors/equippedError.min.mjs.map +0 -1
- package/dist/esm/errors/equippedError.mjs +0 -12
- package/dist/esm/errors/equippedError.mjs.map +0 -1
- package/dist/esm/errors/requestError.min.mjs +0 -2
- package/dist/esm/errors/requestError.min.mjs.map +0 -1
- package/dist/esm/errors/requestError.mjs +0 -12
- package/dist/esm/errors/requestError.mjs.map +0 -1
- package/dist/esm/errors/types/badRequestError.min.mjs +0 -2
- package/dist/esm/errors/types/badRequestError.min.mjs.map +0 -1
- package/dist/esm/errors/types/badRequestError.mjs +0 -12
- package/dist/esm/errors/types/badRequestError.mjs.map +0 -1
- package/dist/esm/errors/types/notAuthenticatedError.min.mjs +0 -2
- package/dist/esm/errors/types/notAuthenticatedError.min.mjs.map +0 -1
- package/dist/esm/errors/types/notAuthenticatedError.mjs +0 -12
- package/dist/esm/errors/types/notAuthenticatedError.mjs.map +0 -1
- package/dist/esm/errors/types/notAuthorizedError.min.mjs +0 -2
- package/dist/esm/errors/types/notAuthorizedError.min.mjs.map +0 -1
- package/dist/esm/errors/types/notAuthorizedError.mjs +0 -12
- package/dist/esm/errors/types/notAuthorizedError.mjs.map +0 -1
- package/dist/esm/errors/types/notFoundError.min.mjs +0 -2
- package/dist/esm/errors/types/notFoundError.min.mjs.map +0 -1
- package/dist/esm/errors/types/notFoundError.mjs +0 -12
- package/dist/esm/errors/types/notFoundError.mjs.map +0 -1
- package/dist/esm/errors/types/tokenExpired.min.mjs +0 -2
- package/dist/esm/errors/types/tokenExpired.min.mjs.map +0 -1
- package/dist/esm/errors/types/tokenExpired.mjs +0 -12
- package/dist/esm/errors/types/tokenExpired.mjs.map +0 -1
- package/dist/esm/errors/types/validationError.min.mjs +0 -2
- package/dist/esm/errors/types/validationError.min.mjs.map +0 -1
- package/dist/esm/errors/types/validationError.mjs +0 -16
- package/dist/esm/errors/types/validationError.mjs.map +0 -1
- package/dist/esm/events/base.min.mjs +0 -2
- package/dist/esm/events/base.min.mjs.map +0 -1
- package/dist/esm/events/base.mjs +0 -6
- package/dist/esm/events/base.mjs.map +0 -1
- package/dist/esm/events/pipes.min.mjs +0 -2
- package/dist/esm/events/pipes.min.mjs.map +0 -1
- package/dist/esm/events/pipes.mjs +0 -28
- package/dist/esm/events/pipes.mjs.map +0 -1
- package/dist/esm/events/types/kafka.min.mjs +0 -2
- package/dist/esm/events/types/kafka.min.mjs.map +0 -1
- package/dist/esm/events/types/kafka.mjs.map +0 -1
- package/dist/esm/events/types/rabbitmq.min.mjs +0 -2
- package/dist/esm/events/types/rabbitmq.min.mjs.map +0 -1
- package/dist/esm/events/types/rabbitmq.mjs +0 -54
- package/dist/esm/events/types/rabbitmq.mjs.map +0 -1
- package/dist/esm/instance/hooks.min.mjs +0 -2
- package/dist/esm/instance/hooks.min.mjs.map +0 -1
- package/dist/esm/instance/hooks.mjs +0 -26
- package/dist/esm/instance/hooks.mjs.map +0 -1
- package/dist/esm/instance/settings.min.mjs +0 -2
- package/dist/esm/instance/settings.min.mjs.map +0 -1
- package/dist/esm/instance/settings.mjs +0 -57
- package/dist/esm/instance/settings.mjs.map +0 -1
- package/dist/esm/jobs/pipes.min.mjs +0 -2
- package/dist/esm/jobs/pipes.min.mjs.map +0 -1
- package/dist/esm/jobs/pipes.mjs +0 -13
- package/dist/esm/jobs/pipes.mjs.map +0 -1
- package/dist/esm/jobs/types/redis.min.mjs +0 -2
- package/dist/esm/jobs/types/redis.min.mjs.map +0 -1
- package/dist/esm/jobs/types/redis.mjs.map +0 -1
- package/dist/esm/server/impls/base.min.mjs +0 -2
- package/dist/esm/server/impls/base.min.mjs.map +0 -1
- package/dist/esm/server/impls/base.mjs +0 -211
- package/dist/esm/server/impls/base.mjs.map +0 -1
- package/dist/esm/server/impls/express.min.mjs +0 -2
- package/dist/esm/server/impls/express.min.mjs.map +0 -1
- package/dist/esm/server/impls/express.mjs +0 -111
- package/dist/esm/server/impls/express.mjs.map +0 -1
- package/dist/esm/server/impls/fastify.min.mjs +0 -2
- package/dist/esm/server/impls/fastify.min.mjs.map +0 -1
- package/dist/esm/server/impls/fastify.mjs.map +0 -1
- package/dist/esm/server/middlewares/index.min.mjs +0 -2
- package/dist/esm/server/middlewares/index.min.mjs.map +0 -1
- package/dist/esm/server/middlewares/index.mjs +0 -2
- package/dist/esm/server/middlewares/index.mjs.map +0 -1
- package/dist/esm/server/middlewares/requireAuthUser.min.mjs +0 -2
- package/dist/esm/server/middlewares/requireAuthUser.min.mjs.map +0 -1
- package/dist/esm/server/middlewares/requireAuthUser.mjs +0 -22
- package/dist/esm/server/middlewares/requireAuthUser.mjs.map +0 -1
- package/dist/esm/server/openapi.min.mjs +0 -30
- package/dist/esm/server/openapi.min.mjs.map +0 -1
- package/dist/esm/server/openapi.mjs +0 -191
- package/dist/esm/server/openapi.mjs.map +0 -1
- package/dist/esm/server/pipes.min.mjs +0 -2
- package/dist/esm/server/pipes.min.mjs.map +0 -1
- package/dist/esm/server/pipes.mjs +0 -67
- package/dist/esm/server/pipes.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/apiKeys.min.mjs +0 -2
- package/dist/esm/server/requests-auth-methods/apiKeys.min.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/apiKeys.mjs +0 -21
- package/dist/esm/server/requests-auth-methods/apiKeys.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/base.min.mjs +0 -2
- package/dist/esm/server/requests-auth-methods/base.min.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/base.mjs +0 -20
- package/dist/esm/server/requests-auth-methods/base.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/index.min.mjs +0 -2
- package/dist/esm/server/requests-auth-methods/index.min.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/index.mjs +0 -4
- package/dist/esm/server/requests-auth-methods/index.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/jwt.min.mjs +0 -2
- package/dist/esm/server/requests-auth-methods/jwt.min.mjs.map +0 -1
- package/dist/esm/server/requests-auth-methods/jwt.mjs +0 -78
- package/dist/esm/server/requests-auth-methods/jwt.mjs.map +0 -1
- package/dist/esm/server/requests.min.mjs +0 -2
- package/dist/esm/server/requests.min.mjs.map +0 -1
- package/dist/esm/server/requests.mjs +0 -80
- package/dist/esm/server/requests.mjs.map +0 -1
- package/dist/esm/server/routes.min.mjs +0 -2
- package/dist/esm/server/routes.min.mjs.map +0 -1
- package/dist/esm/server/routes.mjs +0 -74
- package/dist/esm/server/routes.mjs.map +0 -1
- package/dist/esm/server/sockets.min.mjs +0 -2
- package/dist/esm/server/sockets.min.mjs.map +0 -1
- package/dist/esm/server/sockets.mjs +0 -126
- package/dist/esm/server/sockets.mjs.map +0 -1
- package/dist/esm/server/types.min.mjs +0 -2
- package/dist/esm/server/types.min.mjs.map +0 -1
- package/dist/esm/server/types.mjs +0 -34
- package/dist/esm/server/types.mjs.map +0 -1
- package/dist/esm/types/overrides.min.mjs +0 -1
- package/dist/esm/types/overrides.mjs +0 -1
- package/dist/esm/utilities/authProviders.min.mjs +0 -2
- package/dist/esm/utilities/authProviders.min.mjs.map +0 -1
- package/dist/esm/utilities/authProviders.mjs +0 -53
- package/dist/esm/utilities/authProviders.mjs.map +0 -1
- package/dist/esm/utilities/hash.min.mjs +0 -2
- package/dist/esm/utilities/hash.min.mjs.map +0 -1
- package/dist/esm/utilities/hash.mjs +0 -17
- package/dist/esm/utilities/hash.mjs.map +0 -1
- package/dist/esm/utilities/json.min.mjs +0 -2
- package/dist/esm/utilities/json.min.mjs.map +0 -1
- package/dist/esm/utilities/json.mjs +0 -16
- package/dist/esm/utilities/json.mjs.map +0 -1
- package/dist/esm/utilities/media.min.mjs +0 -2
- package/dist/esm/utilities/media.min.mjs.map +0 -1
- package/dist/esm/utilities/media.mjs +0 -13
- package/dist/esm/utilities/media.mjs.map +0 -1
- package/dist/esm/utilities/random.min.mjs +0 -2
- package/dist/esm/utilities/random.min.mjs.map +0 -1
- package/dist/esm/utilities/random.mjs +0 -12
- package/dist/esm/utilities/random.mjs.map +0 -1
- package/dist/esm/utilities/retry.min.mjs +0 -2
- package/dist/esm/utilities/retry.min.mjs.map +0 -1
- package/dist/esm/utilities/retry.mjs +0 -14
- package/dist/esm/utilities/retry.mjs.map +0 -1
- package/dist/esm/validations/valleyed.min.mjs +0 -2
- package/dist/esm/validations/valleyed.min.mjs.map +0 -1
- package/dist/esm/validations/valleyed.mjs +0 -43
- package/dist/esm/validations/valleyed.mjs.map +0 -1
- package/dist/types/audit/events.js +0 -100
- package/dist/types/audit/index.d.ts +0 -44
- package/dist/types/audit/index.js +0 -1
- package/dist/types/cache/base.js +0 -5
- package/dist/types/cache/pipes.js +0 -15
- package/dist/types/cache/types/in-memory.js +0 -46
- package/dist/types/cache/types/redis.js +0 -54
- package/dist/types/db-C8YY1yTO.d.ts +0 -14
- package/dist/types/db-Dj1SGto0.d.ts +0 -24
- package/dist/types/dbs/base/changes.js +0 -35
- package/dist/types/dbs/base/core.js +0 -0
- package/dist/types/dbs/base/db.js +0 -13
- package/dist/types/dbs/base/types.js +0 -1
- package/dist/types/dbs/mongo/changes.js +0 -80
- package/dist/types/dbs/mongo/db.js +0 -224
- package/dist/types/dbs/mongo/query.js +0 -65
- package/dist/types/dbs/pipes.js +0 -103
- package/dist/types/errors/equippedError.js +0 -11
- package/dist/types/errors/requestError.js +0 -11
- package/dist/types/errors/types/badRequestError.js +0 -11
- package/dist/types/errors/types/notAuthenticatedError.js +0 -11
- package/dist/types/errors/types/notAuthorizedError.js +0 -11
- package/dist/types/errors/types/notFoundError.js +0 -11
- package/dist/types/errors/types/tokenExpired.js +0 -11
- package/dist/types/errors/types/validationError.js +0 -15
- package/dist/types/events/base.js +0 -5
- package/dist/types/events/pipes.js +0 -27
- package/dist/types/events/types/rabbitmq.js +0 -53
- package/dist/types/instance/hooks.js +0 -25
- package/dist/types/instance/settings.js +0 -56
- package/dist/types/jobs/pipes.js +0 -12
- package/dist/types/kafka-Cf-TUJgv.d.ts +0 -54
- package/dist/types/server/impls/base.js +0 -210
- package/dist/types/server/impls/express.js +0 -110
- package/dist/types/server/middlewares/index.js +0 -1
- package/dist/types/server/middlewares/requireAuthUser.js +0 -21
- package/dist/types/server/openapi.js +0 -190
- package/dist/types/server/pipes.js +0 -66
- package/dist/types/server/requests-auth-methods/apiKeys.js +0 -20
- package/dist/types/server/requests-auth-methods/base.js +0 -19
- package/dist/types/server/requests-auth-methods/index.js +0 -3
- package/dist/types/server/requests-auth-methods/jwt.js +0 -77
- package/dist/types/server/requests.js +0 -79
- package/dist/types/server/routes.js +0 -73
- package/dist/types/server/sockets.js +0 -125
- package/dist/types/server/types.js +0 -33
- package/dist/types/types/overrides.js +0 -0
- package/dist/types/utilities/authProviders.js +0 -52
- package/dist/types/utilities/hash.js +0 -16
- package/dist/types/utilities/json.js +0 -15
- package/dist/types/utilities/media.js +0 -12
- package/dist/types/utilities/random.js +0 -11
- package/dist/types/utilities/retry.js +0 -13
- package/dist/types/validations/valleyed.js +0 -42
- /package/dist/esm/{dbs/base/core.min.mjs.map → cache/adapters/redis/index.min.mjs.map} +0 -0
- /package/dist/esm/{dbs/base/core.mjs.map → cache/adapters/redis/index.mjs.map} +0 -0
- /package/dist/esm/{types/overrides.min.mjs.map → chunk-AQY7QVYI.min.mjs.map} +0 -0
- /package/dist/esm/{types/overrides.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as p}from "./chunk-ECBJ3NT3.min.mjs";import{K as n,a as c,m as r}from "./chunk-LTDVZJYJ.min.mjs";import{Cluster as d,Redis as u}from"ioredis";import{v as t}from"valleyed";var m=()=>t.meta(t.object({host:t.string(),port:t.optional(t.number()),password:t.optional(t.string()),username:t.optional(t.string()),tls:t.optional(t.boolean()),cluster:t.optional(t.boolean())}),{title:"Redis Config",$refId:"RedisConfig"}),l=class a extends r(m,p){#e;constructor(e,s){super(e);let o={...e.host?{host:e.host}:{},...e.port?{port:e.port}:{}},i={...s,...e.password?{password:e.password}:{},...e.username?{username:e.username}:{},...e.tls?{tls:{}}:{},lazyConnect:!0};this.#e=e.cluster?new d([o],{...s,redisOptions:i,lazyConnect:!0}):new u({...i,...o}),this.#e.on("error",async h=>{n.crash(new c("Redis failed with error",{},h))}),s||n.on("start",async()=>this.#e.connect(),{class:a}),n.on("close",async()=>this.#e.quit(),{class:a})}get connectionOptions(){return this.#e.options}async delete(e){await this.#e.del(this.getScopedKey(e))}async get(e){return await this.#e.get(this.getScopedKey(e))}async set(e,s,o){o?await this.#e.setex(this.getScopedKey(e),o,s):this.#e.set(this.getScopedKey(e),s)}};export{m as a,l as b};
|
|
2
|
+
//# sourceMappingURL=chunk-YTM6ZURZ.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cache/adapters/redis/index.ts"],"sourcesContent":["import { Cluster, Redis, type RedisOptions } from 'ioredis'\nimport { v } from 'valleyed'\n\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport { configurable } from '../../../utilities'\nimport { Cache } from '../base'\n\nexport const redisConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\thost: v.string(),\n\t\t\tport: v.optional(v.number()),\n\t\t\tpassword: v.optional(v.string()),\n\t\t\tusername: v.optional(v.string()),\n\t\t\ttls: v.optional(v.boolean()),\n\t\t\tcluster: v.optional(v.boolean()),\n\t\t}),\n\t\t{ title: 'Redis Config', $refId: 'RedisConfig' },\n\t)\n\nexport class RedisCache extends configurable(redisConfigPipe, Cache) {\n\t#client: Cluster | Redis\n\n\tprotected constructor(config: typeof RedisCache.Config, extraConfig?: Partial<RedisOptions>) {\n\t\tsuper(config)\n\t\tconst node = {\n\t\t\t...(config.host ? { host: config.host } : {}),\n\t\t\t...(config.port ? { port: config.port } : {}),\n\t\t}\n\t\tconst common = {\n\t\t\t...extraConfig,\n\t\t\t...(config.password ? { password: config.password } : {}),\n\t\t\t...(config.username ? { username: config.username } : {}),\n\t\t\t...(config.tls ? { tls: {} } : {}),\n\t\t\tlazyConnect: true,\n\t\t}\n\t\tthis.#client = config.cluster\n\t\t\t? new Cluster([node], {\n\t\t\t\t\t...extraConfig,\n\t\t\t\t\tredisOptions: common,\n\t\t\t\t\tlazyConnect: true,\n\t\t\t\t})\n\t\t\t: new Redis({ ...common, ...node })\n\t\tthis.#client.on('error', async (error) => {\n\t\t\tInstance.crash(new EquippedError(`Redis failed with error`, {}, error))\n\t\t})\n\t\tif (!extraConfig) Instance.on('start', async () => this.#client.connect(), { class: RedisCache })\n\t\tInstance.on('close', async () => this.#client.quit(), { class: RedisCache })\n\t}\n\n\tget connectionOptions() {\n\t\treturn this.#client.options\n\t}\n\n\tasync delete(key: string) {\n\t\tawait this.#client.del(this.getScopedKey(key))\n\t}\n\tasync get(key: string) {\n\t\treturn await this.#client.get(this.getScopedKey(key))\n\t}\n\tasync set(key: string, data: string, ttlInSecs?: number) {\n\t\tif (ttlInSecs) await this.#client.setex(this.getScopedKey(key), ttlInSecs, data)\n\t\telse this.#client.set(this.getScopedKey(key), data)\n\t}\n}\n\nif (import.meta.vitest) {\n\tconst { describe, test, expect, expectTypeOf, vi, beforeEach, afterEach } = import.meta.vitest\n\ttype PipeOutput<T> = import('valleyed').PipeOutput<T>\n\n\tlet hookCalls: Array<{ event: string; options?: any }>\n\n\tbeforeEach(() => {\n\t\thookCalls = []\n\t\tvi.spyOn(Instance, 'on').mockImplementation((event, _cb, options) => {\n\t\t\thookCalls.push({ event, options })\n\t\t})\n\t\tvi.spyOn(Instance, 'get').mockReturnValue({ getScopedName: (_name: string, _sep: string) => `test:${_name}` } as any)\n\t})\n\n\tafterEach(() => {\n\t\tvi.restoreAllMocks()\n\t})\n\n\tdescribe('RedisCache', () => {\n\t\ttest('create() produces a working instance', () => {\n\t\t\tconst cache = RedisCache.create({ host: 'localhost' })\n\t\t\texpect(cache).toBeInstanceOf(RedisCache)\n\t\t})\n\n\t\ttest('new RedisCache() is a compile error', () => {\n\t\t\t// @ts-expect-error — external `new` on a class with protected constructor is a compile error\n\t\t\tvoid (() => new RedisCache({ host: 'localhost' }))\n\t\t})\n\n\t\ttest('Instance.on calls use { class: RedisCache }', () => {\n\t\t\tRedisCache.create({ host: 'localhost' })\n\t\t\tconst startHook = hookCalls.find((h) => h.event === 'start')\n\t\t\tconst closeHook = hookCalls.find((h) => h.event === 'close')\n\t\t\texpect(startHook?.options).toEqual({ class: RedisCache })\n\t\t\texpect(closeHook?.options).toEqual({ class: RedisCache })\n\t\t})\n\n\t\ttest('skips start hook when extraConfig is provided', () => {\n\t\t\tRedisCache.create({ host: 'localhost' }, { maxRetriesPerRequest: null })\n\t\t\tconst startHooks = hookCalls.filter((h) => h.event === 'start')\n\t\t\tconst closeHooks = hookCalls.filter((h) => h.event === 'close')\n\t\t\texpect(startHooks).toHaveLength(0)\n\t\t\texpect(closeHooks).toHaveLength(1)\n\t\t})\n\n\t\ttest('Config type matches pipe output', () => {\n\t\t\ttype Expected = PipeOutput<ReturnType<typeof redisConfigPipe>>\n\t\t\texpectTypeOf<typeof RedisCache.Config>().toEqualTypeOf<Expected>()\n\t\t})\n\n\t\ttest('connectionOptions is accessible', () => {\n\t\t\tconst cache = RedisCache.create({ host: 'localhost', port: 6379 })\n\t\t\texpect(cache.connectionOptions).toBeDefined()\n\t\t})\n\t})\n}\n"],"mappings":"wGAAA,OAAS,WAAAA,EAAS,SAAAC,MAAgC,UAClD,OAAS,KAAAC,MAAS,WAOX,IAAMC,EAAkB,IAC9BC,EAAE,KACDA,EAAE,OAAO,CACR,KAAMA,EAAE,OAAO,EACf,KAAMA,EAAE,SAASA,EAAE,OAAO,CAAC,EAC3B,SAAUA,EAAE,SAASA,EAAE,OAAO,CAAC,EAC/B,SAAUA,EAAE,SAASA,EAAE,OAAO,CAAC,EAC/B,IAAKA,EAAE,SAASA,EAAE,QAAQ,CAAC,EAC3B,QAASA,EAAE,SAASA,EAAE,QAAQ,CAAC,CAChC,CAAC,EACD,CAAE,MAAO,eAAgB,OAAQ,aAAc,CAChD,EAEYC,EAAN,MAAMC,UAAmBC,EAAaJ,EAAiBK,CAAK,CAAE,CACpEC,GAEU,YAAYC,EAAkCC,EAAqC,CAC5F,MAAMD,CAAM,EACZ,IAAME,EAAO,CACZ,GAAIF,EAAO,KAAO,CAAE,KAAMA,EAAO,IAAK,EAAI,CAAC,EAC3C,GAAIA,EAAO,KAAO,CAAE,KAAMA,EAAO,IAAK,EAAI,CAAC,CAC5C,EACMG,EAAS,CACd,GAAGF,EACH,GAAID,EAAO,SAAW,CAAE,SAAUA,EAAO,QAAS,EAAI,CAAC,EACvD,GAAIA,EAAO,SAAW,CAAE,SAAUA,EAAO,QAAS,EAAI,CAAC,EACvD,GAAIA,EAAO,IAAM,CAAE,IAAK,CAAC,CAAE,EAAI,CAAC,EAChC,YAAa,EACd,EACA,KAAKD,GAAUC,EAAO,QACnB,IAAII,EAAQ,CAACF,CAAI,EAAG,CACpB,GAAGD,EACH,aAAcE,EACd,YAAa,EACd,CAAC,EACA,IAAIE,EAAM,CAAE,GAAGF,EAAQ,GAAGD,CAAK,CAAC,EACnC,KAAKH,GAAQ,GAAG,QAAS,MAAOO,GAAU,CACzCC,EAAS,MAAM,IAAIC,EAAc,0BAA2B,CAAC,EAAGF,CAAK,CAAC,CACvE,CAAC,EACIL,GAAaM,EAAS,GAAG,QAAS,SAAY,KAAKR,GAAQ,QAAQ,EAAG,CAAE,MAAOH,CAAW,CAAC,EAChGW,EAAS,GAAG,QAAS,SAAY,KAAKR,GAAQ,KAAK,EAAG,CAAE,MAAOH,CAAW,CAAC,CAC5E,CAEA,IAAI,mBAAoB,CACvB,OAAO,KAAKG,GAAQ,OACrB,CAEA,MAAM,OAAOU,EAAa,CACzB,MAAM,KAAKV,GAAQ,IAAI,KAAK,aAAaU,CAAG,CAAC,CAC9C,CACA,MAAM,IAAIA,EAAa,CACtB,OAAO,MAAM,KAAKV,GAAQ,IAAI,KAAK,aAAaU,CAAG,CAAC,CACrD,CACA,MAAM,IAAIA,EAAaC,EAAcC,EAAoB,CACpDA,EAAW,MAAM,KAAKZ,GAAQ,MAAM,KAAK,aAAaU,CAAG,EAAGE,EAAWD,CAAI,EAC1E,KAAKX,GAAQ,IAAI,KAAK,aAAaU,CAAG,EAAGC,CAAI,CACnD,CACD","names":["Cluster","Redis","v","redisConfigPipe","v","RedisCache","_RedisCache","configurable","Cache","#client","config","extraConfig","node","common","Cluster","Redis","error","Instance","EquippedError","key","data","ttlInSecs"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as T,b as P,c as $}from "../../../chunk-AUKXL4EA.min.mjs";import"../../../chunk-6DW4GW3R.min.mjs";import{K as w,a as C,t as O}from "../../../chunk-LTDVZJYJ.min.mjs";import"../../../chunk-DSUJ5FUL.min.mjs";import"../../../chunk-AQY7QVYI.min.mjs";import"mongodb";import{differ as v}from"valleyed";import B from"axios";import{v as R}from"valleyed";var S="db-changes",E=class{constructor(a,i,n){this.config=a;this.callbacks=i;this.mapper=n;this.config=R.assert(P(),a)}async configureConnector(a,i){let n=B.create({baseURL:this.config.debeziumUrl});return await n.put(`/connectors/${a}/config`,{"topic.prefix":S,"topic.creation.enable":"false","topic.creation.default.replication.factor":"-1","topic.creation.default.partitions":"-1","key.converter":"org.apache.kafka.connect.json.JsonConverter","key.converter.schemas.enable":"false","value.converter":"org.apache.kafka.connect.json.JsonConverter","value.converter.schemas.enable":"false",...i}).then(async()=>(await n.get(`/connectors/${a}/topics`)).data[a]?.topics?.includes?.(a)??!1).catch(l=>{throw new C("Failed to configure watcher",{key:a},l)})}};var k=class extends E{#e=!1;constructor(a,i,n,l,f){super(i,l,f);let d=r=>r._id?{...r,_id:r._id.$oid??r._id}:void 0,m=n.dbName,c=n.collectionName,e=`${m}.${c}`,t=`${S}.${e}`,o="5f5f65717569707065645f5f",s={_id:o};i.eventBus.stream(t,{skipScope:!0}).subscribe(async r=>{let p=r.op,u=JSON.parse(r.before??"null"),y=JSON.parse(r.after??"null");u&&(u=d(u)),y&&(y=d(y)),!(u?._id===o||y?._id===o)&&(p==="c"&&this.callbacks.created&&y?await this.callbacks.created({before:null,after:this.mapper(y)}):p==="u"&&this.callbacks.updated&&u&&y?await this.callbacks.updated({before:this.mapper(u),after:this.mapper(y),changes:v.from(v.diff(u,y))}):p==="d"&&this.callbacks.deleted&&u&&await this.callbacks.deleted({before:this.mapper(u),after:null}))}),w.on("start",async()=>{this.#e||(this.#e=!0,await O(async()=>await this.configureConnector(t,{"connector.class":"io.debezium.connector.mongodb.MongoDbConnector","capture.mode":"change_streams_update_full_with_pre_image","mongodb.connection.string":a.uri,"collection.include.list":e,"snapshot.mode":"when_needed","capture.scope":"collection","capture.target":e,"heartbeat.interval.ms":"60000","errors.max.retries":"3"})?{done:!0,value:!0}:(await n.findOneAndUpdate(s,{$set:{colName:c}},{upsert:!0}),await n.findOneAndDelete(s),w.get().log.warn(`Waiting for db changes for ${e} to start...`),{done:!1}),6,3e4).catch(r=>w.crash(new C("Failed to start db changes",{dbColName:e},r))))})}};import{AsyncLocalStorage as F}from"async_hooks";import{MongoClient as q,ObjectId as I}from"mongodb";import{v as N}from"valleyed";import{v as x}from"valleyed";var _=()=>x.meta(x.object({uri:x.string()}),{title:"Mongodb Config",$refId:"MongodbConfig"});import"mongodb";var Q=async(h,a)=>{let i=[],n=A(a.where,a.whereType);n&&i.push(n);let l=A(a.auth,a.authType);if(l&&i.push(l),a.search&&a.search.fields.length>0){let D=a.search.fields.map(j=>({[j]:{$regex:new RegExp(a.search.value,"i")}}));i.push({$or:D})}let f={};i.length>0&&(f.$and=i);let d=a.sort.map(D=>[D.field,D.desc?"desc":"asc"]),m=a.all??!1,c=a.limit,e=a.page,t=await h.countDocuments(f),o=a.select?.length?Object.fromEntries(a.select.map(D=>[D,1])):void 0,s=h.find(f,{projection:o});d.length&&(s=s.sort(Object.fromEntries(d))),!m&&c&&(s=s.limit(c),e&&(s=s.skip((e-1)*c)));let r=await s.toArray(),p=1,u=Math.ceil(t/c)||1,y=e>=u?null:e+1,b=e<=p?null:e-1;return{pages:{start:p,last:u,next:y,previous:b,current:e},docs:{limit:c,total:t,count:r.length},results:r}};function U(h){return Object.values($).includes(h.condition)}var A=(h,a="and")=>{let i=(Array.isArray(h)?h:[]).map(n=>{if(U(n))return A(n.value,n.condition);let{field:l}=n,f=l==="id"?"_id":l??"",d=n.value===void 0?"":n.value;return{field:f,value:d,condition:n.condition,isWhere:!0}}).filter(n=>!!n).map(n=>n.isWhere?{[`${n.field}`]:{[`$${n.condition}`]:n.value}}:n);return i.length>0?{[`$${a}`]:i}:null};var M="_id",g=new F(void 0),W=class extends T{constructor(i,n){super(n);this.mongoConfig=i;this.mongoConfig=N.assert(_(),i),this.client=new q(i.uri,{ignoreUndefined:!0}),w.on("start",async()=>{await this.client.connect();let l=this.#e.reduce((d,m)=>(d[m.db]||(d[m.db]=[]),d[m.db].push(m.col),d),{}),f={changeStreamPreAndPostImages:{enabled:!0}};await Promise.all(Object.entries(l).map(async([d,m])=>{let c=this.client.db(d),e=await c.listCollections().toArray();return m.map(async t=>{let o=e.find(s=>s.name===t);o?o.options?.changeStreamPreAndPostImages?.enabled!==f.changeStreamPreAndPostImages.enabled&&await c.command({collMod:t,...f}):await c.createCollection(t,f)})}))}),w.on("close",async()=>this.client.close())}client;#e=[];async session(i){if(g.getStore())return i();let n=await this.client.startSession();return n.withTransaction(async()=>g.run(n,i))}id(){return new I}use(i){let n=this.getScopedDb(i.db);return this.#e.push({db:n,col:i.col}),this.#t(i,this.client.db(n).collection(i.col))}#t(i,n){function l(e,t){let s=(Array.isArray(e)?e:[e]).map(r=>i.mapper(r,t));return Array.isArray(e)?s:s[0]}function f(e,t,o,s){let r={[M]:t,...i.options?.skipAudit?{}:{createdAt:o.getTime(),...s?{}:{updatedAt:o.getTime()}}};return{...e,...r}}function d(e,t,o=!1){return{...e,$set:{...e.$set,...o||Object.keys(e).length>0&&!i.options?.skipAudit?{updatedAt:t.getTime()}:{}}}}let m=this,c={config:i,extras:{collection:n},query:async e=>{let t=await Q(n,e);return{...t,results:l(t.results,e.select)}},findMany:async(e,t={})=>{let{select:o,...s}=t,r=o?.length?Object.fromEntries(o.map(b=>[b,1])):void 0,u=(Array.isArray(s.sort)?s.sort:s.sort?[s.sort]:[]).map(b=>[b.field,b.desc?"desc":"asc"]),y=await n.find(e,{session:g.getStore(),limit:s.limit,sort:u,projection:r}).toArray();return l(y,o)},findOne:async(e,t={})=>(await c.findMany(e,{...t,limit:1})).at(0)??null,findById:async(e,t={})=>await c.findOne({[M]:e},t),insertMany:async(e,t={})=>{let o=t.getTime?.()??new Date,s=e.map((p,u)=>f(p,t.makeId?.(u)??new I().toString(),o));return await n.insertMany(s,{session:g.getStore()}),(await Promise.all(s.map(async p=>await c.findById(p[M])))).filter(p=>!!p)},insertOne:async(e,t={})=>(await c.insertMany([e],t))[0],updateMany:async(e,t,o={})=>{let s=o.getTime?.()??new Date,r=g.getStore(),u=(await n.find(e,{session:r,projection:{[M]:1}}).toArray()).map(b=>b[M]),y={[M]:{$in:u}};return await n.updateMany(y,d(t,s),{session:r}),c.findMany(y)},updateOne:async(e,t,o={})=>{let s=o.getTime?.()??new Date,r=await n.findOneAndUpdate(e,d(t,s),{returnDocument:"after",session:g.getStore()});return r?l(r,void 0):null},updateById:async(e,t,o={})=>await c.updateOne({[M]:e},t,o),upsertOne:async(e,t,o={})=>{let s=o.getTime?.()??new Date,r=await n.findOneAndUpdate(e,{...d("update"in t?t.update:{},s,!0),$setOnInsert:f(t.insert,o.makeId?.()??new I().toString(),s,!0)},{returnDocument:"after",session:g.getStore(),upsert:!0});return l(r,void 0)},deleteMany:async(e,t={})=>{let o=await c.findMany(e,t);return await n.deleteMany(e,{session:g.getStore()}),o},deleteOne:async e=>{let t=await n.findOneAndDelete(e,{session:g.getStore()});return t?l(t,void 0):null},deleteById:async e=>await c.deleteOne({[M]:e}),bulkWrite:async(e,t={})=>{if(!e.length)return;let o=n.initializeUnorderedBulkOp({session:g.getStore()}),s=t.getTime?.()??new Date;e.forEach((r,p)=>{switch(r.op){case"insert":o.insert(f(r.value,r.makeId?.(p)??new I().toString(),s));break;case"delete":o.find(r.filter).delete();break;case"update":o.find(r.filter).update(d(r.value,s));break;case"upsert":o.find(r.filter).upsert().update({...d("update"in r?r.update:{},s,!0),$setOnInsert:f(r.insert,r.makeId?.(p)??new I().toString(),s,!0)});break;default:throw new C("Unknown bulkWrite operation",{operation:r})}}),await o.execute({session:g.getStore()})},watch(e){return m.config.changes||w.crash(new C("Db changes are not enabled in the configuration.",{config:i})),new k(m.mongoConfig,m.config.changes,n,e,t=>i.mapper(t))}};return c}};export{W as MongoDb,k as MongoDbChange,_ as mongoDbConfigPipe};
|
|
2
|
+
//# sourceMappingURL=index.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/dbs/adapters/mongodb/changes.ts","../../../../../src/dbs/adapters/base/changes.ts","../../../../../src/dbs/adapters/mongodb/db.ts","../../../../../src/dbs/adapters/mongodb/pipes.ts","../../../../../src/dbs/adapters/mongodb/query.ts"],"sourcesContent":["import { Collection, type Filter } from 'mongodb'\nimport { differ } from 'valleyed'\n\nimport type { MongoDbConfig } from './pipes'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport { retry } from '../../../utilities'\nimport { DbChange, TopicPrefix } from '../base/changes'\nimport * as core from '../base/core'\nimport type { DbChangeConfig } from '../base/types'\n\nexport class MongoDbChange<Model extends core.Model<{ _id: string }>, Entity extends core.Entity> extends DbChange<Model, Entity> {\n\t#started = false\n\n\tconstructor(\n\t\tconfig: MongoDbConfig,\n\t\tchange: DbChangeConfig,\n\t\tcollection: Collection<Model>,\n\t\tcallbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tmapper: (model: Model) => Entity,\n\t) {\n\t\tsuper(change, callbacks, mapper)\n\n\t\tconst hydrate = (data: any) =>\n\t\t\tdata._id\n\t\t\t\t? {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t_id: data._id['$oid'] ?? data._id,\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\n\t\tconst dbName = collection.dbName\n\t\tconst colName = collection.collectionName\n\t\tconst dbColName = `${dbName}.${colName}`\n\t\tconst topic = `${TopicPrefix}.${dbColName}`\n\n\t\tconst TestId = '5f5f65717569707065645f5f' // __equipped__\n\t\tconst condition = { _id: TestId } as Filter<Model>\n\n\t\tchange.eventBus.stream(topic as never, { skipScope: true }).subscribe(async (data: DbDocumentChange) => {\n\t\t\tconst op = data.op\n\n\t\t\tlet before = JSON.parse(data.before ?? 'null')\n\t\t\tlet after = JSON.parse(data.after ?? 'null')\n\n\t\t\tif (before) before = hydrate(before)\n\t\t\tif (after) after = hydrate(after)\n\t\t\tif (before?._id === TestId || after?._id === TestId) return\n\n\t\t\tif (op === 'c' && this.callbacks.created && after)\n\t\t\t\tawait this.callbacks.created({\n\t\t\t\t\tbefore: null,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t})\n\t\t\telse if (op === 'u' && this.callbacks.updated && before && after)\n\t\t\t\tawait this.callbacks.updated({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t\tchanges: differ.from(differ.diff(before, after)),\n\t\t\t\t})\n\t\t\telse if (op === 'd' && this.callbacks.deleted && before)\n\t\t\t\tawait this.callbacks.deleted({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: null,\n\t\t\t\t})\n\t\t})\n\n\t\tInstance.on('start', async () => {\n\t\t\tif (this.#started) return\n\t\t\tthis.#started = true\n\n\t\t\tawait retry(\n\t\t\t\tasync () => {\n\t\t\t\t\tconst started = await this.configureConnector(topic, {\n\t\t\t\t\t\t'connector.class': 'io.debezium.connector.mongodb.MongoDbConnector',\n\t\t\t\t\t\t'capture.mode': 'change_streams_update_full_with_pre_image',\n\t\t\t\t\t\t'mongodb.connection.string': config.uri,\n\t\t\t\t\t\t'collection.include.list': dbColName,\n\t\t\t\t\t\t'snapshot.mode': 'when_needed',\n\t\t\t\t\t\t'capture.scope': 'collection',\n\t\t\t\t\t\t'capture.target': dbColName,\n\t\t\t\t\t\t'heartbeat.interval.ms': '60000',\n\t\t\t\t\t\t'errors.max.retries': '3',\n\t\t\t\t\t})\n\n\t\t\t\t\tif (started) return { done: true, value: true }\n\t\t\t\t\tawait collection.findOneAndUpdate(condition, { $set: { colName } as any }, { upsert: true })\n\t\t\t\t\tawait collection.findOneAndDelete(condition)\n\t\t\t\t\tInstance.get().log.warn(`Waiting for db changes for ${dbColName} to start...`)\n\t\t\t\t\treturn { done: false }\n\t\t\t\t},\n\t\t\t\t6,\n\t\t\t\t30_000,\n\t\t\t).catch((err) => Instance.crash(new EquippedError(`Failed to start db changes`, { dbColName }, err)))\n\t\t})\n\t}\n}\n\ntype DbDocumentChange = {\n\tbefore: string | null\n\tafter: string | null\n\top: 'c' | 'u' | 'd'\n}\n","import axios from 'axios'\nimport { v } from 'valleyed'\n\nimport * as core from './core'\nimport { dbChangeConfigPipe, type DbChangeConfig } from './types'\nimport { EquippedError } from '../../../errors'\n\nexport const TopicPrefix = 'db-changes'\n\nexport abstract class DbChange<Model extends core.Model<core.IdType>, Entity extends core.Entity> {\n\tconstructor(\n\t\tprotected config: DbChangeConfig,\n\t\tprotected callbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tprotected mapper: (model: Model) => Entity,\n\t) {\n\t\tthis.config = v.assert(dbChangeConfigPipe(), config)\n\t}\n\n\tprotected async configureConnector(key: string, data: Record<string, string>) {\n\t\tconst instance = axios.create({ baseURL: this.config.debeziumUrl })\n\t\treturn await instance\n\t\t\t.put(`/connectors/${key}/config`, {\n\t\t\t\t'topic.prefix': TopicPrefix,\n\t\t\t\t'topic.creation.enable': 'false',\n\t\t\t\t'topic.creation.default.replication.factor': `-1`,\n\t\t\t\t'topic.creation.default.partitions': '-1',\n\t\t\t\t'key.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'key.converter.schemas.enable': 'false',\n\t\t\t\t'value.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'value.converter.schemas.enable': 'false',\n\t\t\t\t...data,\n\t\t\t})\n\t\t\t.then(async () => {\n\t\t\t\tconst topics = await instance.get(`/connectors/${key}/topics`)\n\t\t\t\treturn topics.data[key]?.topics?.includes?.(key) ?? false\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthrow new EquippedError(`Failed to configure watcher`, { key }, err)\n\t\t\t})\n\t}\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport {\n\tClientSession,\n\tCollection,\n\tMongoClient,\n\tObjectId,\n\ttype CollectionInfo,\n\ttype OptionalUnlessRequiredId,\n\ttype SortDirection,\n\ttype WithId,\n} from 'mongodb'\nimport { v } from 'valleyed'\n\nimport { MongoDbChange } from './changes'\nimport { mongoDbConfigPipe, type MongoDbConfig } from './pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport type { QueryParamsBase } from '../../pipes'\nimport * as core from '../base/core'\nimport { Db } from '../base/db'\nimport type { DbConfig } from '../base/types'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nconst sessionStore = new AsyncLocalStorage<ClientSession | undefined>(undefined)\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.mongoConfig = v.assert(mongoDbConfigPipe(), mongoConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri, { ignoreUndefined: true })\n\t\tInstance.on('start', async () => {\n\t\t\tawait this.client.connect()\n\n\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\treturn acc\n\t\t\t}, {})\n\n\t\t\tconst options = {\n\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t}\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t\tInstance.on('close', async () => this.client.close())\n\t}\n\n\tasync session<T>(callback: () => Promise<T>) {\n\t\tif (sessionStore.getStore()) return callback()\n\t\tconst session = await this.client.startSession()\n\t\treturn session.withTransaction(async () => sessionStore.run(session, callback))\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tconst db = this.getScopedDb(config.db)\n\t\tthis.#cols.push({ db, col: config.col })\n\t\treturn this.#getTable(config, this.client.db(db).collection<Model>(config.col))\n\t}\n\n\t#getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t\tcollection: Collection<Model>,\n\t) {\n\t\ttype WI = Model | WithId<Model>\n\t\tfunction transform(doc: WI, select?: core.Select<Entity>): Entity\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI[], select?: core.Select<Entity>): Entity[]\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI | WI[], select?: core.Select<Entity>) {\n\t\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\t\tconst mapped = docs.map((d) => config.mapper(d as Model, select))\n\t\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t\t}\n\n\t\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\t\tconst base: core.Model<IdType> = {\n\t\t\t\t[idKey]: id,\n\t\t\t\t...(config.options?.skipAudit\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t\t}),\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t...base,\n\t\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t\t}\n\n\t\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t$set: {\n\t\t\t\t\t...value.$set,\n\t\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst dbThis = this\n\n\t\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\t\tconfig,\n\t\t\textras: { collection },\n\n\t\t\tquery: async (params) => {\n\t\t\t\tconst results = await parseMongodbQueryParams(collection, params as QueryParamsBase)\n\t\t\t\treturn {\n\t\t\t\t\t...results,\n\t\t\t\t\tresults: transform(results.results as any, params.select as core.Select<Entity>),\n\t\t\t\t} as any\n\t\t\t},\n\n\t\t\tfindMany: async (filter, options = {}) => {\n\t\t\t\tconst { select, ...rest } = options\n\t\t\t\tconst projection = select?.length ? Object.fromEntries(select.map((k) => [k, 1])) : undefined\n\t\t\t\tconst sortArray = Array.isArray(rest.sort) ? rest.sort : rest.sort ? [rest.sort] : []\n\t\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\t\tconst docs = await collection\n\t\t\t\t\t.find(filter, {\n\t\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t\t\tlimit: rest.limit,\n\t\t\t\t\t\tsort,\n\t\t\t\t\t\tprojection,\n\t\t\t\t\t})\n\t\t\t\t\t.toArray()\n\t\t\t\treturn transform(docs, select as core.Select<Entity>) as any\n\t\t\t},\n\n\t\t\tfindOne: async (filter: core.Filter<Model>, options = {}) => {\n\t\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 } as any)\n\t\t\t\treturn (result.at(0) ?? null) as any\n\t\t\t},\n\n\t\t\tfindById: async (id, options = {}) => {\n\t\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options as any)\n\t\t\t\treturn result as any\n\t\t\t},\n\n\t\t\tinsertMany: async (values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\tawait collection.insertMany(payload, { session: sessionStore.getStore() })\n\n\t\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any)))\n\t\t\t\treturn insertedData.filter((value) => !!value)\n\t\t\t},\n\n\t\t\tinsertOne: async (values, options = {}) => {\n\t\t\t\tconst result = await table.insertMany([values], options)\n\t\t\t\treturn result[0]\n\t\t\t},\n\n\t\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst session = sessionStore.getStore()\n\t\t\t\tconst data = await collection.find(filter, { session, projection: { [idKey]: 1 } }).toArray()\n\t\t\t\tconst ids = data.map((doc) => doc[idKey])\n\t\t\t\tconst filterUpd = { [idKey]: { $in: ids } } as core.Filter<Model>\n\t\t\t\tawait collection.updateMany(filterUpd, prepUpdateValue(values, now), { session })\n\t\t\t\treturn table.findMany(filterUpd)\n\t\t\t},\n\n\t\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\t\treturnDocument: 'after',\n\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t})\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tupdateById: async (id, values, options = {}) => {\n\t\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\t\tfilter,\n\t\t\t\t\t{\n\t\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t\t},\n\t\t\t\t\t{ returnDocument: 'after', session: sessionStore.getStore(), upsert: true },\n\t\t\t\t)\n\n\t\t\t\treturn transform(doc, undefined)\n\t\t\t},\n\n\t\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\t\tawait collection.deleteMany(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn docs\n\t\t\t},\n\n\t\t\tdeleteOne: async (filter) => {\n\t\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tdeleteById: async (id) => {\n\t\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\t\tif (!operations.length) return\n\t\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: sessionStore.getStore() })\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\toperations.forEach((operation, i) => {\n\t\t\t\t\tswitch (operation.op) {\n\t\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tawait bulk.execute({ session: sessionStore.getStore() })\n\t\t\t},\n\n\t\t\twatch(callbacks) {\n\t\t\t\tif (!dbThis.config.changes)\n\t\t\t\t\tInstance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\t\treturn new MongoDbChange<Model, Entity>(dbThis.mongoConfig, dbThis.config.changes, collection, callbacks, (m) =>\n\t\t\t\t\tconfig.mapper(m),\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\n\t\treturn table\n\t}\n}\n","import { type PipeInput, v } from 'valleyed'\n\nexport const mongoDbConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\turi: v.string(),\n\t\t}),\n\t\t{ title: 'Mongodb Config', $refId: 'MongodbConfig' },\n\t)\n\nexport type MongoDbConfig = PipeInput<ReturnType<typeof mongoDbConfigPipe>>\n","import { Collection } from 'mongodb'\n\nimport { QueryKeys, type QueryParamsBase, type QueryResults, type QueryWhereBlock, type QueryWhereClause } from '../../pipes'\nimport * as core from '../base/core'\n\nexport const parseMongodbQueryParams = async <Model extends core.Model<{ _id: string }>>(\n\tcollection: Collection<Model>,\n\tparams: QueryParamsBase,\n): Promise<QueryResults<Model>> => {\n\t// Handle where/search clauses\n\tconst query = <ReturnType<typeof buildWhereQuery>[]>[]\n\tconst where = buildWhereQuery(params.where, params.whereType)\n\tif (where) query.push(where)\n\tconst auth = buildWhereQuery(params.auth, params.authType)\n\tif (auth) query.push(auth)\n\tif (params.search && params.search.fields.length > 0) {\n\t\tconst search = params.search.fields.map((field) => ({\n\t\t\t[field]: {\n\t\t\t\t$regex: new RegExp(params.search!.value, 'i'),\n\t\t\t},\n\t\t}))\n\t\tquery.push({ $or: search })\n\t}\n\tconst totalClause = {}\n\tif (query.length > 0) totalClause['$and'] = query\n\n\t// Handle sort clauses\n\tconst sort = params.sort.map((p) => [p.field, p.desc ? 'desc' : 'asc'])\n\n\t// Handle limit/offest clause\n\tconst all = params.all ?? false\n\tconst limit = params.limit\n\tconst page = params.page\n\n\tconst total = await collection.countDocuments(totalClause)\n\n\tconst projection = params.select?.length ? Object.fromEntries(params.select.map((k) => [k, 1])) : undefined\n\tlet builtQuery = collection.find(totalClause, { projection })\n\tif (sort.length) builtQuery = builtQuery.sort(Object.fromEntries(sort))\n\tif (!all && limit) {\n\t\tbuiltQuery = builtQuery.limit(limit)\n\t\tif (page) builtQuery = builtQuery.skip((page - 1) * limit)\n\t}\n\n\tconst results = await builtQuery.toArray()\n\tconst start = 1\n\tconst last = Math.ceil(total / limit) || 1\n\tconst next = page >= last ? null : page + 1\n\tconst previous = page <= start ? null : page - 1\n\n\treturn {\n\t\tpages: { start, last, next, previous, current: page },\n\t\tdocs: { limit, total, count: results.length },\n\t\tresults: results as any[],\n\t} satisfies QueryResults<Model>\n}\n\nfunction isWhereBlock(param: QueryWhereClause): param is QueryWhereBlock {\n\treturn Object.values(QueryKeys).includes(param.condition as QueryKeys)\n}\n\nconst buildWhereQuery = (params: QueryWhereClause[], key: QueryKeys = QueryKeys.and): Record<string, Record<string, any>> | null => {\n\tconst where = (Array.isArray(params) ? params : [])\n\t\t.map((param) => {\n\t\t\tif (isWhereBlock(param)) return buildWhereQuery(param.value, param.condition)\n\t\t\tconst { field } = param\n\t\t\tconst checkedField = field === 'id' ? '_id' : (field ?? '')\n\t\t\tconst checkedValue = param.value === undefined ? '' : param.value\n\t\t\treturn {\n\t\t\t\tfield: checkedField,\n\t\t\t\tvalue: checkedValue,\n\t\t\t\tcondition: param.condition,\n\t\t\t\tisWhere: true,\n\t\t\t}\n\t\t})\n\t\t.filter((c) => !!c)\n\t\t.map((c) => {\n\t\t\tif (c.isWhere) return { [`${c.field}`]: { [`$${c.condition}`]: c.value } }\n\t\t\telse return c\n\t\t})\n\n\treturn where.length > 0 ? { [`$${key}`]: where } : null\n}\n"],"mappings":"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","names":["differ","axios","v","TopicPrefix","DbChange","config","callbacks","mapper","v","dbChangeConfigPipe","key","data","instance","axios","err","EquippedError","MongoDbChange","DbChange","#started","config","change","collection","callbacks","mapper","hydrate","data","dbName","colName","dbColName","topic","TopicPrefix","TestId","condition","op","before","after","differ","Instance","retry","err","EquippedError","AsyncLocalStorage","MongoClient","ObjectId","v","v","mongoDbConfigPipe","parseMongodbQueryParams","collection","params","query","where","buildWhereQuery","auth","search","field","totalClause","sort","p","all","limit","page","total","projection","k","builtQuery","results","start","last","next","previous","isWhereBlock","param","QueryKeys","key","checkedField","checkedValue","c","idKey","sessionStore","AsyncLocalStorage","MongoDb","Db","mongoConfig","dbConfig","v","mongoDbConfigPipe","MongoClient","Instance","grouped","#cols","acc","cur","options","dbName","colNames","db","collections","colName","existing","collection","callback","session","ObjectId","config","#getTable","transform","doc","select","mapped","d","prepInsertValue","value","id","now","skipUpdate","base","prepUpdateValue","upsert","dbThis","table","params","results","parseMongodbQueryParams","filter","rest","projection","k","sort","p","docs","values","payload","i","data","ids","filterUpd","operations","bulk","operation","EquippedError","callbacks","MongoDbChange","m"]}
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Db,
|
|
3
|
+
QueryKeys,
|
|
4
|
+
dbChangeConfigPipe
|
|
5
|
+
} from "../../../chunk-YTHRK2PO.mjs";
|
|
6
|
+
import "../../../chunk-I4BB436E.mjs";
|
|
7
|
+
import {
|
|
8
|
+
EquippedError,
|
|
9
|
+
Instance,
|
|
10
|
+
retry
|
|
11
|
+
} from "../../../chunk-2TCFNKRZ.mjs";
|
|
12
|
+
import "../../../chunk-VCCS7CAI.mjs";
|
|
13
|
+
import "../../../chunk-J5LGTIGS.mjs";
|
|
14
|
+
|
|
15
|
+
// src/dbs/adapters/mongodb/changes.ts
|
|
16
|
+
import "mongodb";
|
|
17
|
+
import { differ } from "valleyed";
|
|
18
|
+
|
|
19
|
+
// src/dbs/adapters/base/changes.ts
|
|
20
|
+
import axios from "axios";
|
|
21
|
+
import { v } from "valleyed";
|
|
22
|
+
var TopicPrefix = "db-changes";
|
|
23
|
+
var DbChange = class {
|
|
24
|
+
constructor(config, callbacks, mapper) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.callbacks = callbacks;
|
|
27
|
+
this.mapper = mapper;
|
|
28
|
+
this.config = v.assert(dbChangeConfigPipe(), config);
|
|
29
|
+
}
|
|
30
|
+
async configureConnector(key, data) {
|
|
31
|
+
const instance = axios.create({ baseURL: this.config.debeziumUrl });
|
|
32
|
+
return await instance.put(`/connectors/${key}/config`, {
|
|
33
|
+
"topic.prefix": TopicPrefix,
|
|
34
|
+
"topic.creation.enable": "false",
|
|
35
|
+
"topic.creation.default.replication.factor": `-1`,
|
|
36
|
+
"topic.creation.default.partitions": "-1",
|
|
37
|
+
"key.converter": "org.apache.kafka.connect.json.JsonConverter",
|
|
38
|
+
"key.converter.schemas.enable": "false",
|
|
39
|
+
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
|
|
40
|
+
"value.converter.schemas.enable": "false",
|
|
41
|
+
...data
|
|
42
|
+
}).then(async () => {
|
|
43
|
+
const topics = await instance.get(`/connectors/${key}/topics`);
|
|
44
|
+
return topics.data[key]?.topics?.includes?.(key) ?? false;
|
|
45
|
+
}).catch((err) => {
|
|
46
|
+
throw new EquippedError(`Failed to configure watcher`, { key }, err);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// src/dbs/adapters/mongodb/changes.ts
|
|
52
|
+
var MongoDbChange = class extends DbChange {
|
|
53
|
+
#started = false;
|
|
54
|
+
constructor(config, change, collection, callbacks, mapper) {
|
|
55
|
+
super(change, callbacks, mapper);
|
|
56
|
+
const hydrate = (data) => data._id ? {
|
|
57
|
+
...data,
|
|
58
|
+
_id: data._id["$oid"] ?? data._id
|
|
59
|
+
} : void 0;
|
|
60
|
+
const dbName = collection.dbName;
|
|
61
|
+
const colName = collection.collectionName;
|
|
62
|
+
const dbColName = `${dbName}.${colName}`;
|
|
63
|
+
const topic = `${TopicPrefix}.${dbColName}`;
|
|
64
|
+
const TestId = "5f5f65717569707065645f5f";
|
|
65
|
+
const condition = { _id: TestId };
|
|
66
|
+
change.eventBus.stream(topic, { skipScope: true }).subscribe(async (data) => {
|
|
67
|
+
const op = data.op;
|
|
68
|
+
let before = JSON.parse(data.before ?? "null");
|
|
69
|
+
let after = JSON.parse(data.after ?? "null");
|
|
70
|
+
if (before) before = hydrate(before);
|
|
71
|
+
if (after) after = hydrate(after);
|
|
72
|
+
if (before?._id === TestId || after?._id === TestId) return;
|
|
73
|
+
if (op === "c" && this.callbacks.created && after)
|
|
74
|
+
await this.callbacks.created({
|
|
75
|
+
before: null,
|
|
76
|
+
after: this.mapper(after)
|
|
77
|
+
});
|
|
78
|
+
else if (op === "u" && this.callbacks.updated && before && after)
|
|
79
|
+
await this.callbacks.updated({
|
|
80
|
+
before: this.mapper(before),
|
|
81
|
+
after: this.mapper(after),
|
|
82
|
+
changes: differ.from(differ.diff(before, after))
|
|
83
|
+
});
|
|
84
|
+
else if (op === "d" && this.callbacks.deleted && before)
|
|
85
|
+
await this.callbacks.deleted({
|
|
86
|
+
before: this.mapper(before),
|
|
87
|
+
after: null
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
Instance.on("start", async () => {
|
|
91
|
+
if (this.#started) return;
|
|
92
|
+
this.#started = true;
|
|
93
|
+
await retry(
|
|
94
|
+
async () => {
|
|
95
|
+
const started = await this.configureConnector(topic, {
|
|
96
|
+
"connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
|
|
97
|
+
"capture.mode": "change_streams_update_full_with_pre_image",
|
|
98
|
+
"mongodb.connection.string": config.uri,
|
|
99
|
+
"collection.include.list": dbColName,
|
|
100
|
+
"snapshot.mode": "when_needed",
|
|
101
|
+
"capture.scope": "collection",
|
|
102
|
+
"capture.target": dbColName,
|
|
103
|
+
"heartbeat.interval.ms": "60000",
|
|
104
|
+
"errors.max.retries": "3"
|
|
105
|
+
});
|
|
106
|
+
if (started) return { done: true, value: true };
|
|
107
|
+
await collection.findOneAndUpdate(condition, { $set: { colName } }, { upsert: true });
|
|
108
|
+
await collection.findOneAndDelete(condition);
|
|
109
|
+
Instance.get().log.warn(`Waiting for db changes for ${dbColName} to start...`);
|
|
110
|
+
return { done: false };
|
|
111
|
+
},
|
|
112
|
+
6,
|
|
113
|
+
3e4
|
|
114
|
+
).catch((err) => Instance.crash(new EquippedError(`Failed to start db changes`, { dbColName }, err)));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// src/dbs/adapters/mongodb/db.ts
|
|
120
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
121
|
+
import {
|
|
122
|
+
MongoClient,
|
|
123
|
+
ObjectId
|
|
124
|
+
} from "mongodb";
|
|
125
|
+
import { v as v3 } from "valleyed";
|
|
126
|
+
|
|
127
|
+
// src/dbs/adapters/mongodb/pipes.ts
|
|
128
|
+
import { v as v2 } from "valleyed";
|
|
129
|
+
var mongoDbConfigPipe = () => v2.meta(
|
|
130
|
+
v2.object({
|
|
131
|
+
uri: v2.string()
|
|
132
|
+
}),
|
|
133
|
+
{ title: "Mongodb Config", $refId: "MongodbConfig" }
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
// src/dbs/adapters/mongodb/query.ts
|
|
137
|
+
import "mongodb";
|
|
138
|
+
var parseMongodbQueryParams = async (collection, params) => {
|
|
139
|
+
const query = [];
|
|
140
|
+
const where = buildWhereQuery(params.where, params.whereType);
|
|
141
|
+
if (where) query.push(where);
|
|
142
|
+
const auth = buildWhereQuery(params.auth, params.authType);
|
|
143
|
+
if (auth) query.push(auth);
|
|
144
|
+
if (params.search && params.search.fields.length > 0) {
|
|
145
|
+
const search = params.search.fields.map((field) => ({
|
|
146
|
+
[field]: {
|
|
147
|
+
$regex: new RegExp(params.search.value, "i")
|
|
148
|
+
}
|
|
149
|
+
}));
|
|
150
|
+
query.push({ $or: search });
|
|
151
|
+
}
|
|
152
|
+
const totalClause = {};
|
|
153
|
+
if (query.length > 0) totalClause["$and"] = query;
|
|
154
|
+
const sort = params.sort.map((p) => [p.field, p.desc ? "desc" : "asc"]);
|
|
155
|
+
const all = params.all ?? false;
|
|
156
|
+
const limit = params.limit;
|
|
157
|
+
const page = params.page;
|
|
158
|
+
const total = await collection.countDocuments(totalClause);
|
|
159
|
+
const projection = params.select?.length ? Object.fromEntries(params.select.map((k) => [k, 1])) : void 0;
|
|
160
|
+
let builtQuery = collection.find(totalClause, { projection });
|
|
161
|
+
if (sort.length) builtQuery = builtQuery.sort(Object.fromEntries(sort));
|
|
162
|
+
if (!all && limit) {
|
|
163
|
+
builtQuery = builtQuery.limit(limit);
|
|
164
|
+
if (page) builtQuery = builtQuery.skip((page - 1) * limit);
|
|
165
|
+
}
|
|
166
|
+
const results = await builtQuery.toArray();
|
|
167
|
+
const start = 1;
|
|
168
|
+
const last = Math.ceil(total / limit) || 1;
|
|
169
|
+
const next = page >= last ? null : page + 1;
|
|
170
|
+
const previous = page <= start ? null : page - 1;
|
|
171
|
+
return {
|
|
172
|
+
pages: { start, last, next, previous, current: page },
|
|
173
|
+
docs: { limit, total, count: results.length },
|
|
174
|
+
results
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
function isWhereBlock(param) {
|
|
178
|
+
return Object.values(QueryKeys).includes(param.condition);
|
|
179
|
+
}
|
|
180
|
+
var buildWhereQuery = (params, key = "and" /* and */) => {
|
|
181
|
+
const where = (Array.isArray(params) ? params : []).map((param) => {
|
|
182
|
+
if (isWhereBlock(param)) return buildWhereQuery(param.value, param.condition);
|
|
183
|
+
const { field } = param;
|
|
184
|
+
const checkedField = field === "id" ? "_id" : field ?? "";
|
|
185
|
+
const checkedValue = param.value === void 0 ? "" : param.value;
|
|
186
|
+
return {
|
|
187
|
+
field: checkedField,
|
|
188
|
+
value: checkedValue,
|
|
189
|
+
condition: param.condition,
|
|
190
|
+
isWhere: true
|
|
191
|
+
};
|
|
192
|
+
}).filter((c) => !!c).map((c) => {
|
|
193
|
+
if (c.isWhere) return { [`${c.field}`]: { [`$${c.condition}`]: c.value } };
|
|
194
|
+
else return c;
|
|
195
|
+
});
|
|
196
|
+
return where.length > 0 ? { [`$${key}`]: where } : null;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// src/dbs/adapters/mongodb/db.ts
|
|
200
|
+
var idKey = "_id";
|
|
201
|
+
var sessionStore = new AsyncLocalStorage(void 0);
|
|
202
|
+
var MongoDb = class extends Db {
|
|
203
|
+
constructor(mongoConfig, dbConfig) {
|
|
204
|
+
super(dbConfig);
|
|
205
|
+
this.mongoConfig = mongoConfig;
|
|
206
|
+
this.mongoConfig = v3.assert(mongoDbConfigPipe(), mongoConfig);
|
|
207
|
+
this.client = new MongoClient(mongoConfig.uri, { ignoreUndefined: true });
|
|
208
|
+
Instance.on("start", async () => {
|
|
209
|
+
await this.client.connect();
|
|
210
|
+
const grouped = this.#cols.reduce((acc, cur) => {
|
|
211
|
+
if (!acc[cur.db]) acc[cur.db] = [];
|
|
212
|
+
acc[cur.db].push(cur.col);
|
|
213
|
+
return acc;
|
|
214
|
+
}, {});
|
|
215
|
+
const options = {
|
|
216
|
+
changeStreamPreAndPostImages: { enabled: true }
|
|
217
|
+
};
|
|
218
|
+
await Promise.all(
|
|
219
|
+
Object.entries(grouped).map(async ([dbName, colNames]) => {
|
|
220
|
+
const db = this.client.db(dbName);
|
|
221
|
+
const collections = await db.listCollections().toArray();
|
|
222
|
+
return colNames.map(async (colName) => {
|
|
223
|
+
const existing = collections.find((collection) => collection.name === colName);
|
|
224
|
+
if (existing) {
|
|
225
|
+
if (existing.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled)
|
|
226
|
+
await db.command({ collMod: colName, ...options });
|
|
227
|
+
} else await db.createCollection(colName, options);
|
|
228
|
+
});
|
|
229
|
+
})
|
|
230
|
+
);
|
|
231
|
+
});
|
|
232
|
+
Instance.on("close", async () => this.client.close());
|
|
233
|
+
}
|
|
234
|
+
client;
|
|
235
|
+
#cols = [];
|
|
236
|
+
async session(callback) {
|
|
237
|
+
if (sessionStore.getStore()) return callback();
|
|
238
|
+
const session = await this.client.startSession();
|
|
239
|
+
return session.withTransaction(async () => sessionStore.run(session, callback));
|
|
240
|
+
}
|
|
241
|
+
id() {
|
|
242
|
+
return new ObjectId();
|
|
243
|
+
}
|
|
244
|
+
use(config) {
|
|
245
|
+
const db = this.getScopedDb(config.db);
|
|
246
|
+
this.#cols.push({ db, col: config.col });
|
|
247
|
+
return this.#getTable(config, this.client.db(db).collection(config.col));
|
|
248
|
+
}
|
|
249
|
+
#getTable(config, collection) {
|
|
250
|
+
function transform(doc, select) {
|
|
251
|
+
const docs = Array.isArray(doc) ? doc : [doc];
|
|
252
|
+
const mapped = docs.map((d) => config.mapper(d, select));
|
|
253
|
+
return Array.isArray(doc) ? mapped : mapped[0];
|
|
254
|
+
}
|
|
255
|
+
function prepInsertValue(value, id, now, skipUpdate) {
|
|
256
|
+
const base = {
|
|
257
|
+
[idKey]: id,
|
|
258
|
+
...config.options?.skipAudit ? {} : {
|
|
259
|
+
createdAt: now.getTime(),
|
|
260
|
+
...skipUpdate ? {} : { updatedAt: now.getTime() }
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
return {
|
|
264
|
+
...value,
|
|
265
|
+
...base
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function prepUpdateValue(value, now, upsert = false) {
|
|
269
|
+
return {
|
|
270
|
+
...value,
|
|
271
|
+
$set: {
|
|
272
|
+
...value.$set,
|
|
273
|
+
...upsert || Object.keys(value).length > 0 && !config.options?.skipAudit ? { updatedAt: now.getTime() } : {}
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
const dbThis = this;
|
|
278
|
+
const table = {
|
|
279
|
+
config,
|
|
280
|
+
extras: { collection },
|
|
281
|
+
query: async (params) => {
|
|
282
|
+
const results = await parseMongodbQueryParams(collection, params);
|
|
283
|
+
return {
|
|
284
|
+
...results,
|
|
285
|
+
results: transform(results.results, params.select)
|
|
286
|
+
};
|
|
287
|
+
},
|
|
288
|
+
findMany: async (filter, options = {}) => {
|
|
289
|
+
const { select, ...rest } = options;
|
|
290
|
+
const projection = select?.length ? Object.fromEntries(select.map((k) => [k, 1])) : void 0;
|
|
291
|
+
const sortArray = Array.isArray(rest.sort) ? rest.sort : rest.sort ? [rest.sort] : [];
|
|
292
|
+
const sort = sortArray.map((p) => [p.field, p.desc ? "desc" : "asc"]);
|
|
293
|
+
const docs = await collection.find(filter, {
|
|
294
|
+
session: sessionStore.getStore(),
|
|
295
|
+
limit: rest.limit,
|
|
296
|
+
sort,
|
|
297
|
+
projection
|
|
298
|
+
}).toArray();
|
|
299
|
+
return transform(docs, select);
|
|
300
|
+
},
|
|
301
|
+
findOne: async (filter, options = {}) => {
|
|
302
|
+
const result = await table.findMany(filter, { ...options, limit: 1 });
|
|
303
|
+
return result.at(0) ?? null;
|
|
304
|
+
},
|
|
305
|
+
findById: async (id, options = {}) => {
|
|
306
|
+
const result = await table.findOne({ [idKey]: id }, options);
|
|
307
|
+
return result;
|
|
308
|
+
},
|
|
309
|
+
insertMany: async (values, options = {}) => {
|
|
310
|
+
const now = options.getTime?.() ?? /* @__PURE__ */ new Date();
|
|
311
|
+
const payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now));
|
|
312
|
+
await collection.insertMany(payload, { session: sessionStore.getStore() });
|
|
313
|
+
const insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey])));
|
|
314
|
+
return insertedData.filter((value) => !!value);
|
|
315
|
+
},
|
|
316
|
+
insertOne: async (values, options = {}) => {
|
|
317
|
+
const result = await table.insertMany([values], options);
|
|
318
|
+
return result[0];
|
|
319
|
+
},
|
|
320
|
+
updateMany: async (filter, values, options = {}) => {
|
|
321
|
+
const now = options.getTime?.() ?? /* @__PURE__ */ new Date();
|
|
322
|
+
const session = sessionStore.getStore();
|
|
323
|
+
const data = await collection.find(filter, { session, projection: { [idKey]: 1 } }).toArray();
|
|
324
|
+
const ids = data.map((doc) => doc[idKey]);
|
|
325
|
+
const filterUpd = { [idKey]: { $in: ids } };
|
|
326
|
+
await collection.updateMany(filterUpd, prepUpdateValue(values, now), { session });
|
|
327
|
+
return table.findMany(filterUpd);
|
|
328
|
+
},
|
|
329
|
+
updateOne: async (filter, values, options = {}) => {
|
|
330
|
+
const now = options.getTime?.() ?? /* @__PURE__ */ new Date();
|
|
331
|
+
const doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {
|
|
332
|
+
returnDocument: "after",
|
|
333
|
+
session: sessionStore.getStore()
|
|
334
|
+
});
|
|
335
|
+
return doc ? transform(doc, void 0) : null;
|
|
336
|
+
},
|
|
337
|
+
updateById: async (id, values, options = {}) => {
|
|
338
|
+
const result = await table.updateOne({ [idKey]: id }, values, options);
|
|
339
|
+
return result;
|
|
340
|
+
},
|
|
341
|
+
upsertOne: async (filter, values, options = {}) => {
|
|
342
|
+
const now = options.getTime?.() ?? /* @__PURE__ */ new Date();
|
|
343
|
+
const doc = await collection.findOneAndUpdate(
|
|
344
|
+
filter,
|
|
345
|
+
{
|
|
346
|
+
...prepUpdateValue("update" in values ? values.update : {}, now, true),
|
|
347
|
+
// @ts-expect-error fighting ts
|
|
348
|
+
$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true)
|
|
349
|
+
},
|
|
350
|
+
{ returnDocument: "after", session: sessionStore.getStore(), upsert: true }
|
|
351
|
+
);
|
|
352
|
+
return transform(doc, void 0);
|
|
353
|
+
},
|
|
354
|
+
deleteMany: async (filter, options = {}) => {
|
|
355
|
+
const docs = await table.findMany(filter, options);
|
|
356
|
+
await collection.deleteMany(filter, { session: sessionStore.getStore() });
|
|
357
|
+
return docs;
|
|
358
|
+
},
|
|
359
|
+
deleteOne: async (filter) => {
|
|
360
|
+
const doc = await collection.findOneAndDelete(filter, { session: sessionStore.getStore() });
|
|
361
|
+
return doc ? transform(doc, void 0) : null;
|
|
362
|
+
},
|
|
363
|
+
deleteById: async (id) => {
|
|
364
|
+
const result = await table.deleteOne({ [idKey]: id });
|
|
365
|
+
return result;
|
|
366
|
+
},
|
|
367
|
+
bulkWrite: async (operations, options = {}) => {
|
|
368
|
+
if (!operations.length) return;
|
|
369
|
+
const bulk = collection.initializeUnorderedBulkOp({ session: sessionStore.getStore() });
|
|
370
|
+
const now = options.getTime?.() ?? /* @__PURE__ */ new Date();
|
|
371
|
+
operations.forEach((operation, i) => {
|
|
372
|
+
switch (operation.op) {
|
|
373
|
+
case "insert":
|
|
374
|
+
bulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now));
|
|
375
|
+
break;
|
|
376
|
+
case "delete":
|
|
377
|
+
bulk.find(operation.filter).delete();
|
|
378
|
+
break;
|
|
379
|
+
case "update":
|
|
380
|
+
bulk.find(operation.filter).update(prepUpdateValue(operation.value, now));
|
|
381
|
+
break;
|
|
382
|
+
case "upsert":
|
|
383
|
+
bulk.find(operation.filter).upsert().update({
|
|
384
|
+
...prepUpdateValue("update" in operation ? operation.update : {}, now, true),
|
|
385
|
+
$setOnInsert: prepInsertValue(
|
|
386
|
+
operation.insert,
|
|
387
|
+
operation.makeId?.(i) ?? new ObjectId().toString(),
|
|
388
|
+
now,
|
|
389
|
+
true
|
|
390
|
+
)
|
|
391
|
+
});
|
|
392
|
+
break;
|
|
393
|
+
default:
|
|
394
|
+
throw new EquippedError(`Unknown bulkWrite operation`, { operation });
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
await bulk.execute({ session: sessionStore.getStore() });
|
|
398
|
+
},
|
|
399
|
+
watch(callbacks) {
|
|
400
|
+
if (!dbThis.config.changes)
|
|
401
|
+
Instance.crash(new EquippedError("Db changes are not enabled in the configuration.", { config }));
|
|
402
|
+
return new MongoDbChange(
|
|
403
|
+
dbThis.mongoConfig,
|
|
404
|
+
dbThis.config.changes,
|
|
405
|
+
collection,
|
|
406
|
+
callbacks,
|
|
407
|
+
(m) => config.mapper(m)
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
return table;
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
export {
|
|
415
|
+
MongoDb,
|
|
416
|
+
MongoDbChange,
|
|
417
|
+
mongoDbConfigPipe
|
|
418
|
+
};
|
|
419
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/dbs/adapters/mongodb/changes.ts","../../../../../src/dbs/adapters/base/changes.ts","../../../../../src/dbs/adapters/mongodb/db.ts","../../../../../src/dbs/adapters/mongodb/pipes.ts","../../../../../src/dbs/adapters/mongodb/query.ts"],"sourcesContent":["import { Collection, type Filter } from 'mongodb'\nimport { differ } from 'valleyed'\n\nimport type { MongoDbConfig } from './pipes'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport { retry } from '../../../utilities'\nimport { DbChange, TopicPrefix } from '../base/changes'\nimport * as core from '../base/core'\nimport type { DbChangeConfig } from '../base/types'\n\nexport class MongoDbChange<Model extends core.Model<{ _id: string }>, Entity extends core.Entity> extends DbChange<Model, Entity> {\n\t#started = false\n\n\tconstructor(\n\t\tconfig: MongoDbConfig,\n\t\tchange: DbChangeConfig,\n\t\tcollection: Collection<Model>,\n\t\tcallbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tmapper: (model: Model) => Entity,\n\t) {\n\t\tsuper(change, callbacks, mapper)\n\n\t\tconst hydrate = (data: any) =>\n\t\t\tdata._id\n\t\t\t\t? {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t_id: data._id['$oid'] ?? data._id,\n\t\t\t\t\t}\n\t\t\t\t: undefined\n\n\t\tconst dbName = collection.dbName\n\t\tconst colName = collection.collectionName\n\t\tconst dbColName = `${dbName}.${colName}`\n\t\tconst topic = `${TopicPrefix}.${dbColName}`\n\n\t\tconst TestId = '5f5f65717569707065645f5f' // __equipped__\n\t\tconst condition = { _id: TestId } as Filter<Model>\n\n\t\tchange.eventBus.stream(topic as never, { skipScope: true }).subscribe(async (data: DbDocumentChange) => {\n\t\t\tconst op = data.op\n\n\t\t\tlet before = JSON.parse(data.before ?? 'null')\n\t\t\tlet after = JSON.parse(data.after ?? 'null')\n\n\t\t\tif (before) before = hydrate(before)\n\t\t\tif (after) after = hydrate(after)\n\t\t\tif (before?._id === TestId || after?._id === TestId) return\n\n\t\t\tif (op === 'c' && this.callbacks.created && after)\n\t\t\t\tawait this.callbacks.created({\n\t\t\t\t\tbefore: null,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t})\n\t\t\telse if (op === 'u' && this.callbacks.updated && before && after)\n\t\t\t\tawait this.callbacks.updated({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: this.mapper(after)!,\n\t\t\t\t\tchanges: differ.from(differ.diff(before, after)),\n\t\t\t\t})\n\t\t\telse if (op === 'd' && this.callbacks.deleted && before)\n\t\t\t\tawait this.callbacks.deleted({\n\t\t\t\t\tbefore: this.mapper(before)!,\n\t\t\t\t\tafter: null,\n\t\t\t\t})\n\t\t})\n\n\t\tInstance.on('start', async () => {\n\t\t\tif (this.#started) return\n\t\t\tthis.#started = true\n\n\t\t\tawait retry(\n\t\t\t\tasync () => {\n\t\t\t\t\tconst started = await this.configureConnector(topic, {\n\t\t\t\t\t\t'connector.class': 'io.debezium.connector.mongodb.MongoDbConnector',\n\t\t\t\t\t\t'capture.mode': 'change_streams_update_full_with_pre_image',\n\t\t\t\t\t\t'mongodb.connection.string': config.uri,\n\t\t\t\t\t\t'collection.include.list': dbColName,\n\t\t\t\t\t\t'snapshot.mode': 'when_needed',\n\t\t\t\t\t\t'capture.scope': 'collection',\n\t\t\t\t\t\t'capture.target': dbColName,\n\t\t\t\t\t\t'heartbeat.interval.ms': '60000',\n\t\t\t\t\t\t'errors.max.retries': '3',\n\t\t\t\t\t})\n\n\t\t\t\t\tif (started) return { done: true, value: true }\n\t\t\t\t\tawait collection.findOneAndUpdate(condition, { $set: { colName } as any }, { upsert: true })\n\t\t\t\t\tawait collection.findOneAndDelete(condition)\n\t\t\t\t\tInstance.get().log.warn(`Waiting for db changes for ${dbColName} to start...`)\n\t\t\t\t\treturn { done: false }\n\t\t\t\t},\n\t\t\t\t6,\n\t\t\t\t30_000,\n\t\t\t).catch((err) => Instance.crash(new EquippedError(`Failed to start db changes`, { dbColName }, err)))\n\t\t})\n\t}\n}\n\ntype DbDocumentChange = {\n\tbefore: string | null\n\tafter: string | null\n\top: 'c' | 'u' | 'd'\n}\n","import axios from 'axios'\nimport { v } from 'valleyed'\n\nimport * as core from './core'\nimport { dbChangeConfigPipe, type DbChangeConfig } from './types'\nimport { EquippedError } from '../../../errors'\n\nexport const TopicPrefix = 'db-changes'\n\nexport abstract class DbChange<Model extends core.Model<core.IdType>, Entity extends core.Entity> {\n\tconstructor(\n\t\tprotected config: DbChangeConfig,\n\t\tprotected callbacks: core.DbChangeCallbacks<Model, Entity>,\n\t\tprotected mapper: (model: Model) => Entity,\n\t) {\n\t\tthis.config = v.assert(dbChangeConfigPipe(), config)\n\t}\n\n\tprotected async configureConnector(key: string, data: Record<string, string>) {\n\t\tconst instance = axios.create({ baseURL: this.config.debeziumUrl })\n\t\treturn await instance\n\t\t\t.put(`/connectors/${key}/config`, {\n\t\t\t\t'topic.prefix': TopicPrefix,\n\t\t\t\t'topic.creation.enable': 'false',\n\t\t\t\t'topic.creation.default.replication.factor': `-1`,\n\t\t\t\t'topic.creation.default.partitions': '-1',\n\t\t\t\t'key.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'key.converter.schemas.enable': 'false',\n\t\t\t\t'value.converter': 'org.apache.kafka.connect.json.JsonConverter',\n\t\t\t\t'value.converter.schemas.enable': 'false',\n\t\t\t\t...data,\n\t\t\t})\n\t\t\t.then(async () => {\n\t\t\t\tconst topics = await instance.get(`/connectors/${key}/topics`)\n\t\t\t\treturn topics.data[key]?.topics?.includes?.(key) ?? false\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthrow new EquippedError(`Failed to configure watcher`, { key }, err)\n\t\t\t})\n\t}\n}\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport {\n\tClientSession,\n\tCollection,\n\tMongoClient,\n\tObjectId,\n\ttype CollectionInfo,\n\ttype OptionalUnlessRequiredId,\n\ttype SortDirection,\n\ttype WithId,\n} from 'mongodb'\nimport { v } from 'valleyed'\n\nimport { MongoDbChange } from './changes'\nimport { mongoDbConfigPipe, type MongoDbConfig } from './pipes'\nimport { parseMongodbQueryParams } from './query'\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport type { QueryParamsBase } from '../../pipes'\nimport * as core from '../base/core'\nimport { Db } from '../base/db'\nimport type { DbConfig } from '../base/types'\n\nconst idKey = '_id'\ntype IdType = { _id: string }\n\nconst sessionStore = new AsyncLocalStorage<ClientSession | undefined>(undefined)\n\nexport class MongoDb extends Db<{ _id: string }> {\n\tclient: MongoClient\n\t#cols: { db: string; col: string }[] = []\n\n\tconstructor(\n\t\tprivate mongoConfig: MongoDbConfig,\n\t\tdbConfig: DbConfig,\n\t) {\n\t\tsuper(dbConfig)\n\t\tthis.mongoConfig = v.assert(mongoDbConfigPipe(), mongoConfig)\n\t\tthis.client = new MongoClient(mongoConfig.uri, { ignoreUndefined: true })\n\t\tInstance.on('start', async () => {\n\t\t\tawait this.client.connect()\n\n\t\t\tconst grouped = this.#cols.reduce<Record<string, string[]>>((acc, cur) => {\n\t\t\t\tif (!acc[cur.db]) acc[cur.db] = []\n\t\t\t\tacc[cur.db].push(cur.col)\n\t\t\t\treturn acc\n\t\t\t}, {})\n\n\t\t\tconst options = {\n\t\t\t\tchangeStreamPreAndPostImages: { enabled: true },\n\t\t\t}\n\t\t\tawait Promise.all(\n\t\t\t\tObject.entries(grouped).map(async ([dbName, colNames]) => {\n\t\t\t\t\tconst db = this.client.db(dbName)\n\t\t\t\t\tconst collections = await db.listCollections<CollectionInfo>().toArray()\n\t\t\t\t\treturn colNames.map(async (colName) => {\n\t\t\t\t\t\tconst existing = collections.find((collection) => collection.name === colName)\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\texisting.options?.changeStreamPreAndPostImages?.enabled !== options.changeStreamPreAndPostImages.enabled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tawait db.command({ collMod: colName, ...options })\n\t\t\t\t\t\t} else await db.createCollection(colName, options)\n\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t\tInstance.on('close', async () => this.client.close())\n\t}\n\n\tasync session<T>(callback: () => Promise<T>) {\n\t\tif (sessionStore.getStore()) return callback()\n\t\tconst session = await this.client.startSession()\n\t\treturn session.withTransaction(async () => sessionStore.run(session, callback))\n\t}\n\n\tid() {\n\t\treturn new ObjectId()\n\t}\n\n\tuse<Model extends core.Model<{ _id: string }>, Entity extends core.Entity>(config: core.Config<Model, Entity>) {\n\t\tconst db = this.getScopedDb(config.db)\n\t\tthis.#cols.push({ db, col: config.col })\n\t\treturn this.#getTable(config, this.client.db(db).collection<Model>(config.col))\n\t}\n\n\t#getTable<Model extends core.Model<IdType>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t\tcollection: Collection<Model>,\n\t) {\n\t\ttype WI = Model | WithId<Model>\n\t\tfunction transform(doc: WI, select?: core.Select<Entity>): Entity\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI[], select?: core.Select<Entity>): Entity[]\n\t\t// eslint-disable-next-line no-redeclare\n\t\tfunction transform(doc: WI | WI[], select?: core.Select<Entity>) {\n\t\t\tconst docs = Array.isArray(doc) ? doc : [doc]\n\t\t\tconst mapped = docs.map((d) => config.mapper(d as Model, select))\n\t\t\treturn Array.isArray(doc) ? mapped : mapped[0]\n\t\t}\n\n\t\tfunction prepInsertValue(value: core.CreateInput<Model>, id: string, now: Date, skipUpdate?: boolean) {\n\t\t\tconst base: core.Model<IdType> = {\n\t\t\t\t[idKey]: id,\n\t\t\t\t...(config.options?.skipAudit\n\t\t\t\t\t? {}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\tcreatedAt: now.getTime(),\n\t\t\t\t\t\t\t...(skipUpdate ? {} : { updatedAt: now.getTime() }),\n\t\t\t\t\t\t}),\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t...base,\n\t\t\t} as unknown as OptionalUnlessRequiredId<Model>\n\t\t}\n\n\t\tfunction prepUpdateValue(value: core.UpdateInput<Model>, now: Date, upsert = false) {\n\t\t\treturn {\n\t\t\t\t...value,\n\t\t\t\t$set: {\n\t\t\t\t\t...value.$set,\n\t\t\t\t\t...(upsert || (Object.keys(value).length > 0 && !config.options?.skipAudit) ? { updatedAt: now.getTime() } : {}),\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst dbThis = this\n\n\t\tconst table: core.Table<IdType, Model, Entity, { collection: Collection<Model> }> = {\n\t\t\tconfig,\n\t\t\textras: { collection },\n\n\t\t\tquery: async (params) => {\n\t\t\t\tconst results = await parseMongodbQueryParams(collection, params as QueryParamsBase)\n\t\t\t\treturn {\n\t\t\t\t\t...results,\n\t\t\t\t\tresults: transform(results.results as any, params.select as core.Select<Entity>),\n\t\t\t\t} as any\n\t\t\t},\n\n\t\t\tfindMany: async (filter, options = {}) => {\n\t\t\t\tconst { select, ...rest } = options\n\t\t\t\tconst projection = select?.length ? Object.fromEntries(select.map((k) => [k, 1])) : undefined\n\t\t\t\tconst sortArray = Array.isArray(rest.sort) ? rest.sort : rest.sort ? [rest.sort] : []\n\t\t\t\tconst sort = sortArray.map((p) => [p.field, p.desc ? 'desc' : 'asc'] as [string, SortDirection])\n\t\t\t\tconst docs = await collection\n\t\t\t\t\t.find(filter, {\n\t\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t\t\tlimit: rest.limit,\n\t\t\t\t\t\tsort,\n\t\t\t\t\t\tprojection,\n\t\t\t\t\t})\n\t\t\t\t\t.toArray()\n\t\t\t\treturn transform(docs, select as core.Select<Entity>) as any\n\t\t\t},\n\n\t\t\tfindOne: async (filter: core.Filter<Model>, options = {}) => {\n\t\t\t\tconst result = await table.findMany(filter, { ...options, limit: 1 } as any)\n\t\t\t\treturn (result.at(0) ?? null) as any\n\t\t\t},\n\n\t\t\tfindById: async (id, options = {}) => {\n\t\t\t\tconst result = await table.findOne({ [idKey]: id } as core.Filter<Model>, options as any)\n\t\t\t\treturn result as any\n\t\t\t},\n\n\t\t\tinsertMany: async (values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst payload = values.map((value, i) => prepInsertValue(value, options.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\tawait collection.insertMany(payload, { session: sessionStore.getStore() })\n\n\t\t\t\tconst insertedData = await Promise.all(payload.map(async (data) => await table.findById(data[idKey] as any)))\n\t\t\t\treturn insertedData.filter((value) => !!value)\n\t\t\t},\n\n\t\t\tinsertOne: async (values, options = {}) => {\n\t\t\t\tconst result = await table.insertMany([values], options)\n\t\t\t\treturn result[0]\n\t\t\t},\n\n\t\t\tupdateMany: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst session = sessionStore.getStore()\n\t\t\t\tconst data = await collection.find(filter, { session, projection: { [idKey]: 1 } }).toArray()\n\t\t\t\tconst ids = data.map((doc) => doc[idKey])\n\t\t\t\tconst filterUpd = { [idKey]: { $in: ids } } as core.Filter<Model>\n\t\t\t\tawait collection.updateMany(filterUpd, prepUpdateValue(values, now), { session })\n\t\t\t\treturn table.findMany(filterUpd)\n\t\t\t},\n\n\t\t\tupdateOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\tconst doc = await collection.findOneAndUpdate(filter, prepUpdateValue(values, now), {\n\t\t\t\t\treturnDocument: 'after',\n\t\t\t\t\tsession: sessionStore.getStore(),\n\t\t\t\t})\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tupdateById: async (id, values, options = {}) => {\n\t\t\t\tconst result = await table.updateOne({ [idKey]: id } as core.Filter<Model>, values, options)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tupsertOne: async (filter, values, options = {}) => {\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\n\t\t\t\tconst doc = await collection.findOneAndUpdate(\n\t\t\t\t\tfilter,\n\t\t\t\t\t{\n\t\t\t\t\t\t...prepUpdateValue('update' in values ? values.update : {}, now, true),\n\t\t\t\t\t\t// @ts-expect-error fighting ts\n\t\t\t\t\t\t$setOnInsert: prepInsertValue(values.insert, options.makeId?.() ?? new ObjectId().toString(), now, true),\n\t\t\t\t\t},\n\t\t\t\t\t{ returnDocument: 'after', session: sessionStore.getStore(), upsert: true },\n\t\t\t\t)\n\n\t\t\t\treturn transform(doc, undefined)\n\t\t\t},\n\n\t\t\tdeleteMany: async (filter, options = {}) => {\n\t\t\t\tconst docs = await table.findMany(filter, options)\n\t\t\t\tawait collection.deleteMany(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn docs\n\t\t\t},\n\n\t\t\tdeleteOne: async (filter) => {\n\t\t\t\tconst doc = await collection.findOneAndDelete(filter, { session: sessionStore.getStore() })\n\t\t\t\treturn doc ? transform(doc, undefined) : null\n\t\t\t},\n\n\t\t\tdeleteById: async (id) => {\n\t\t\t\tconst result = await table.deleteOne({ [idKey]: id } as core.Filter<Model>)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\tbulkWrite: async (operations, options = {}) => {\n\t\t\t\tif (!operations.length) return\n\t\t\t\tconst bulk = collection.initializeUnorderedBulkOp({ session: sessionStore.getStore() })\n\t\t\t\tconst now = options.getTime?.() ?? new Date()\n\t\t\t\toperations.forEach((operation, i) => {\n\t\t\t\t\tswitch (operation.op) {\n\t\t\t\t\t\tcase 'insert':\n\t\t\t\t\t\t\tbulk.insert(prepInsertValue(operation.value, operation.makeId?.(i) ?? new ObjectId().toString(), now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tbulk.find(operation.filter).delete()\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tbulk.find(operation.filter).update(prepUpdateValue(operation.value, now))\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tcase 'upsert':\n\t\t\t\t\t\t\tbulk.find(operation.filter)\n\t\t\t\t\t\t\t\t.upsert()\n\t\t\t\t\t\t\t\t.update({\n\t\t\t\t\t\t\t\t\t...prepUpdateValue('update' in operation ? operation.update : {}, now, true),\n\t\t\t\t\t\t\t\t\t$setOnInsert: prepInsertValue(\n\t\t\t\t\t\t\t\t\t\toperation.insert as any,\n\t\t\t\t\t\t\t\t\t\toperation.makeId?.(i) ?? new ObjectId().toString(),\n\t\t\t\t\t\t\t\t\t\tnow,\n\t\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new EquippedError(`Unknown bulkWrite operation`, { operation })\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tawait bulk.execute({ session: sessionStore.getStore() })\n\t\t\t},\n\n\t\t\twatch(callbacks) {\n\t\t\t\tif (!dbThis.config.changes)\n\t\t\t\t\tInstance.crash(new EquippedError('Db changes are not enabled in the configuration.', { config }))\n\t\t\t\treturn new MongoDbChange<Model, Entity>(dbThis.mongoConfig, dbThis.config.changes, collection, callbacks, (m) =>\n\t\t\t\t\tconfig.mapper(m),\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\n\t\treturn table\n\t}\n}\n","import { type PipeInput, v } from 'valleyed'\n\nexport const mongoDbConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\turi: v.string(),\n\t\t}),\n\t\t{ title: 'Mongodb Config', $refId: 'MongodbConfig' },\n\t)\n\nexport type MongoDbConfig = PipeInput<ReturnType<typeof mongoDbConfigPipe>>\n","import { Collection } from 'mongodb'\n\nimport { QueryKeys, type QueryParamsBase, type QueryResults, type QueryWhereBlock, type QueryWhereClause } from '../../pipes'\nimport * as core from '../base/core'\n\nexport const parseMongodbQueryParams = async <Model extends core.Model<{ _id: string }>>(\n\tcollection: Collection<Model>,\n\tparams: QueryParamsBase,\n): Promise<QueryResults<Model>> => {\n\t// Handle where/search clauses\n\tconst query = <ReturnType<typeof buildWhereQuery>[]>[]\n\tconst where = buildWhereQuery(params.where, params.whereType)\n\tif (where) query.push(where)\n\tconst auth = buildWhereQuery(params.auth, params.authType)\n\tif (auth) query.push(auth)\n\tif (params.search && params.search.fields.length > 0) {\n\t\tconst search = params.search.fields.map((field) => ({\n\t\t\t[field]: {\n\t\t\t\t$regex: new RegExp(params.search!.value, 'i'),\n\t\t\t},\n\t\t}))\n\t\tquery.push({ $or: search })\n\t}\n\tconst totalClause = {}\n\tif (query.length > 0) totalClause['$and'] = query\n\n\t// Handle sort clauses\n\tconst sort = params.sort.map((p) => [p.field, p.desc ? 'desc' : 'asc'])\n\n\t// Handle limit/offest clause\n\tconst all = params.all ?? false\n\tconst limit = params.limit\n\tconst page = params.page\n\n\tconst total = await collection.countDocuments(totalClause)\n\n\tconst projection = params.select?.length ? Object.fromEntries(params.select.map((k) => [k, 1])) : undefined\n\tlet builtQuery = collection.find(totalClause, { projection })\n\tif (sort.length) builtQuery = builtQuery.sort(Object.fromEntries(sort))\n\tif (!all && limit) {\n\t\tbuiltQuery = builtQuery.limit(limit)\n\t\tif (page) builtQuery = builtQuery.skip((page - 1) * limit)\n\t}\n\n\tconst results = await builtQuery.toArray()\n\tconst start = 1\n\tconst last = Math.ceil(total / limit) || 1\n\tconst next = page >= last ? null : page + 1\n\tconst previous = page <= start ? null : page - 1\n\n\treturn {\n\t\tpages: { start, last, next, previous, current: page },\n\t\tdocs: { limit, total, count: results.length },\n\t\tresults: results as any[],\n\t} satisfies QueryResults<Model>\n}\n\nfunction isWhereBlock(param: QueryWhereClause): param is QueryWhereBlock {\n\treturn Object.values(QueryKeys).includes(param.condition as QueryKeys)\n}\n\nconst buildWhereQuery = (params: QueryWhereClause[], key: QueryKeys = QueryKeys.and): Record<string, Record<string, any>> | null => {\n\tconst where = (Array.isArray(params) ? params : [])\n\t\t.map((param) => {\n\t\t\tif (isWhereBlock(param)) return buildWhereQuery(param.value, param.condition)\n\t\t\tconst { field } = param\n\t\t\tconst checkedField = field === 'id' ? '_id' : (field ?? '')\n\t\t\tconst checkedValue = param.value === undefined ? '' : param.value\n\t\t\treturn {\n\t\t\t\tfield: checkedField,\n\t\t\t\tvalue: checkedValue,\n\t\t\t\tcondition: param.condition,\n\t\t\t\tisWhere: true,\n\t\t\t}\n\t\t})\n\t\t.filter((c) => !!c)\n\t\t.map((c) => {\n\t\t\tif (c.isWhere) return { [`${c.field}`]: { [`$${c.condition}`]: c.value } }\n\t\t\telse return c\n\t\t})\n\n\treturn where.length > 0 ? { [`$${key}`]: where } : null\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,OAAwC;AACxC,SAAS,cAAc;;;ACDvB,OAAO,WAAW;AAClB,SAAS,SAAS;AAMX,IAAM,cAAc;AAEpB,IAAe,WAAf,MAA2F;AAAA,EACjG,YACW,QACA,WACA,QACT;AAHS;AACA;AACA;AAEV,SAAK,SAAS,EAAE,OAAO,mBAAmB,GAAG,MAAM;AAAA,EACpD;AAAA,EAEA,MAAgB,mBAAmB,KAAa,MAA8B;AAC7E,UAAM,WAAW,MAAM,OAAO,EAAE,SAAS,KAAK,OAAO,YAAY,CAAC;AAClE,WAAO,MAAM,SACX,IAAI,eAAe,GAAG,WAAW;AAAA,MACjC,gBAAgB;AAAA,MAChB,yBAAyB;AAAA,MACzB,6CAA6C;AAAA,MAC7C,qCAAqC;AAAA,MACrC,iBAAiB;AAAA,MACjB,gCAAgC;AAAA,MAChC,mBAAmB;AAAA,MACnB,kCAAkC;AAAA,MAClC,GAAG;AAAA,IACJ,CAAC,EACA,KAAK,YAAY;AACjB,YAAM,SAAS,MAAM,SAAS,IAAI,eAAe,GAAG,SAAS;AAC7D,aAAO,OAAO,KAAK,GAAG,GAAG,QAAQ,WAAW,GAAG,KAAK;AAAA,IACrD,CAAC,EACA,MAAM,CAAC,QAAQ;AACf,YAAM,IAAI,cAAc,+BAA+B,EAAE,IAAI,GAAG,GAAG;AAAA,IACpE,CAAC;AAAA,EACH;AACD;;;AD7BO,IAAM,gBAAN,cAAmG,SAAwB;AAAA,EACjI,WAAW;AAAA,EAEX,YACC,QACA,QACA,YACA,WACA,QACC;AACD,UAAM,QAAQ,WAAW,MAAM;AAE/B,UAAM,UAAU,CAAC,SAChB,KAAK,MACF;AAAA,MACA,GAAG;AAAA,MACH,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK;AAAA,IAC/B,IACC;AAEJ,UAAM,SAAS,WAAW;AAC1B,UAAM,UAAU,WAAW;AAC3B,UAAM,YAAY,GAAG,MAAM,IAAI,OAAO;AACtC,UAAM,QAAQ,GAAG,WAAW,IAAI,SAAS;AAEzC,UAAM,SAAS;AACf,UAAM,YAAY,EAAE,KAAK,OAAO;AAEhC,WAAO,SAAS,OAAO,OAAgB,EAAE,WAAW,KAAK,CAAC,EAAE,UAAU,OAAO,SAA2B;AACvG,YAAM,KAAK,KAAK;AAEhB,UAAI,SAAS,KAAK,MAAM,KAAK,UAAU,MAAM;AAC7C,UAAI,QAAQ,KAAK,MAAM,KAAK,SAAS,MAAM;AAE3C,UAAI,OAAQ,UAAS,QAAQ,MAAM;AACnC,UAAI,MAAO,SAAQ,QAAQ,KAAK;AAChC,UAAI,QAAQ,QAAQ,UAAU,OAAO,QAAQ,OAAQ;AAErD,UAAI,OAAO,OAAO,KAAK,UAAU,WAAW;AAC3C,cAAM,KAAK,UAAU,QAAQ;AAAA,UAC5B,QAAQ;AAAA,UACR,OAAO,KAAK,OAAO,KAAK;AAAA,QACzB,CAAC;AAAA,eACO,OAAO,OAAO,KAAK,UAAU,WAAW,UAAU;AAC1D,cAAM,KAAK,UAAU,QAAQ;AAAA,UAC5B,QAAQ,KAAK,OAAO,MAAM;AAAA,UAC1B,OAAO,KAAK,OAAO,KAAK;AAAA,UACxB,SAAS,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,CAAC;AAAA,QAChD,CAAC;AAAA,eACO,OAAO,OAAO,KAAK,UAAU,WAAW;AAChD,cAAM,KAAK,UAAU,QAAQ;AAAA,UAC5B,QAAQ,KAAK,OAAO,MAAM;AAAA,UAC1B,OAAO;AAAA,QACR,CAAC;AAAA,IACH,CAAC;AAED,aAAS,GAAG,SAAS,YAAY;AAChC,UAAI,KAAK,SAAU;AACnB,WAAK,WAAW;AAEhB,YAAM;AAAA,QACL,YAAY;AACX,gBAAM,UAAU,MAAM,KAAK,mBAAmB,OAAO;AAAA,YACpD,mBAAmB;AAAA,YACnB,gBAAgB;AAAA,YAChB,6BAA6B,OAAO;AAAA,YACpC,2BAA2B;AAAA,YAC3B,iBAAiB;AAAA,YACjB,iBAAiB;AAAA,YACjB,kBAAkB;AAAA,YAClB,yBAAyB;AAAA,YACzB,sBAAsB;AAAA,UACvB,CAAC;AAED,cAAI,QAAS,QAAO,EAAE,MAAM,MAAM,OAAO,KAAK;AAC9C,gBAAM,WAAW,iBAAiB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAS,GAAG,EAAE,QAAQ,KAAK,CAAC;AAC3F,gBAAM,WAAW,iBAAiB,SAAS;AAC3C,mBAAS,IAAI,EAAE,IAAI,KAAK,8BAA8B,SAAS,cAAc;AAC7E,iBAAO,EAAE,MAAM,MAAM;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,MACD,EAAE,MAAM,CAAC,QAAQ,SAAS,MAAM,IAAI,cAAc,8BAA8B,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;AAAA,IACrG,CAAC;AAAA,EACF;AACD;;;AEhGA,SAAS,yBAAyB;AAElC;AAAA,EAGC;AAAA,EACA;AAAA,OAKM;AACP,SAAS,KAAAA,UAAS;;;ACZlB,SAAyB,KAAAC,UAAS;AAE3B,IAAM,oBAAoB,MAChCA,GAAE;AAAA,EACDA,GAAE,OAAO;AAAA,IACR,KAAKA,GAAE,OAAO;AAAA,EACf,CAAC;AAAA,EACD,EAAE,OAAO,kBAAkB,QAAQ,gBAAgB;AACpD;;;ACRD,OAA2B;AAKpB,IAAM,0BAA0B,OACtC,YACA,WACkC;AAElC,QAAM,QAA8C,CAAC;AACrD,QAAM,QAAQ,gBAAgB,OAAO,OAAO,OAAO,SAAS;AAC5D,MAAI,MAAO,OAAM,KAAK,KAAK;AAC3B,QAAM,OAAO,gBAAgB,OAAO,MAAM,OAAO,QAAQ;AACzD,MAAI,KAAM,OAAM,KAAK,IAAI;AACzB,MAAI,OAAO,UAAU,OAAO,OAAO,OAAO,SAAS,GAAG;AACrD,UAAM,SAAS,OAAO,OAAO,OAAO,IAAI,CAAC,WAAW;AAAA,MACnD,CAAC,KAAK,GAAG;AAAA,QACR,QAAQ,IAAI,OAAO,OAAO,OAAQ,OAAO,GAAG;AAAA,MAC7C;AAAA,IACD,EAAE;AACF,UAAM,KAAK,EAAE,KAAK,OAAO,CAAC;AAAA,EAC3B;AACA,QAAM,cAAc,CAAC;AACrB,MAAI,MAAM,SAAS,EAAG,aAAY,MAAM,IAAI;AAG5C,QAAM,OAAO,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,KAAK,CAAC;AAGtE,QAAM,MAAM,OAAO,OAAO;AAC1B,QAAM,QAAQ,OAAO;AACrB,QAAM,OAAO,OAAO;AAEpB,QAAM,QAAQ,MAAM,WAAW,eAAe,WAAW;AAEzD,QAAM,aAAa,OAAO,QAAQ,SAAS,OAAO,YAAY,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAClG,MAAI,aAAa,WAAW,KAAK,aAAa,EAAE,WAAW,CAAC;AAC5D,MAAI,KAAK,OAAQ,cAAa,WAAW,KAAK,OAAO,YAAY,IAAI,CAAC;AACtE,MAAI,CAAC,OAAO,OAAO;AAClB,iBAAa,WAAW,MAAM,KAAK;AACnC,QAAI,KAAM,cAAa,WAAW,MAAM,OAAO,KAAK,KAAK;AAAA,EAC1D;AAEA,QAAM,UAAU,MAAM,WAAW,QAAQ;AACzC,QAAM,QAAQ;AACd,QAAM,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK;AACzC,QAAM,OAAO,QAAQ,OAAO,OAAO,OAAO;AAC1C,QAAM,WAAW,QAAQ,QAAQ,OAAO,OAAO;AAE/C,SAAO;AAAA,IACN,OAAO,EAAE,OAAO,MAAM,MAAM,UAAU,SAAS,KAAK;AAAA,IACpD,MAAM,EAAE,OAAO,OAAO,OAAO,QAAQ,OAAO;AAAA,IAC5C;AAAA,EACD;AACD;AAEA,SAAS,aAAa,OAAmD;AACxE,SAAO,OAAO,OAAO,SAAS,EAAE,SAAS,MAAM,SAAsB;AACtE;AAEA,IAAM,kBAAkB,CAAC,QAA4B,0BAA+E;AACnI,QAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,GAC/C,IAAI,CAAC,UAAU;AACf,QAAI,aAAa,KAAK,EAAG,QAAO,gBAAgB,MAAM,OAAO,MAAM,SAAS;AAC5E,UAAM,EAAE,MAAM,IAAI;AAClB,UAAM,eAAe,UAAU,OAAO,QAAS,SAAS;AACxD,UAAM,eAAe,MAAM,UAAU,SAAY,KAAK,MAAM;AAC5D,WAAO;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW,MAAM;AAAA,MACjB,SAAS;AAAA,IACV;AAAA,EACD,CAAC,EACA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EACjB,IAAI,CAAC,MAAM;AACX,QAAI,EAAE,QAAS,QAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE;AAAA,QACpE,QAAO;AAAA,EACb,CAAC;AAEF,SAAO,MAAM,SAAS,IAAI,EAAE,CAAC,IAAI,GAAG,EAAE,GAAG,MAAM,IAAI;AACpD;;;AF1DA,IAAM,QAAQ;AAGd,IAAM,eAAe,IAAI,kBAA6C,MAAS;AAExE,IAAM,UAAN,cAAsB,GAAoB;AAAA,EAIhD,YACS,aACR,UACC;AACD,UAAM,QAAQ;AAHN;AAIR,SAAK,cAAcC,GAAE,OAAO,kBAAkB,GAAG,WAAW;AAC5D,SAAK,SAAS,IAAI,YAAY,YAAY,KAAK,EAAE,iBAAiB,KAAK,CAAC;AACxE,aAAS,GAAG,SAAS,YAAY;AAChC,YAAM,KAAK,OAAO,QAAQ;AAE1B,YAAM,UAAU,KAAK,MAAM,OAAiC,CAAC,KAAK,QAAQ;AACzE,YAAI,CAAC,IAAI,IAAI,EAAE,EAAG,KAAI,IAAI,EAAE,IAAI,CAAC;AACjC,YAAI,IAAI,EAAE,EAAE,KAAK,IAAI,GAAG;AACxB,eAAO;AAAA,MACR,GAAG,CAAC,CAAC;AAEL,YAAM,UAAU;AAAA,QACf,8BAA8B,EAAE,SAAS,KAAK;AAAA,MAC/C;AACA,YAAM,QAAQ;AAAA,QACb,OAAO,QAAQ,OAAO,EAAE,IAAI,OAAO,CAAC,QAAQ,QAAQ,MAAM;AACzD,gBAAM,KAAK,KAAK,OAAO,GAAG,MAAM;AAChC,gBAAM,cAAc,MAAM,GAAG,gBAAgC,EAAE,QAAQ;AACvE,iBAAO,SAAS,IAAI,OAAO,YAAY;AACtC,kBAAM,WAAW,YAAY,KAAK,CAAC,eAAe,WAAW,SAAS,OAAO;AAC7E,gBAAI,UAAU;AACb,kBACC,SAAS,SAAS,8BAA8B,YAAY,QAAQ,6BAA6B;AAEjG,sBAAM,GAAG,QAAQ,EAAE,SAAS,SAAS,GAAG,QAAQ,CAAC;AAAA,YACnD,MAAO,OAAM,GAAG,iBAAiB,SAAS,OAAO;AAAA,UAClD,CAAC;AAAA,QACF,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AACD,aAAS,GAAG,SAAS,YAAY,KAAK,OAAO,MAAM,CAAC;AAAA,EACrD;AAAA,EAvCA;AAAA,EACA,QAAuC,CAAC;AAAA,EAwCxC,MAAM,QAAW,UAA4B;AAC5C,QAAI,aAAa,SAAS,EAAG,QAAO,SAAS;AAC7C,UAAM,UAAU,MAAM,KAAK,OAAO,aAAa;AAC/C,WAAO,QAAQ,gBAAgB,YAAY,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,EAC/E;AAAA,EAEA,KAAK;AACJ,WAAO,IAAI,SAAS;AAAA,EACrB;AAAA,EAEA,IAA2E,QAAoC;AAC9G,UAAM,KAAK,KAAK,YAAY,OAAO,EAAE;AACrC,SAAK,MAAM,KAAK,EAAE,IAAI,KAAK,OAAO,IAAI,CAAC;AACvC,WAAO,KAAK,UAAU,QAAQ,KAAK,OAAO,GAAG,EAAE,EAAE,WAAkB,OAAO,GAAG,CAAC;AAAA,EAC/E;AAAA,EAEA,UACC,QACA,YACC;AAMD,aAAS,UAAU,KAAgB,QAA8B;AAChE,YAAM,OAAO,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAC5C,YAAM,SAAS,KAAK,IAAI,CAAC,MAAM,OAAO,OAAO,GAAY,MAAM,CAAC;AAChE,aAAO,MAAM,QAAQ,GAAG,IAAI,SAAS,OAAO,CAAC;AAAA,IAC9C;AAEA,aAAS,gBAAgB,OAAgC,IAAY,KAAW,YAAsB;AACrG,YAAM,OAA2B;AAAA,QAChC,CAAC,KAAK,GAAG;AAAA,QACT,GAAI,OAAO,SAAS,YACjB,CAAC,IACD;AAAA,UACA,WAAW,IAAI,QAAQ;AAAA,UACvB,GAAI,aAAa,CAAC,IAAI,EAAE,WAAW,IAAI,QAAQ,EAAE;AAAA,QAClD;AAAA,MACH;AACA,aAAO;AAAA,QACN,GAAG;AAAA,QACH,GAAG;AAAA,MACJ;AAAA,IACD;AAEA,aAAS,gBAAgB,OAAgC,KAAW,SAAS,OAAO;AACnF,aAAO;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,UACL,GAAG,MAAM;AAAA,UACT,GAAI,UAAW,OAAO,KAAK,KAAK,EAAE,SAAS,KAAK,CAAC,OAAO,SAAS,YAAa,EAAE,WAAW,IAAI,QAAQ,EAAE,IAAI,CAAC;AAAA,QAC/G;AAAA,MACD;AAAA,IACD;AAEA,UAAM,SAAS;AAEf,UAAM,QAA8E;AAAA,MACnF;AAAA,MACA,QAAQ,EAAE,WAAW;AAAA,MAErB,OAAO,OAAO,WAAW;AACxB,cAAM,UAAU,MAAM,wBAAwB,YAAY,MAAyB;AACnF,eAAO;AAAA,UACN,GAAG;AAAA,UACH,SAAS,UAAU,QAAQ,SAAgB,OAAO,MAA6B;AAAA,QAChF;AAAA,MACD;AAAA,MAEA,UAAU,OAAO,QAAQ,UAAU,CAAC,MAAM;AACzC,cAAM,EAAE,QAAQ,GAAG,KAAK,IAAI;AAC5B,cAAM,aAAa,QAAQ,SAAS,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACpF,cAAM,YAAY,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;AACpF,cAAM,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,KAAK,CAA4B;AAC/F,cAAM,OAAO,MAAM,WACjB,KAAK,QAAQ;AAAA,UACb,SAAS,aAAa,SAAS;AAAA,UAC/B,OAAO,KAAK;AAAA,UACZ;AAAA,UACA;AAAA,QACD,CAAC,EACA,QAAQ;AACV,eAAO,UAAU,MAAM,MAA6B;AAAA,MACrD;AAAA,MAEA,SAAS,OAAO,QAA4B,UAAU,CAAC,MAAM;AAC5D,cAAM,SAAS,MAAM,MAAM,SAAS,QAAQ,EAAE,GAAG,SAAS,OAAO,EAAE,CAAQ;AAC3E,eAAQ,OAAO,GAAG,CAAC,KAAK;AAAA,MACzB;AAAA,MAEA,UAAU,OAAO,IAAI,UAAU,CAAC,MAAM;AACrC,cAAM,SAAS,MAAM,MAAM,QAAQ,EAAE,CAAC,KAAK,GAAG,GAAG,GAAyB,OAAc;AACxF,eAAO;AAAA,MACR;AAAA,MAEA,YAAY,OAAO,QAAQ,UAAU,CAAC,MAAM;AAC3C,cAAM,MAAM,QAAQ,UAAU,KAAK,oBAAI,KAAK;AAC5C,cAAM,UAAU,OAAO,IAAI,CAAC,OAAO,MAAM,gBAAgB,OAAO,QAAQ,SAAS,CAAC,KAAK,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC;AACtH,cAAM,WAAW,WAAW,SAAS,EAAE,SAAS,aAAa,SAAS,EAAE,CAAC;AAEzE,cAAM,eAAe,MAAM,QAAQ,IAAI,QAAQ,IAAI,OAAO,SAAS,MAAM,MAAM,SAAS,KAAK,KAAK,CAAQ,CAAC,CAAC;AAC5G,eAAO,aAAa,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK;AAAA,MAC9C;AAAA,MAEA,WAAW,OAAO,QAAQ,UAAU,CAAC,MAAM;AAC1C,cAAM,SAAS,MAAM,MAAM,WAAW,CAAC,MAAM,GAAG,OAAO;AACvD,eAAO,OAAO,CAAC;AAAA,MAChB;AAAA,MAEA,YAAY,OAAO,QAAQ,QAAQ,UAAU,CAAC,MAAM;AACnD,cAAM,MAAM,QAAQ,UAAU,KAAK,oBAAI,KAAK;AAC5C,cAAM,UAAU,aAAa,SAAS;AACtC,cAAM,OAAO,MAAM,WAAW,KAAK,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ;AAC5F,cAAM,MAAM,KAAK,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;AACxC,cAAM,YAAY,EAAE,CAAC,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE;AAC1C,cAAM,WAAW,WAAW,WAAW,gBAAgB,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC;AAChF,eAAO,MAAM,SAAS,SAAS;AAAA,MAChC;AAAA,MAEA,WAAW,OAAO,QAAQ,QAAQ,UAAU,CAAC,MAAM;AAClD,cAAM,MAAM,QAAQ,UAAU,KAAK,oBAAI,KAAK;AAC5C,cAAM,MAAM,MAAM,WAAW,iBAAiB,QAAQ,gBAAgB,QAAQ,GAAG,GAAG;AAAA,UACnF,gBAAgB;AAAA,UAChB,SAAS,aAAa,SAAS;AAAA,QAChC,CAAC;AACD,eAAO,MAAM,UAAU,KAAK,MAAS,IAAI;AAAA,MAC1C;AAAA,MAEA,YAAY,OAAO,IAAI,QAAQ,UAAU,CAAC,MAAM;AAC/C,cAAM,SAAS,MAAM,MAAM,UAAU,EAAE,CAAC,KAAK,GAAG,GAAG,GAAyB,QAAQ,OAAO;AAC3F,eAAO;AAAA,MACR;AAAA,MAEA,WAAW,OAAO,QAAQ,QAAQ,UAAU,CAAC,MAAM;AAClD,cAAM,MAAM,QAAQ,UAAU,KAAK,oBAAI,KAAK;AAE5C,cAAM,MAAM,MAAM,WAAW;AAAA,UAC5B;AAAA,UACA;AAAA,YACC,GAAG,gBAAgB,YAAY,SAAS,OAAO,SAAS,CAAC,GAAG,KAAK,IAAI;AAAA;AAAA,YAErE,cAAc,gBAAgB,OAAO,QAAQ,QAAQ,SAAS,KAAK,IAAI,SAAS,EAAE,SAAS,GAAG,KAAK,IAAI;AAAA,UACxG;AAAA,UACA,EAAE,gBAAgB,SAAS,SAAS,aAAa,SAAS,GAAG,QAAQ,KAAK;AAAA,QAC3E;AAEA,eAAO,UAAU,KAAK,MAAS;AAAA,MAChC;AAAA,MAEA,YAAY,OAAO,QAAQ,UAAU,CAAC,MAAM;AAC3C,cAAM,OAAO,MAAM,MAAM,SAAS,QAAQ,OAAO;AACjD,cAAM,WAAW,WAAW,QAAQ,EAAE,SAAS,aAAa,SAAS,EAAE,CAAC;AACxE,eAAO;AAAA,MACR;AAAA,MAEA,WAAW,OAAO,WAAW;AAC5B,cAAM,MAAM,MAAM,WAAW,iBAAiB,QAAQ,EAAE,SAAS,aAAa,SAAS,EAAE,CAAC;AAC1F,eAAO,MAAM,UAAU,KAAK,MAAS,IAAI;AAAA,MAC1C;AAAA,MAEA,YAAY,OAAO,OAAO;AACzB,cAAM,SAAS,MAAM,MAAM,UAAU,EAAE,CAAC,KAAK,GAAG,GAAG,CAAuB;AAC1E,eAAO;AAAA,MACR;AAAA,MAEA,WAAW,OAAO,YAAY,UAAU,CAAC,MAAM;AAC9C,YAAI,CAAC,WAAW,OAAQ;AACxB,cAAM,OAAO,WAAW,0BAA0B,EAAE,SAAS,aAAa,SAAS,EAAE,CAAC;AACtF,cAAM,MAAM,QAAQ,UAAU,KAAK,oBAAI,KAAK;AAC5C,mBAAW,QAAQ,CAAC,WAAW,MAAM;AACpC,kBAAQ,UAAU,IAAI;AAAA,YACrB,KAAK;AACJ,mBAAK,OAAO,gBAAgB,UAAU,OAAO,UAAU,SAAS,CAAC,KAAK,IAAI,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC;AACrG;AAAA,YACD,KAAK;AACJ,mBAAK,KAAK,UAAU,MAAM,EAAE,OAAO;AACnC;AAAA,YACD,KAAK;AACJ,mBAAK,KAAK,UAAU,MAAM,EAAE,OAAO,gBAAgB,UAAU,OAAO,GAAG,CAAC;AACxE;AAAA,YACD,KAAK;AACJ,mBAAK,KAAK,UAAU,MAAM,EACxB,OAAO,EACP,OAAO;AAAA,gBACP,GAAG,gBAAgB,YAAY,YAAY,UAAU,SAAS,CAAC,GAAG,KAAK,IAAI;AAAA,gBAC3E,cAAc;AAAA,kBACb,UAAU;AAAA,kBACV,UAAU,SAAS,CAAC,KAAK,IAAI,SAAS,EAAE,SAAS;AAAA,kBACjD;AAAA,kBACA;AAAA,gBACD;AAAA,cACD,CAAC;AACF;AAAA,YACD;AACC,oBAAM,IAAI,cAAc,+BAA+B,EAAE,UAAU,CAAC;AAAA,UACtE;AAAA,QACD,CAAC;AACD,cAAM,KAAK,QAAQ,EAAE,SAAS,aAAa,SAAS,EAAE,CAAC;AAAA,MACxD;AAAA,MAEA,MAAM,WAAW;AAChB,YAAI,CAAC,OAAO,OAAO;AAClB,mBAAS,MAAM,IAAI,cAAc,oDAAoD,EAAE,OAAO,CAAC,CAAC;AACjG,eAAO,IAAI;AAAA,UAA6B,OAAO;AAAA,UAAa,OAAO,OAAO;AAAA,UAAS;AAAA,UAAY;AAAA,UAAW,CAAC,MAC1G,OAAO,OAAO,CAAC;AAAA,QAChB;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AACD;","names":["v","v","v"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import{a as o,b as r,c as e,d as f,e as m,f as p,g as t}from "../chunk-AUKXL4EA.min.mjs";import"../chunk-6DW4GW3R.min.mjs";import"../chunk-LTDVZJYJ.min.mjs";import"../chunk-DSUJ5FUL.min.mjs";import"../chunk-AQY7QVYI.min.mjs";export{f as Conditions,o as Db,e as QueryKeys,r as dbChangeConfigPipe,m as queryParamsPipe,p as queryResultsPipe,t as wrapQueryParams};
|
|
2
2
|
//# sourceMappingURL=index.min.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|