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 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orm/adapters/in-memory/index.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport { v, differ } from 'valleyed'\n\nimport { configurable } from '../../../utilities/configurable'\nimport type { FieldTypeName } from '../../adapter'\nimport { Filter, FilterGroup, type FilterChild } from '../../filter'\nimport type { DiscoveredSchema, ForeignKeyAction } from '../../migrations/introspection-types'\nimport type { AddFieldChange, AddForeignKeyChange, AddIndexChange, AnyFieldSpec, CreateTableChange, DropFieldChange, DropForeignKeyChange, DropIndexChange, DropTableChange, ModifyFieldChange, RenameFieldChange, RenameTableChange } from '../../migrations/types'\nimport { OrmAdapter, type AggregateSpec } from '../../orm-adapter'\nimport type { IterationQueryOptions, QueryOptions } from '../../query-options'\nimport type { AnySchema } from '../../schema'\nimport { IncOp, MaxOp, MinOp, MulOp, PatchOp, PullOp, PushOp, SetOp, UnsetOp, type AnyUpdateOp } from '../../updates'\n\nconst inMemoryConnectionPipe = () => v.object({})\n\nexport type InMemoryRepoConfig = {\n\ttable: string\n\tprefix?: string\n}\n\ntype MigrationRecord = { id: string; appliedAt: number }\ntype TableMeta = { pk: { name: string; type: string }; fields: Map<string, AnyFieldSpec> }\ntype IndexMeta = { table: string; on: readonly string[]; unique: boolean }\ntype ForeignKeyMeta = { table: string; on: string; references: { table: string; column: string }; onDelete?: ForeignKeyAction; onUpdate?: ForeignKeyAction }\n\ntype Snapshot = {\n\tstores: Map<string, Map<string, Record<string, unknown>>>\n\tmigrations: Map<string, MigrationRecord>\n\tindexes: Map<string, IndexMeta>\n\ttables: Map<string, TableMeta>\n\tforeignKeys: Map<string, ForeignKeyMeta>\n}\n\nfunction clone<T>(value: T): T {\n\treturn structuredClone(value)\n}\n\nconst replaceMap = <K, V>(target: Map<K, V>, source: Map<K, V>) => {\n\ttarget.clear()\n\tfor (const [k, val] of source.entries()) target.set(k, val)\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction containsSubset(source: unknown, needle: unknown): boolean {\n\tif (Array.isArray(source)) {\n\t\tconst wanted = Array.isArray(needle) ? needle : [needle]\n\t\treturn wanted.every((item) => source.some((existing) => differ.equal(existing, item)))\n\t}\n\n\tif (isPlainObject(source) && isPlainObject(needle)) {\n\t\treturn Object.entries(needle).every(([k, v]) => containsSubset(source[k], v))\n\t}\n\n\treturn differ.equal(source, needle)\n}\n\nfunction compareValues(a: unknown, b: unknown): number {\n\tif (a === b) return 0\n\tif (a == null) return -1\n\tif (b == null) return 1\n\tif (typeof a === 'number' && typeof b === 'number') return a < b ? -1 : 1\n\tif (typeof a === 'string' && typeof b === 'string') return a < b ? -1 : 1\n\tif (typeof a === 'boolean' && typeof b === 'boolean') return a === false ? -1 : 1\n\tconst sa = JSON.stringify(a)\n\tconst sb = JSON.stringify(b)\n\tif (sa === sb) return 0\n\treturn sa < sb ? -1 : 1\n}\n\nfunction resolveConfigName(_: AnySchema, config: InMemoryRepoConfig): string {\n\treturn `${config.prefix ?? ''}${config.table}`\n}\n\nfunction evaluateFilter(doc: Record<string, unknown>, filter: Filter): boolean {\n\tconst fieldValue = doc[filter.field]\n\tconst value = filter.value\n\n\tswitch (filter.op) {\n\t\tcase 'eq':\n\t\t\treturn differ.equal(fieldValue, value)\n\t\tcase 'ne':\n\t\t\treturn !differ.equal(fieldValue, value)\n\t\tcase 'gt':\n\t\t\treturn compareValues(fieldValue, value) > 0\n\t\tcase 'gte':\n\t\t\treturn compareValues(fieldValue, value) >= 0\n\t\tcase 'lt':\n\t\t\treturn compareValues(fieldValue, value) < 0\n\t\tcase 'lte':\n\t\t\treturn compareValues(fieldValue, value) <= 0\n\t\tcase 'in': {\n\t\t\tif (!Array.isArray(value)) return false\n\t\t\treturn value.some((v) => differ.equal(fieldValue, v))\n\t\t}\n\t\tcase 'notIn': {\n\t\t\tif (!Array.isArray(value)) return true\n\t\t\treturn !value.some((v) => differ.equal(fieldValue, v))\n\t\t}\n\t\tcase 'like':\n\t\t\treturn String(fieldValue ?? '')\n\t\t\t\t.toLowerCase()\n\t\t\t\t.includes(String(value ?? '').toLowerCase())\n\t\tcase 'exists':\n\t\t\treturn fieldValue != null\n\t\tcase 'notExists':\n\t\t\treturn fieldValue == null\n\t\tcase 'contains':\n\t\t\treturn containsSubset(fieldValue, value)\n\t\tcase 'notContains':\n\t\t\treturn !containsSubset(fieldValue, value)\n\t\tdefault:\n\t\t\treturn false\n\t}\n}\n\nfunction evaluateChild(doc: Record<string, unknown>, child: FilterChild): boolean {\n\tif (child instanceof Filter) return evaluateFilter(doc, child)\n\tif (child instanceof FilterGroup) {\n\t\tif (child.op === 'and') return child.children.every((c) => evaluateChild(doc, c))\n\t\tif (child.op === 'or') return child.children.some((c) => evaluateChild(doc, c))\n\t}\n\treturn true\n}\n\nfunction matchesFilter(doc: Record<string, unknown>, group: FilterGroup): boolean {\n\tfor (const clause of group.children) {\n\t\tif (!evaluateChild(doc, clause)) return false\n\t}\n\treturn true\n}\n\nfunction applyOptions(rows: Record<string, unknown>[], options?: QueryOptions): Record<string, unknown>[] {\n\tlet results = rows\n\n\tif (options?.orderBy?.length) {\n\t\tresults = [...results].sort((a, b) => {\n\t\t\tfor (const ord of options.orderBy ?? []) {\n\t\t\t\tconst cmp = compareValues(a[ord.field], b[ord.field])\n\t\t\t\tif (cmp !== 0) return ord.direction === 'asc' ? cmp : -cmp\n\t\t\t}\n\t\t\treturn 0\n\t\t})\n\t}\n\n\tif (options?.offset != null) {\n\t\tresults = results.slice(Math.max(0, options.offset))\n\t}\n\n\tif (options?.limit != null) {\n\t\tresults = results.slice(0, options.limit)\n\t}\n\n\tif (options?.select?.length) {\n\t\tconst fields = new Set<string>(options.select)\n\t\tresults = results.map((row) => {\n\t\t\tconst out: Record<string, unknown> = {}\n\t\t\tfor (const key of fields) out[key] = row[key]\n\t\t\treturn out\n\t\t})\n\t}\n\n\treturn results\n}\n\nfunction applyUpdateOp(current: Record<string, unknown>, key: string, value: unknown) {\n\tif (value instanceof IncOp) {\n\t\tconst base = Number(current[key] ?? 0)\n\t\tcurrent[key] = base + value.value\n\t\treturn\n\t}\n\tif (value instanceof MulOp) {\n\t\tconst base = Number(current[key] ?? 0)\n\t\tcurrent[key] = base * value.value\n\t\treturn\n\t}\n\tif (value instanceof MinOp) {\n\t\tconst base = current[key]\n\t\tcurrent[key] = base == null || compareValues(value.value, base) < 0 ? value.value : base\n\t\treturn\n\t}\n\tif (value instanceof MaxOp) {\n\t\tconst base = current[key]\n\t\tcurrent[key] = base == null || compareValues(value.value, base) > 0 ? value.value : base\n\t\treturn\n\t}\n\tif (value instanceof UnsetOp) {\n\t\tcurrent[key] = null\n\t\treturn\n\t}\n\tif (value instanceof PushOp) {\n\t\tconst arr = Array.isArray(current[key]) ? [...(current[key] as unknown[])] : []\n\t\tarr.push(clone(value.value))\n\t\tcurrent[key] = arr\n\t\treturn\n\t}\n\tif (value instanceof PullOp) {\n\t\tconst arr = Array.isArray(current[key]) ? (current[key] as unknown[]) : []\n\t\tcurrent[key] = arr.filter((entry) => !differ.equal(entry, value.value))\n\t\treturn\n\t}\n\tif (value instanceof PatchOp) {\n\t\tconst target = isPlainObject(current[key]) ? clone(current[key] as Record<string, unknown>) : {}\n\t\tif (isPlainObject(value.value)) {\n\t\t\tfor (const [k, v] of Object.entries(value.value as Record<string, unknown>)) {\n\t\t\t\ttarget[k] = clone(v)\n\t\t\t}\n\t\t}\n\t\tcurrent[key] = target\n\t\treturn\n\t}\n\tcurrent[key] = clone(value)\n}\n\nfunction applyUpdateData(doc: Record<string, unknown>, data: Record<string, unknown>): Record<string, unknown> {\n\tconst updated = clone(doc)\n\tfor (const [key, value] of Object.entries(data)) {\n\t\tapplyUpdateOp(updated, key, value)\n\t}\n\treturn updated\n}\n\nfunction applyOps(doc: Record<string, unknown>, ops: AnyUpdateOp[]): Record<string, unknown> {\n\tconst updated = clone(doc)\n\tfor (const op of ops) {\n\t\tif (op instanceof SetOp) {\n\t\t\tfor (const [key, value] of Object.entries(op.values)) {\n\t\t\t\tupdated[key] = clone(value)\n\t\t\t}\n\t\t} else {\n\t\t\tapplyUpdateOp(updated, op.field, op)\n\t\t}\n\t}\n\treturn updated\n}\n\nconst sessionActiveStore = new AsyncLocalStorage<boolean>()\n\nexport class InMemoryAdapter extends configurable(inMemoryConnectionPipe, OrmAdapter) {\n\treadonly schemaConfigPipe = v.object({ table: v.string() })\n\n\treadonly supportedFieldTypes = ['string', 'number', 'boolean', 'null', 'object', 'array', 'date'] as const\n\treadonly queryableOps = ['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'notIn', 'like', 'exists', 'notExists', 'contains', 'notContains'] as const\n\treadonly updateOps = ['set', 'inc', 'mul', 'min', 'max', 'unset', 'push', 'pull', 'patch'] as const\n\treadonly aggregateOps = ['count', 'countDistinct', 'sum', 'avg', 'min', 'max'] as const\n\n\treadonly stores = new Map<string, Map<string, Record<string, unknown>>>()\n\treadonly migrations = new Map<string, MigrationRecord>()\n\treadonly indexes = new Map<string, IndexMeta>()\n\treadonly tables = new Map<string, TableMeta>()\n\treadonly foreignKeys = new Map<string, ForeignKeyMeta>()\n\n\t#migrationLock: Promise<void> = Promise.resolve()\n\n\tprotected constructor(config: typeof InMemoryAdapter.Config) {\n\t\tsuper(config)\n\t}\n\n\t#getStore(name: string) {\n\t\tif (!this.stores.has(name)) this.stores.set(name, new Map())\n\t\treturn this.stores.get(name)!\n\t}\n\n\t#resolveStore(schema: AnySchema, config: unknown) {\n\t\treturn this.#getStore(resolveConfigName(schema, config as InMemoryRepoConfig))\n\t}\n\n\t#snapshot(): Snapshot {\n\t\tconst stores = new Map<string, Map<string, Record<string, unknown>>>()\n\t\tfor (const [name, store] of this.stores.entries()) {\n\t\t\tconst storeCopy = new Map<string, Record<string, unknown>>()\n\t\t\tfor (const [id, doc] of store.entries()) {\n\t\t\t\tstoreCopy.set(id, clone(doc))\n\t\t\t}\n\t\t\tstores.set(name, storeCopy)\n\t\t}\n\t\tconst migrations = new Map(this.migrations)\n\t\tconst indexes = new Map(this.indexes)\n\t\tconst tables = new Map<string, TableMeta>()\n\t\tfor (const [name, meta] of this.tables.entries()) {\n\t\t\ttables.set(name, { pk: { ...meta.pk }, fields: new Map(meta.fields) })\n\t\t}\n\t\tconst foreignKeys = new Map(this.foreignKeys)\n\t\treturn { stores, migrations, indexes, tables, foreignKeys }\n\t}\n\n\t#restore(snap: Snapshot) {\n\t\treplaceMap(this.stores, snap.stores)\n\t\treplaceMap(this.migrations, snap.migrations)\n\t\treplaceMap(this.indexes, snap.indexes)\n\t\treplaceMap(this.tables, snap.tables)\n\t\treplaceMap(this.foreignKeys, snap.foreignKeys)\n\t}\n\n\tasync findByPk(schema: AnySchema, config: unknown, pk: unknown) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst doc = store.get(String(pk))\n\t\treturn doc ? clone(doc) : null\n\t}\n\n\tasync createMany(schema: AnySchema, config: unknown, data: Record<string, unknown>[]) {\n\t\tconst pk = schema.pkField.name\n\t\tconst store = this.#resolveStore(schema, config)\n\t\treturn data.map((d) => {\n\t\t\tconst row = clone(d)\n\t\t\tstore.set(String(row[pk]), row)\n\t\t\treturn clone(row)\n\t\t})\n\t}\n\n\tasync deleteByPk(schema: AnySchema, config: unknown, pk: unknown) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pkStr = String(pk)\n\t\tconst doc = store.get(pkStr)\n\t\tif (!doc) return null\n\t\tstore.delete(pkStr)\n\t\treturn clone(doc)\n\t}\n\n\tasync updateByPk(schema: AnySchema, config: unknown, pk: unknown, ops: AnyUpdateOp[]) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pkStr = String(pk)\n\t\tconst doc = store.get(pkStr)\n\t\tif (!doc) return null\n\t\tconst updated = applyOps(doc, ops)\n\t\tstore.set(pkStr, updated)\n\t\treturn clone(updated)\n\t}\n\n\tasync findMany(schema: AnySchema, config: unknown, group: FilterGroup, options?: QueryOptions) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst rows = [...store.values()].filter((doc) => matchesFilter(doc, group)).map((doc) => clone(doc))\n\t\treturn applyOptions(rows, options)\n\t}\n\n\tasync count(schema: AnySchema, config: unknown, group: FilterGroup) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\treturn [...store.values()].filter((doc) => matchesFilter(doc, group)).length\n\t}\n\n\tasync *iterateMany(schema: AnySchema, config: unknown, group: FilterGroup, options?: IterationQueryOptions) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst rows = applyOptions([...store.values()].filter((doc) => matchesFilter(doc, group)).map((doc) => clone(doc)), options)\n\t\tconst batchSize = typeof options?.batchSize === 'number' && Number.isSafeInteger(options.batchSize) && options.batchSize > 0 ? options.batchSize : 1\n\t\tfor (let start = 0; start < rows.length; start += batchSize) {\n\t\t\tfor (const row of rows.slice(start, start + batchSize)) {\n\t\t\t\tyield row\n\t\t\t}\n\t\t}\n\t}\n\n\tasync updateMany(schema: AnySchema, config: unknown, group: FilterGroup, data: Record<string, unknown>) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst ids = [...store.entries()].filter(([, doc]) => matchesFilter(doc, group)).map(([id]) => id)\n\n\t\tconst updated: Record<string, unknown>[] = []\n\t\tfor (const id of ids) {\n\t\t\tconst current = store.get(id)\n\t\t\tif (!current) continue\n\t\t\tconst next = applyUpdateData(current, data)\n\t\t\tstore.set(id, next)\n\t\t\tupdated.push(clone(next))\n\t\t}\n\t\treturn updated\n\t}\n\n\tasync deleteMany(schema: AnySchema, config: unknown, filter: FilterGroup) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pk = schema.pkField.name\n\t\tconst rows = [...store.values()].filter((doc) => matchesFilter(doc, filter)).map((doc) => clone(doc))\n\t\tfor (const row of rows) store.delete(String(row[pk]))\n\t\treturn rows\n\t}\n\n\tasync upsertOne(schema: AnySchema, config: unknown, filter: FilterGroup, create: Record<string, unknown>, ops: AnyUpdateOp[]) {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tconst pk = schema.pkField.name\n\t\tconst rows = [...store.values()].filter((doc) => matchesFilter(doc, filter))\n\t\tconst current = rows[0]\n\t\tif (current) {\n\t\t\tconst next = ops.length > 0 ? applyOps(current, ops) : clone(current)\n\t\t\tstore.set(String(next[pk]), next)\n\t\t\treturn clone(next)\n\t\t}\n\t\tconst base = clone(create)\n\t\tconst result = ops.length > 0 ? applyOps(base, ops) : base\n\t\tstore.set(String(result[pk]), result)\n\t\treturn clone(result)\n\t}\n\n\tasync aggregate(schema: AnySchema, config: unknown, spec: AggregateSpec): Promise<Array<Record<string, unknown>>> {\n\t\tconst store = this.#resolveStore(schema, config)\n\t\tlet rows = [...store.values()]\n\t\tif (spec.where) {\n\t\t\tconst where = spec.where\n\t\t\trows = rows.filter((doc) => matchesFilter(doc, where))\n\t\t}\n\n\t\tconst groups = new Map<string, Record<string, unknown>[]>()\n\t\tif (spec.groupBy.length > 0) {\n\t\t\tfor (const row of rows) {\n\t\t\t\tconst key = JSON.stringify(spec.groupBy.map((f) => row[f]))\n\t\t\t\tif (!groups.has(key)) groups.set(key, [])\n\t\t\t\tgroups.get(key)!.push(row)\n\t\t\t}\n\t\t} else {\n\t\t\tgroups.set('__all__', rows)\n\t\t}\n\n\t\tconst results: Record<string, unknown>[] = []\n\t\tfor (const [, groupRows] of groups) {\n\t\t\tconst result: Record<string, unknown> = {}\n\t\t\tif (spec.groupBy.length > 0) {\n\t\t\t\tfor (const field of spec.groupBy) {\n\t\t\t\t\tresult[field] = groupRows[0][field]\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const agg of spec.aggregates) {\n\t\t\t\tswitch (agg.fn) {\n\t\t\t\t\tcase 'count':\n\t\t\t\t\t\tresult[agg.alias] = groupRows.length\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'countDistinct': {\n\t\t\t\t\t\tconst vals = new Set(groupRows.map((r) => JSON.stringify(r[agg.field!])))\n\t\t\t\t\t\tresult[agg.alias] = vals.size\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'sum':\n\t\t\t\t\t\tresult[agg.alias] = groupRows.reduce((acc, r) => acc + Number(r[agg.field!] ?? 0), 0)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase 'avg': {\n\t\t\t\t\t\tconst sum = groupRows.reduce((acc, r) => acc + Number(r[agg.field!] ?? 0), 0)\n\t\t\t\t\t\tresult[agg.alias] = groupRows.length > 0 ? sum / groupRows.length : 0\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'min': {\n\t\t\t\t\t\tlet minVal: unknown = null\n\t\t\t\t\t\tfor (const r of groupRows) {\n\t\t\t\t\t\t\tconst val = r[agg.field!]\n\t\t\t\t\t\t\tif (val != null && (minVal === null || compareValues(val, minVal) < 0)) minVal = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[agg.alias] = minVal\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase 'max': {\n\t\t\t\t\t\tlet maxVal: unknown = null\n\t\t\t\t\t\tfor (const r of groupRows) {\n\t\t\t\t\t\t\tconst val = r[agg.field!]\n\t\t\t\t\t\t\tif (val != null && (maxVal === null || compareValues(val, maxVal) > 0)) maxVal = val\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult[agg.alias] = maxVal\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresults.push(result)\n\t\t}\n\n\t\tif (spec.having) {\n\t\t\tconst having = spec.having\n\t\t\treturn results.filter((r) => matchesFilter(r, having))\n\t\t}\n\t\treturn results\n\t}\n\n\tasync loadMigrations(): Promise<{ id: string; appliedAt: number }[]> {\n\t\treturn [...this.migrations.values()].map((m) => ({ id: m.id, appliedAt: m.appliedAt }))\n\t}\n\n\tasync recordMigration(id: string, appliedAt: number): Promise<void> {\n\t\tthis.migrations.set(id, { id, appliedAt })\n\t}\n\n\tasync applyCreateTable(change: CreateTableChange<any>): Promise<void> {\n\t\tconst fields = new Map<string, AnyFieldSpec>()\n\t\tfor (const f of change.fields) {\n\t\t\tfields.set(f.name, { ...f })\n\t\t}\n\t\tthis.tables.set(change.name, { pk: { name: change.pk.name, type: change.pk.type }, fields })\n\t}\n\n\tasync applyDropTable(change: DropTableChange): Promise<void> {\n\t\tthis.tables.delete(change.name)\n\t}\n\n\tasync applyAddField(change: AddFieldChange<any>): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\ttable.fields.set(change.field.name, { ...change.field })\n\t\t}\n\t}\n\n\tasync applyDropField(change: DropFieldChange): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\ttable.fields.delete(change.name)\n\t\t}\n\t}\n\n\tasync applyModifyField(change: ModifyFieldChange<any>): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\ttable.fields.delete(change.name)\n\t\t\ttable.fields.set(change.to.name, { ...change.to })\n\t\t}\n\t}\n\n\tasync applyRenameTable(change: RenameTableChange): Promise<void> {\n\t\tconst table = this.tables.get(change.from)\n\t\tif (table) {\n\t\t\tthis.tables.delete(change.from)\n\t\t\tthis.tables.set(change.to, table)\n\t\t}\n\t}\n\n\tasync applyRenameField(change: RenameFieldChange): Promise<void> {\n\t\tconst table = this.tables.get(change.table)\n\t\tif (table) {\n\t\t\tconst field = table.fields.get(change.from)\n\t\t\tif (field) {\n\t\t\t\ttable.fields.delete(change.from)\n\t\t\t\ttable.fields.set(change.to, { ...field, name: change.to })\n\t\t\t}\n\t\t}\n\t}\n\n\tasync applyAddIndex(change: AddIndexChange): Promise<void> {\n\t\tconst indexName = change.name ?? `${change.table}_${change.on.join('_')}_idx`\n\t\tthis.indexes.set(indexName, { table: change.table, on: change.on, unique: change.unique ?? false })\n\t}\n\n\tasync applyDropIndex(change: DropIndexChange): Promise<void> {\n\t\tthis.indexes.delete(change.name)\n\t}\n\n\tasync applyAddForeignKey(change: AddForeignKeyChange): Promise<void> {\n\t\tconst fkName = change.name ?? `${change.table}_${change.on}_fk`\n\t\tthis.foreignKeys.set(fkName, {\n\t\t\ttable: change.table,\n\t\t\ton: change.on,\n\t\t\treferences: { table: change.references.table, column: change.references.column },\n\t\t\tonDelete: change.onDelete as ForeignKeyAction | undefined,\n\t\t\tonUpdate: change.onUpdate as ForeignKeyAction | undefined,\n\t\t})\n\t}\n\n\tasync applyDropForeignKey(change: DropForeignKeyChange): Promise<void> {\n\t\tthis.foreignKeys.delete(change.name)\n\t}\n\n\tasync introspect(): Promise<DiscoveredSchema[]> {\n\t\tconst schemas: DiscoveredSchema[] = []\n\t\tfor (const [name, meta] of this.tables.entries()) {\n\t\t\tconst fields = [...meta.fields.values()].map((f) => ({\n\t\t\t\tname: f.name,\n\t\t\t\ttype: f.type as FieldTypeName,\n\t\t\t\tnullable: f.nullable ?? false,\n\t\t\t\t...(f.default !== undefined ? { default: f.default } : {}),\n\t\t\t\t...(f.unique ? { unique: true } : {}),\n\t\t\t}))\n\t\t\tconst indexes = [...this.indexes.entries()]\n\t\t\t\t.filter(([, idx]) => idx.table === name)\n\t\t\t\t.map(([idxName, idx]) => ({ name: idxName, on: idx.on, unique: idx.unique }))\n\t\t\tconst foreignKeys = [...this.foreignKeys.entries()]\n\t\t\t\t.filter(([, fk]) => fk.table === name)\n\t\t\t\t.map(([fkName, fk]) => ({\n\t\t\t\t\tname: fkName,\n\t\t\t\t\ton: fk.on,\n\t\t\t\t\treferences: { table: fk.references.table, column: fk.references.column },\n\t\t\t\t\t...(fk.onDelete ? { onDelete: fk.onDelete } : {}),\n\t\t\t\t\t...(fk.onUpdate ? { onUpdate: fk.onUpdate } : {}),\n\t\t\t\t}))\n\t\t\tschemas.push({\n\t\t\t\tname,\n\t\t\t\tpk: { name: meta.pk.name, type: meta.pk.type as FieldTypeName },\n\t\t\t\tfields,\n\t\t\t\tindexes,\n\t\t\t\tforeignKeys,\n\t\t\t})\n\t\t}\n\t\treturn schemas\n\t}\n\n\tasync acquireMigrationLock<T>(fn: () => Promise<T>): Promise<T> {\n\t\tlet release!: () => void\n\t\tconst next = new Promise<void>((r) => { release = r })\n\t\tconst prev = this.#migrationLock\n\t\tthis.#migrationLock = next\n\t\tawait prev\n\t\ttry {\n\t\t\treturn await fn()\n\t\t} finally {\n\t\t\trelease()\n\t\t}\n\t}\n\n\tasync session<T>(fn: () => Promise<T>): Promise<T> {\n\t\tif (sessionActiveStore.getStore()) return fn()\n\t\tconst snap = this.#snapshot()\n\t\ttry {\n\t\t\treturn await sessionActiveStore.run(true, fn)\n\t\t} catch (error) {\n\t\t\tthis.#restore(snap)\n\t\t\tthrow error\n\t\t}\n\t}\n}\n\nif (import.meta.vitest) {\n\tconst { describe, test, expect } = import.meta.vitest\n\tconst { FilterGroup } = await import('../../filter')\n\tconst { OrderBy } = await import('../../query-options')\n\tconst { Schema } = await import('../../schema')\n\tconst { IncOp, PatchOp, PullOp, PushOp } = await import('../../updates')\n\n\tconst { v } = await import('valleyed')\n\n\tdescribe('in-memory adapter', () => {\n\t\ttest('InMemoryAdapter.create({}) produces a working adapter', () => {\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\texpect(adapter).toBeInstanceOf(InMemoryAdapter)\n\t\t\texpect(adapter.schemaConfigPipe).toBeDefined()\n\t\t\texpect(adapter.supportedFieldTypes).toEqual(['string', 'number', 'boolean', 'null', 'object', 'array', 'date'])\n\t\t})\n\n\t\ttest('supports nested filters, ordering, select, offset and limit', async () => {\n\t\t\tconst schema = Schema.from('users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.field('age', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice', age: 30 },\n\t\t\t\t{ id: 'u2', name: 'Bob', age: 20 },\n\t\t\t\t{ id: 'u3', name: 'Carol', age: 40 },\n\t\t\t])\n\t\t\tconst builtGroup = FilterGroup.create().and([\n\t\t\t\t(q) => q.gt('age', 19),\n\t\t\t\t(q) => q.or([(g) => g.eq('name', 'Alice'), (g) => g.eq('name', 'Carol')]),\n\t\t\t])\n\t\t\tconst options = { orderBy: [new OrderBy('age', 'desc')], offset: 1, limit: 1, select: ['id', 'name'] }\n\t\t\tconst rows = await use.findMany(builtGroup, options)\n\t\t\texpect(rows).toEqual([{ id: 'u1', name: 'Alice' }])\n\t\t})\n\n\t\ttest('count returns the number of matching rows without query options', async () => {\n\t\t\tconst schema = Schema.from('count_users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'count_users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice' },\n\t\t\t\t{ id: 'u2', name: 'Bob' },\n\t\t\t\t{ id: 'u3', name: 'Alice' },\n\t\t\t])\n\n\t\t\tawait expect(use.count(FilterGroup.create().eq('name', 'Alice'))).resolves.toBe(2)\n\t\t})\n\n\t\ttest('iterateMany with batchSize matches findMany filtering ordering offset limit and selection', async () => {\n\t\t\tconst schema = Schema.from('iter_users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.field('age', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'iter_users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice', age: 30 },\n\t\t\t\t{ id: 'u2', name: 'Bob', age: 20 },\n\t\t\t\t{ id: 'u3', name: 'Carol', age: 40 },\n\t\t\t\t{ id: 'u4', name: 'Dan', age: 50 },\n\t\t\t])\n\n\t\t\tconst filter = FilterGroup.create().gt('age', 19)\n\t\t\tconst options = {\n\t\t\t\torderBy: [new OrderBy('age', 'desc')],\n\t\t\t\toffset: 1,\n\t\t\t\tlimit: 2,\n\t\t\t\tselect: ['id', 'name'],\n\t\t\t}\n\t\t\tconst expected = await use.findMany(filter, options)\n\t\t\tconst rows: Record<string, unknown>[] = []\n\t\t\tfor await (const row of use.iterateMany(filter, { ...options, batchSize: 2 })) {\n\t\t\t\trows.push(row)\n\t\t\t}\n\n\t\t\texpect(rows).toEqual(expected)\n\t\t\texpect(rows).toEqual([\n\t\t\t\t{ id: 'u3', name: 'Carol' },\n\t\t\t\t{ id: 'u1', name: 'Alice' },\n\t\t\t])\n\t\t})\n\n\t\ttest('supports update operators and rollback on failed session', async () => {\n\t\t\tconst schema = Schema.from('docs')\n\t\t\t\t.pk('id', v.string(), () => 'd1')\n\t\t\t\t.field('count', v.number())\n\t\t\t\t.field('tags', v.array(v.string()))\n\t\t\t\t.field('meta', v.object({ a: v.number() }))\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'docs' })\n\t\t\tawait use.createOne({ id: 'd1', count: 1, tags: ['x'], meta: { a: 1 } })\n\n\t\t\tawait adapter.session(async () => {\n\t\t\t\tawait use.updateOne(FilterGroup.create().eq('id', 'd1'), {\n\t\t\t\t\tcount: new IncOp('count', 2),\n\t\t\t\t\ttags: new PushOp('tags', 'y'),\n\t\t\t\t\tmeta: new PatchOp('meta', { a: 9 }),\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tawait expect(\n\t\t\t\tadapter.session(async () => {\n\t\t\t\t\tawait use.updateOne(FilterGroup.create().eq('id', 'd1'), { tags: new PullOp('tags', 'x') })\n\t\t\t\t\tthrow new Error('boom')\n\t\t\t\t}),\n\t\t\t).rejects.toThrow('boom')\n\n\t\t\tconst row = await use.findOne(FilterGroup.create().eq('id', 'd1'))\n\t\t\texpect(row).toEqual({ id: 'd1', count: 3, tags: ['x', 'y'], meta: { a: 9 } })\n\t\t})\n\n\t\ttest('notIn filter excludes matching values', async () => {\n\t\t\tconst schema = Schema.from('users')\n\t\t\t\t.pk('id', v.string(), () => 'u')\n\t\t\t\t.field('name', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'users' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'u1', name: 'Alice' },\n\t\t\t\t{ id: 'u2', name: 'Bob' },\n\t\t\t\t{ id: 'u3', name: 'Carol' },\n\t\t\t])\n\t\t\tconst rows = await use.findMany(FilterGroup.create().notIn('name', ['Alice', 'Carol']))\n\t\t\texpect(rows).toHaveLength(1)\n\t\t\texpect(rows[0].name).toBe('Bob')\n\t\t})\n\n\t\ttest('exists / notExists filter ops work correctly', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'i')\n\t\t\t\t.field('val', v.optional(v.string()), { onCreate: () => undefined })\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', val: 'present' },\n\t\t\t\t{ id: 'i2', val: null },\n\t\t\t\t{ id: 'i3', val: undefined },\n\t\t\t])\n\t\t\tconst existsRows = await use.findMany(FilterGroup.create().exists('val'))\n\t\t\texpect(existsRows).toHaveLength(1)\n\t\t\texpect(existsRows[0].id).toBe('i1')\n\n\t\t\tconst notExistsRows = await use.findMany(FilterGroup.create().notExists('val'))\n\t\t\texpect(notExistsRows).toHaveLength(2)\n\t\t})\n\n\t\ttest('findByPk returns seeded document and null for missing', async () => {\n\t\t\tconst schema = Schema.from('test')\n\t\t\t\t.pk('id', v.string(), () => 'gen')\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\n\t\t\tconst use = adapter.use(schema, { table: 'test' })\n\t\t\tawait use.createOne({ id: 'x' })\n\n\t\t\tconst found = await adapter.findByPk(schema, { table: 'test' }, 'x')\n\t\t\texpect(found).toEqual({ id: 'x' })\n\n\t\t\tconst missing = await adapter.findByPk(schema, { table: 'test' }, 'missing')\n\t\t\texpect(missing).toBeNull()\n\t\t})\n\n\t\ttest('auto-wired Instance hooks register correctly keyed by class', async () => {\n\t\t\tconst { Instance: Inst } = await import('../../../instance')\n\t\t\tconst onSpy = (await import('vitest')).vi.spyOn(Inst, 'on').mockImplementation(() => {})\n\n\t\t\tInMemoryAdapter.create({})\n\n\t\t\texpect(onSpy).not.toHaveBeenCalled()\n\n\t\t\tonSpy.mockRestore()\n\t\t})\n\n\t\ttest('declares aggregateOps with all six canonical ops', () => {\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\texpect(adapter.aggregateOps).toEqual(['count', 'countDistinct', 'sum', 'avg', 'min', 'max'])\n\t\t})\n\n\t\ttest('aggregate count returns correct total', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => `i-${Math.random().toString(36).slice(2, 8)}`)\n\t\t\t\t.field('category', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', category: 'A' },\n\t\t\t\t{ id: 'i2', category: 'B' },\n\t\t\t\t{ id: 'i3', category: 'A' },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'count', alias: 'total' }],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 3 }])\n\t\t})\n\n\t\ttest('aggregate count with where filter', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => `i-${Math.random().toString(36).slice(2, 8)}`)\n\t\t\t\t.field('category', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', category: 'A' },\n\t\t\t\t{ id: 'i2', category: 'B' },\n\t\t\t\t{ id: 'i3', category: 'A' },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'count', alias: 'total' }],\n\t\t\t\tgroupBy: [],\n\t\t\t\twhere: FilterGroup.create().eq('category', 'A'),\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 2 }])\n\t\t})\n\n\t\ttest('aggregate count on empty store returns zero', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'count', alias: 'total' }],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 0 }])\n\t\t})\n\n\t\ttest('aggregate sum/avg/min/max compute correctly', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('price', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', price: 10 },\n\t\t\t\t{ id: 'i2', price: 20 },\n\t\t\t\t{ id: 'i3', price: 30 },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [\n\t\t\t\t\t{ fn: 'sum', field: 'price', alias: 'total' },\n\t\t\t\t\t{ fn: 'avg', field: 'price', alias: 'avg' },\n\t\t\t\t\t{ fn: 'min', field: 'price', alias: 'low' },\n\t\t\t\t\t{ fn: 'max', field: 'price', alias: 'high' },\n\t\t\t\t],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ total: 60, avg: 20, low: 10, high: 30 }])\n\t\t})\n\n\t\ttest('aggregate countDistinct counts unique values', async () => {\n\t\t\tconst schema = Schema.from('items')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('category', v.string())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'items' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'i1', category: 'A' },\n\t\t\t\t{ id: 'i2', category: 'B' },\n\t\t\t\t{ id: 'i3', category: 'A' },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'items' }, {\n\t\t\t\taggregates: [{ fn: 'countDistinct', field: 'category', alias: 'unique' }],\n\t\t\t\tgroupBy: [],\n\t\t\t})\n\t\t\texpect(result).toEqual([{ unique: 2 }])\n\t\t})\n\n\t\ttest('aggregate groupBy produces per-group results', async () => {\n\t\t\tconst schema = Schema.from('orders')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('region', v.string())\n\t\t\t\t.field('amount', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'orders' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'o1', region: 'US', amount: 10 },\n\t\t\t\t{ id: 'o2', region: 'EU', amount: 20 },\n\t\t\t\t{ id: 'o3', region: 'US', amount: 30 },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'orders' }, {\n\t\t\t\taggregates: [\n\t\t\t\t\t{ fn: 'count', alias: 'cnt' },\n\t\t\t\t\t{ fn: 'sum', field: 'amount', alias: 'total' },\n\t\t\t\t],\n\t\t\t\tgroupBy: ['region'],\n\t\t\t})\n\t\t\texpect(result).toHaveLength(2)\n\t\t\tconst us = result.find((r) => r.region === 'US')\n\t\t\tconst eu = result.find((r) => r.region === 'EU')\n\t\t\texpect(us).toEqual({ region: 'US', cnt: 2, total: 40 })\n\t\t\texpect(eu).toEqual({ region: 'EU', cnt: 1, total: 20 })\n\t\t})\n\n\t\ttest('aggregate having filters post-aggregation', async () => {\n\t\t\tconst schema = Schema.from('orders')\n\t\t\t\t.pk('id', v.string(), () => 'x')\n\t\t\t\t.field('region', v.string())\n\t\t\t\t.field('amount', v.number())\n\t\t\t\t.build()\n\t\t\tconst adapter = InMemoryAdapter.create({})\n\t\t\tconst use = adapter.use(schema, { table: 'orders' })\n\t\t\tawait use.createMany([\n\t\t\t\t{ id: 'o1', region: 'US', amount: 10 },\n\t\t\t\t{ id: 'o2', region: 'EU', amount: 20 },\n\t\t\t\t{ id: 'o3', region: 'US', amount: 30 },\n\t\t\t])\n\t\t\tconst result = await adapter.aggregate(schema, { table: 'orders' }, {\n\t\t\t\taggregates: [{ fn: 'sum', field: 'amount', alias: 'total' }],\n\t\t\t\tgroupBy: ['region'],\n\t\t\t\thaving: FilterGroup.create().gt('total', 25),\n\t\t\t})\n\t\t\texpect(result).toHaveLength(1)\n\t\t\texpect(result[0]).toEqual({ region: 'US', total: 40 })\n\t\t})\n\t})\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,SAAS,yBAAyB;AAElC,SAAS,GAAG,cAAc;AAY1B,IAAM,yBAAyB,MAAM,EAAE,OAAO,CAAC,CAAC;AAoBhD,SAAS,MAAS,OAAa;AAC9B,SAAO,gBAAgB,KAAK;AAC7B;AAEA,IAAM,aAAa,CAAO,QAAmB,WAAsB;AAClE,SAAO,MAAM;AACb,aAAW,CAAC,GAAG,GAAG,KAAK,OAAO,QAAQ,EAAG,QAAO,IAAI,GAAG,GAAG;AAC3D;AAEA,SAAS,cAAc,OAAkD;AACxE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC3E;AAEA,SAAS,eAAe,QAAiB,QAA0B;AAClE,MAAI,MAAM,QAAQ,MAAM,GAAG;AAC1B,UAAM,SAAS,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AACvD,WAAO,OAAO,MAAM,CAAC,SAAS,OAAO,KAAK,CAAC,aAAa,OAAO,MAAM,UAAU,IAAI,CAAC,CAAC;AAAA,EACtF;AAEA,MAAI,cAAc,MAAM,KAAK,cAAc,MAAM,GAAG;AACnD,WAAO,OAAO,QAAQ,MAAM,EAAE,MAAM,CAAC,CAAC,GAAGA,EAAC,MAAM,eAAe,OAAO,CAAC,GAAGA,EAAC,CAAC;AAAA,EAC7E;AAEA,SAAO,OAAO,MAAM,QAAQ,MAAM;AACnC;AAEA,SAAS,cAAc,GAAY,GAAoB;AACtD,MAAI,MAAM,EAAG,QAAO;AACpB,MAAI,KAAK,KAAM,QAAO;AACtB,MAAI,KAAK,KAAM,QAAO;AACtB,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,SAAU,QAAO,IAAI,IAAI,KAAK;AACxE,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,SAAU,QAAO,IAAI,IAAI,KAAK;AACxE,MAAI,OAAO,MAAM,aAAa,OAAO,MAAM,UAAW,QAAO,MAAM,QAAQ,KAAK;AAChF,QAAM,KAAK,KAAK,UAAU,CAAC;AAC3B,QAAM,KAAK,KAAK,UAAU,CAAC;AAC3B,MAAI,OAAO,GAAI,QAAO;AACtB,SAAO,KAAK,KAAK,KAAK;AACvB;AAEA,SAAS,kBAAkB,GAAc,QAAoC;AAC5E,SAAO,GAAG,OAAO,UAAU,EAAE,GAAG,OAAO,KAAK;AAC7C;AAEA,SAAS,eAAe,KAA8B,QAAyB;AAC9E,QAAM,aAAa,IAAI,OAAO,KAAK;AACnC,QAAM,QAAQ,OAAO;AAErB,UAAQ,OAAO,IAAI;AAAA,IAClB,KAAK;AACJ,aAAO,OAAO,MAAM,YAAY,KAAK;AAAA,IACtC,KAAK;AACJ,aAAO,CAAC,OAAO,MAAM,YAAY,KAAK;AAAA,IACvC,KAAK;AACJ,aAAO,cAAc,YAAY,KAAK,IAAI;AAAA,IAC3C,KAAK;AACJ,aAAO,cAAc,YAAY,KAAK,KAAK;AAAA,IAC5C,KAAK;AACJ,aAAO,cAAc,YAAY,KAAK,IAAI;AAAA,IAC3C,KAAK;AACJ,aAAO,cAAc,YAAY,KAAK,KAAK;AAAA,IAC5C,KAAK,MAAM;AACV,UAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAClC,aAAO,MAAM,KAAK,CAACA,OAAM,OAAO,MAAM,YAAYA,EAAC,CAAC;AAAA,IACrD;AAAA,IACA,KAAK,SAAS;AACb,UAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAClC,aAAO,CAAC,MAAM,KAAK,CAACA,OAAM,OAAO,MAAM,YAAYA,EAAC,CAAC;AAAA,IACtD;AAAA,IACA,KAAK;AACJ,aAAO,OAAO,cAAc,EAAE,EAC5B,YAAY,EACZ,SAAS,OAAO,SAAS,EAAE,EAAE,YAAY,CAAC;AAAA,IAC7C,KAAK;AACJ,aAAO,cAAc;AAAA,IACtB,KAAK;AACJ,aAAO,cAAc;AAAA,IACtB,KAAK;AACJ,aAAO,eAAe,YAAY,KAAK;AAAA,IACxC,KAAK;AACJ,aAAO,CAAC,eAAe,YAAY,KAAK;AAAA,IACzC;AACC,aAAO;AAAA,EACT;AACD;AAEA,SAAS,cAAc,KAA8B,OAA6B;AACjF,MAAI,iBAAiB,OAAQ,QAAO,eAAe,KAAK,KAAK;AAC7D,MAAI,iBAAiB,aAAa;AACjC,QAAI,MAAM,OAAO,MAAO,QAAO,MAAM,SAAS,MAAM,CAAC,MAAM,cAAc,KAAK,CAAC,CAAC;AAChF,QAAI,MAAM,OAAO,KAAM,QAAO,MAAM,SAAS,KAAK,CAAC,MAAM,cAAc,KAAK,CAAC,CAAC;AAAA,EAC/E;AACA,SAAO;AACR;AAEA,SAAS,cAAc,KAA8B,OAA6B;AACjF,aAAW,UAAU,MAAM,UAAU;AACpC,QAAI,CAAC,cAAc,KAAK,MAAM,EAAG,QAAO;AAAA,EACzC;AACA,SAAO;AACR;AAEA,SAAS,aAAa,MAAiC,SAAmD;AACzG,MAAI,UAAU;AAEd,MAAI,SAAS,SAAS,QAAQ;AAC7B,cAAU,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM;AACrC,iBAAW,OAAO,QAAQ,WAAW,CAAC,GAAG;AACxC,cAAM,MAAM,cAAc,EAAE,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,CAAC;AACpD,YAAI,QAAQ,EAAG,QAAO,IAAI,cAAc,QAAQ,MAAM,CAAC;AAAA,MACxD;AACA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAEA,MAAI,SAAS,UAAU,MAAM;AAC5B,cAAU,QAAQ,MAAM,KAAK,IAAI,GAAG,QAAQ,MAAM,CAAC;AAAA,EACpD;AAEA,MAAI,SAAS,SAAS,MAAM;AAC3B,cAAU,QAAQ,MAAM,GAAG,QAAQ,KAAK;AAAA,EACzC;AAEA,MAAI,SAAS,QAAQ,QAAQ;AAC5B,UAAM,SAAS,IAAI,IAAY,QAAQ,MAAM;AAC7C,cAAU,QAAQ,IAAI,CAAC,QAAQ;AAC9B,YAAM,MAA+B,CAAC;AACtC,iBAAW,OAAO,OAAQ,KAAI,GAAG,IAAI,IAAI,GAAG;AAC5C,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAEA,SAAO;AACR;AAEA,SAAS,cAAc,SAAkC,KAAa,OAAgB;AACrF,MAAI,iBAAiB,OAAO;AAC3B,UAAM,OAAO,OAAO,QAAQ,GAAG,KAAK,CAAC;AACrC,YAAQ,GAAG,IAAI,OAAO,MAAM;AAC5B;AAAA,EACD;AACA,MAAI,iBAAiB,OAAO;AAC3B,UAAM,OAAO,OAAO,QAAQ,GAAG,KAAK,CAAC;AACrC,YAAQ,GAAG,IAAI,OAAO,MAAM;AAC5B;AAAA,EACD;AACA,MAAI,iBAAiB,OAAO;AAC3B,UAAM,OAAO,QAAQ,GAAG;AACxB,YAAQ,GAAG,IAAI,QAAQ,QAAQ,cAAc,MAAM,OAAO,IAAI,IAAI,IAAI,MAAM,QAAQ;AACpF;AAAA,EACD;AACA,MAAI,iBAAiB,OAAO;AAC3B,UAAM,OAAO,QAAQ,GAAG;AACxB,YAAQ,GAAG,IAAI,QAAQ,QAAQ,cAAc,MAAM,OAAO,IAAI,IAAI,IAAI,MAAM,QAAQ;AACpF;AAAA,EACD;AACA,MAAI,iBAAiB,SAAS;AAC7B,YAAQ,GAAG,IAAI;AACf;AAAA,EACD;AACA,MAAI,iBAAiB,QAAQ;AAC5B,UAAM,MAAM,MAAM,QAAQ,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAI,QAAQ,GAAG,CAAe,IAAI,CAAC;AAC9E,QAAI,KAAK,MAAM,MAAM,KAAK,CAAC;AAC3B,YAAQ,GAAG,IAAI;AACf;AAAA,EACD;AACA,MAAI,iBAAiB,QAAQ;AAC5B,UAAM,MAAM,MAAM,QAAQ,QAAQ,GAAG,CAAC,IAAK,QAAQ,GAAG,IAAkB,CAAC;AACzE,YAAQ,GAAG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,MAAM,OAAO,MAAM,KAAK,CAAC;AACtE;AAAA,EACD;AACA,MAAI,iBAAiB,SAAS;AAC7B,UAAM,SAAS,cAAc,QAAQ,GAAG,CAAC,IAAI,MAAM,QAAQ,GAAG,CAA4B,IAAI,CAAC;AAC/F,QAAI,cAAc,MAAM,KAAK,GAAG;AAC/B,iBAAW,CAAC,GAAGA,EAAC,KAAK,OAAO,QAAQ,MAAM,KAAgC,GAAG;AAC5E,eAAO,CAAC,IAAI,MAAMA,EAAC;AAAA,MACpB;AAAA,IACD;AACA,YAAQ,GAAG,IAAI;AACf;AAAA,EACD;AACA,UAAQ,GAAG,IAAI,MAAM,KAAK;AAC3B;AAEA,SAAS,gBAAgB,KAA8B,MAAwD;AAC9G,QAAM,UAAU,MAAM,GAAG;AACzB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAChD,kBAAc,SAAS,KAAK,KAAK;AAAA,EAClC;AACA,SAAO;AACR;AAEA,SAAS,SAAS,KAA8B,KAA6C;AAC5F,QAAM,UAAU,MAAM,GAAG;AACzB,aAAW,MAAM,KAAK;AACrB,QAAI,cAAc,OAAO;AACxB,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,MAAM,GAAG;AACrD,gBAAQ,GAAG,IAAI,MAAM,KAAK;AAAA,MAC3B;AAAA,IACD,OAAO;AACN,oBAAc,SAAS,GAAG,OAAO,EAAE;AAAA,IACpC;AAAA,EACD;AACA,SAAO;AACR;AAEA,IAAM,qBAAqB,IAAI,kBAA2B;AAEnD,IAAM,kBAAN,cAA8B,aAAa,wBAAwB,UAAU,EAAE;AAAA,EAC5E,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAAA,EAEjD,sBAAsB,CAAC,UAAU,UAAU,WAAW,QAAQ,UAAU,SAAS,MAAM;AAAA,EACvF,eAAe,CAAC,MAAM,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,SAAS,QAAQ,UAAU,aAAa,YAAY,aAAa;AAAA,EAC7H,YAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,SAAS,QAAQ,QAAQ,OAAO;AAAA,EAChF,eAAe,CAAC,SAAS,iBAAiB,OAAO,OAAO,OAAO,KAAK;AAAA,EAEpE,SAAS,oBAAI,IAAkD;AAAA,EAC/D,aAAa,oBAAI,IAA6B;AAAA,EAC9C,UAAU,oBAAI,IAAuB;AAAA,EACrC,SAAS,oBAAI,IAAuB;AAAA,EACpC,cAAc,oBAAI,IAA4B;AAAA,EAEvD,iBAAgC,QAAQ,QAAQ;AAAA,EAEtC,YAAY,QAAuC;AAC5D,UAAM,MAAM;AAAA,EACb;AAAA,EAEA,UAAU,MAAc;AACvB,QAAI,CAAC,KAAK,OAAO,IAAI,IAAI,EAAG,MAAK,OAAO,IAAI,MAAM,oBAAI,IAAI,CAAC;AAC3D,WAAO,KAAK,OAAO,IAAI,IAAI;AAAA,EAC5B;AAAA,EAEA,cAAc,QAAmB,QAAiB;AACjD,WAAO,KAAK,UAAU,kBAAkB,QAAQ,MAA4B,CAAC;AAAA,EAC9E;AAAA,EAEA,YAAsB;AACrB,UAAM,SAAS,oBAAI,IAAkD;AACrE,eAAW,CAAC,MAAM,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG;AAClD,YAAM,YAAY,oBAAI,IAAqC;AAC3D,iBAAW,CAAC,IAAI,GAAG,KAAK,MAAM,QAAQ,GAAG;AACxC,kBAAU,IAAI,IAAI,MAAM,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,IAAI,MAAM,SAAS;AAAA,IAC3B;AACA,UAAM,aAAa,IAAI,IAAI,KAAK,UAAU;AAC1C,UAAM,UAAU,IAAI,IAAI,KAAK,OAAO;AACpC,UAAM,SAAS,oBAAI,IAAuB;AAC1C,eAAW,CAAC,MAAM,IAAI,KAAK,KAAK,OAAO,QAAQ,GAAG;AACjD,aAAO,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;AAAA,IACtE;AACA,UAAM,cAAc,IAAI,IAAI,KAAK,WAAW;AAC5C,WAAO,EAAE,QAAQ,YAAY,SAAS,QAAQ,YAAY;AAAA,EAC3D;AAAA,EAEA,SAAS,MAAgB;AACxB,eAAW,KAAK,QAAQ,KAAK,MAAM;AACnC,eAAW,KAAK,YAAY,KAAK,UAAU;AAC3C,eAAW,KAAK,SAAS,KAAK,OAAO;AACrC,eAAW,KAAK,QAAQ,KAAK,MAAM;AACnC,eAAW,KAAK,aAAa,KAAK,WAAW;AAAA,EAC9C;AAAA,EAEA,MAAM,SAAS,QAAmB,QAAiB,IAAa;AAC/D,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;AAChC,WAAO,MAAM,MAAM,GAAG,IAAI;AAAA,EAC3B;AAAA,EAEA,MAAM,WAAW,QAAmB,QAAiB,MAAiC;AACrF,UAAM,KAAK,OAAO,QAAQ;AAC1B,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,WAAO,KAAK,IAAI,CAAC,MAAM;AACtB,YAAM,MAAM,MAAM,CAAC;AACnB,YAAM,IAAI,OAAO,IAAI,EAAE,CAAC,GAAG,GAAG;AAC9B,aAAO,MAAM,GAAG;AAAA,IACjB,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,QAAmB,QAAiB,IAAa;AACjE,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,QAAQ,OAAO,EAAE;AACvB,UAAM,MAAM,MAAM,IAAI,KAAK;AAC3B,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,OAAO,KAAK;AAClB,WAAO,MAAM,GAAG;AAAA,EACjB;AAAA,EAEA,MAAM,WAAW,QAAmB,QAAiB,IAAa,KAAoB;AACrF,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,QAAQ,OAAO,EAAE;AACvB,UAAM,MAAM,MAAM,IAAI,KAAK;AAC3B,QAAI,CAAC,IAAK,QAAO;AACjB,UAAM,UAAU,SAAS,KAAK,GAAG;AACjC,UAAM,IAAI,OAAO,OAAO;AACxB,WAAO,MAAM,OAAO;AAAA,EACrB;AAAA,EAEA,MAAM,SAAS,QAAmB,QAAiB,OAAoB,SAAwB;AAC9F,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,cAAc,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,MAAM,GAAG,CAAC;AACnG,WAAO,aAAa,MAAM,OAAO;AAAA,EAClC;AAAA,EAEA,MAAM,MAAM,QAAmB,QAAiB,OAAoB;AACnE,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,WAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,cAAc,KAAK,KAAK,CAAC,EAAE;AAAA,EACvE;AAAA,EAEA,OAAO,YAAY,QAAmB,QAAiB,OAAoB,SAAiC;AAC3G,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,OAAO,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,cAAc,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,MAAM,GAAG,CAAC,GAAG,OAAO;AAC1H,UAAM,YAAY,OAAO,SAAS,cAAc,YAAY,OAAO,cAAc,QAAQ,SAAS,KAAK,QAAQ,YAAY,IAAI,QAAQ,YAAY;AACnJ,aAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,WAAW;AAC5D,iBAAW,OAAO,KAAK,MAAM,OAAO,QAAQ,SAAS,GAAG;AACvD,cAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,QAAmB,QAAiB,OAAoB,MAA+B;AACvG,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,MAAM,cAAc,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE;AAEhG,UAAM,UAAqC,CAAC;AAC5C,eAAW,MAAM,KAAK;AACrB,YAAM,UAAU,MAAM,IAAI,EAAE;AAC5B,UAAI,CAAC,QAAS;AACd,YAAM,OAAO,gBAAgB,SAAS,IAAI;AAC1C,YAAM,IAAI,IAAI,IAAI;AAClB,cAAQ,KAAK,MAAM,IAAI,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,WAAW,QAAmB,QAAiB,QAAqB;AACzE,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,KAAK,OAAO,QAAQ;AAC1B,UAAM,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,cAAc,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,MAAM,GAAG,CAAC;AACpG,eAAW,OAAO,KAAM,OAAM,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC;AACpD,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,UAAU,QAAmB,QAAiB,QAAqB,QAAiC,KAAoB;AAC7H,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,UAAM,KAAK,OAAO,QAAQ;AAC1B,UAAM,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,cAAc,KAAK,MAAM,CAAC;AAC3E,UAAM,UAAU,KAAK,CAAC;AACtB,QAAI,SAAS;AACZ,YAAM,OAAO,IAAI,SAAS,IAAI,SAAS,SAAS,GAAG,IAAI,MAAM,OAAO;AACpE,YAAM,IAAI,OAAO,KAAK,EAAE,CAAC,GAAG,IAAI;AAChC,aAAO,MAAM,IAAI;AAAA,IAClB;AACA,UAAM,OAAO,MAAM,MAAM;AACzB,UAAM,SAAS,IAAI,SAAS,IAAI,SAAS,MAAM,GAAG,IAAI;AACtD,UAAM,IAAI,OAAO,OAAO,EAAE,CAAC,GAAG,MAAM;AACpC,WAAO,MAAM,MAAM;AAAA,EACpB;AAAA,EAEA,MAAM,UAAU,QAAmB,QAAiB,MAA8D;AACjH,UAAM,QAAQ,KAAK,cAAc,QAAQ,MAAM;AAC/C,QAAI,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC;AAC7B,QAAI,KAAK,OAAO;AACf,YAAM,QAAQ,KAAK;AACnB,aAAO,KAAK,OAAO,CAAC,QAAQ,cAAc,KAAK,KAAK,CAAC;AAAA,IACtD;AAEA,UAAM,SAAS,oBAAI,IAAuC;AAC1D,QAAI,KAAK,QAAQ,SAAS,GAAG;AAC5B,iBAAW,OAAO,MAAM;AACvB,cAAM,MAAM,KAAK,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAC1D,YAAI,CAAC,OAAO,IAAI,GAAG,EAAG,QAAO,IAAI,KAAK,CAAC,CAAC;AACxC,eAAO,IAAI,GAAG,EAAG,KAAK,GAAG;AAAA,MAC1B;AAAA,IACD,OAAO;AACN,aAAO,IAAI,WAAW,IAAI;AAAA,IAC3B;AAEA,UAAM,UAAqC,CAAC;AAC5C,eAAW,CAAC,EAAE,SAAS,KAAK,QAAQ;AACnC,YAAM,SAAkC,CAAC;AACzC,UAAI,KAAK,QAAQ,SAAS,GAAG;AAC5B,mBAAW,SAAS,KAAK,SAAS;AACjC,iBAAO,KAAK,IAAI,UAAU,CAAC,EAAE,KAAK;AAAA,QACnC;AAAA,MACD;AACA,iBAAW,OAAO,KAAK,YAAY;AAClC,gBAAQ,IAAI,IAAI;AAAA,UACf,KAAK;AACJ,mBAAO,IAAI,KAAK,IAAI,UAAU;AAC9B;AAAA,UACD,KAAK,iBAAiB;AACrB,kBAAM,OAAO,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,IAAI,KAAM,CAAC,CAAC,CAAC;AACxE,mBAAO,IAAI,KAAK,IAAI,KAAK;AACzB;AAAA,UACD;AAAA,UACA,KAAK;AACJ,mBAAO,IAAI,KAAK,IAAI,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,OAAO,EAAE,IAAI,KAAM,KAAK,CAAC,GAAG,CAAC;AACpF;AAAA,UACD,KAAK,OAAO;AACX,kBAAM,MAAM,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,OAAO,EAAE,IAAI,KAAM,KAAK,CAAC,GAAG,CAAC;AAC5E,mBAAO,IAAI,KAAK,IAAI,UAAU,SAAS,IAAI,MAAM,UAAU,SAAS;AACpE;AAAA,UACD;AAAA,UACA,KAAK,OAAO;AACX,gBAAI,SAAkB;AACtB,uBAAW,KAAK,WAAW;AAC1B,oBAAM,MAAM,EAAE,IAAI,KAAM;AACxB,kBAAI,OAAO,SAAS,WAAW,QAAQ,cAAc,KAAK,MAAM,IAAI,GAAI,UAAS;AAAA,YAClF;AACA,mBAAO,IAAI,KAAK,IAAI;AACpB;AAAA,UACD;AAAA,UACA,KAAK,OAAO;AACX,gBAAI,SAAkB;AACtB,uBAAW,KAAK,WAAW;AAC1B,oBAAM,MAAM,EAAE,IAAI,KAAM;AACxB,kBAAI,OAAO,SAAS,WAAW,QAAQ,cAAc,KAAK,MAAM,IAAI,GAAI,UAAS;AAAA,YAClF;AACA,mBAAO,IAAI,KAAK,IAAI;AACpB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACA,cAAQ,KAAK,MAAM;AAAA,IACpB;AAEA,QAAI,KAAK,QAAQ;AAChB,YAAM,SAAS,KAAK;AACpB,aAAO,QAAQ,OAAO,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAAA,IACtD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,iBAA+D;AACpE,WAAO,CAAC,GAAG,KAAK,WAAW,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,WAAW,EAAE,UAAU,EAAE;AAAA,EACvF;AAAA,EAEA,MAAM,gBAAgB,IAAY,WAAkC;AACnE,SAAK,WAAW,IAAI,IAAI,EAAE,IAAI,UAAU,CAAC;AAAA,EAC1C;AAAA,EAEA,MAAM,iBAAiB,QAA+C;AACrE,UAAM,SAAS,oBAAI,IAA0B;AAC7C,eAAW,KAAK,OAAO,QAAQ;AAC9B,aAAO,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAAA,IAC5B;AACA,SAAK,OAAO,IAAI,OAAO,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,GAAG,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AAAA,EAC5F;AAAA,EAEA,MAAM,eAAe,QAAwC;AAC5D,SAAK,OAAO,OAAO,OAAO,IAAI;AAAA,EAC/B;AAAA,EAEA,MAAM,cAAc,QAA4C;AAC/D,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK;AAC1C,QAAI,OAAO;AACV,YAAM,OAAO,IAAI,OAAO,MAAM,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC;AAAA,IACxD;AAAA,EACD;AAAA,EAEA,MAAM,eAAe,QAAwC;AAC5D,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK;AAC1C,QAAI,OAAO;AACV,YAAM,OAAO,OAAO,OAAO,IAAI;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,QAA+C;AACrE,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK;AAC1C,QAAI,OAAO;AACV,YAAM,OAAO,OAAO,OAAO,IAAI;AAC/B,YAAM,OAAO,IAAI,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC;AAAA,IAClD;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,QAA0C;AAChE,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO,IAAI;AACzC,QAAI,OAAO;AACV,WAAK,OAAO,OAAO,OAAO,IAAI;AAC9B,WAAK,OAAO,IAAI,OAAO,IAAI,KAAK;AAAA,IACjC;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,QAA0C;AAChE,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO,KAAK;AAC1C,QAAI,OAAO;AACV,YAAM,QAAQ,MAAM,OAAO,IAAI,OAAO,IAAI;AAC1C,UAAI,OAAO;AACV,cAAM,OAAO,OAAO,OAAO,IAAI;AAC/B,cAAM,OAAO,IAAI,OAAO,IAAI,EAAE,GAAG,OAAO,MAAM,OAAO,GAAG,CAAC;AAAA,MAC1D;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,cAAc,QAAuC;AAC1D,UAAM,YAAY,OAAO,QAAQ,GAAG,OAAO,KAAK,IAAI,OAAO,GAAG,KAAK,GAAG,CAAC;AACvE,SAAK,QAAQ,IAAI,WAAW,EAAE,OAAO,OAAO,OAAO,IAAI,OAAO,IAAI,QAAQ,OAAO,UAAU,MAAM,CAAC;AAAA,EACnG;AAAA,EAEA,MAAM,eAAe,QAAwC;AAC5D,SAAK,QAAQ,OAAO,OAAO,IAAI;AAAA,EAChC;AAAA,EAEA,MAAM,mBAAmB,QAA4C;AACpE,UAAM,SAAS,OAAO,QAAQ,GAAG,OAAO,KAAK,IAAI,OAAO,EAAE;AAC1D,SAAK,YAAY,IAAI,QAAQ;AAAA,MAC5B,OAAO,OAAO;AAAA,MACd,IAAI,OAAO;AAAA,MACX,YAAY,EAAE,OAAO,OAAO,WAAW,OAAO,QAAQ,OAAO,WAAW,OAAO;AAAA,MAC/E,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,IAClB,CAAC;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB,QAA6C;AACtE,SAAK,YAAY,OAAO,OAAO,IAAI;AAAA,EACpC;AAAA,EAEA,MAAM,aAA0C;AAC/C,UAAM,UAA8B,CAAC;AACrC,eAAW,CAAC,MAAM,IAAI,KAAK,KAAK,OAAO,QAAQ,GAAG;AACjD,YAAM,SAAS,CAAC,GAAG,KAAK,OAAO,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO;AAAA,QACpD,MAAM,EAAE;AAAA,QACR,MAAM,EAAE;AAAA,QACR,UAAU,EAAE,YAAY;AAAA,QACxB,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QACxD,GAAI,EAAE,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,MACpC,EAAE;AACF,YAAM,UAAU,CAAC,GAAG,KAAK,QAAQ,QAAQ,CAAC,EACxC,OAAO,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,UAAU,IAAI,EACtC,IAAI,CAAC,CAAC,SAAS,GAAG,OAAO,EAAE,MAAM,SAAS,IAAI,IAAI,IAAI,QAAQ,IAAI,OAAO,EAAE;AAC7E,YAAM,cAAc,CAAC,GAAG,KAAK,YAAY,QAAQ,CAAC,EAChD,OAAO,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,IAAI,EACpC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO;AAAA,QACvB,MAAM;AAAA,QACN,IAAI,GAAG;AAAA,QACP,YAAY,EAAE,OAAO,GAAG,WAAW,OAAO,QAAQ,GAAG,WAAW,OAAO;AAAA,QACvE,GAAI,GAAG,WAAW,EAAE,UAAU,GAAG,SAAS,IAAI,CAAC;AAAA,QAC/C,GAAI,GAAG,WAAW,EAAE,UAAU,GAAG,SAAS,IAAI,CAAC;AAAA,MAChD,EAAE;AACH,cAAQ,KAAK;AAAA,QACZ;AAAA,QACA,IAAI,EAAE,MAAM,KAAK,GAAG,MAAM,MAAM,KAAK,GAAG,KAAsB;AAAA,QAC9D;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,qBAAwB,IAAkC;AAC/D,QAAI;AACJ,UAAM,OAAO,IAAI,QAAc,CAAC,MAAM;AAAE,gBAAU;AAAA,IAAE,CAAC;AACrD,UAAM,OAAO,KAAK;AAClB,SAAK,iBAAiB;AACtB,UAAM;AACN,QAAI;AACH,aAAO,MAAM,GAAG;AAAA,IACjB,UAAE;AACD,cAAQ;AAAA,IACT;AAAA,EACD;AAAA,EAEA,MAAM,QAAW,IAAkC;AAClD,QAAI,mBAAmB,SAAS,EAAG,QAAO,GAAG;AAC7C,UAAM,OAAO,KAAK,UAAU;AAC5B,QAAI;AACH,aAAO,MAAM,mBAAmB,IAAI,MAAM,EAAE;AAAA,IAC7C,SAAS,OAAO;AACf,WAAK,SAAS,IAAI;AAClB,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEA,IAAI,QAAoB;AACvB,QAAM,EAAE,UAAU,MAAM,OAAO,IAAI;AACnC,QAAM,EAAE,aAAAC,aAAY,IAAI,MAAa;AACrC,QAAM,EAAE,QAAQ,IAAI,MAAa;AACjC,QAAM,EAAE,OAAO,IAAI,MAAa;AAChC,QAAM,EAAE,OAAAC,QAAO,SAAAC,UAAS,QAAAC,SAAQ,QAAAC,QAAO,IAAI,MAAa;AAExD,QAAM,EAAE,GAAAL,GAAE,IAAI,MAAa;AAE3B,WAAS,qBAAqB,MAAM;AACnC,SAAK,yDAAyD,MAAM;AACnE,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,aAAO,OAAO,EAAE,eAAe,eAAe;AAC9C,aAAO,QAAQ,gBAAgB,EAAE,YAAY;AAC7C,aAAO,QAAQ,mBAAmB,EAAE,QAAQ,CAAC,UAAU,UAAU,WAAW,QAAQ,UAAU,SAAS,MAAM,CAAC;AAAA,IAC/G,CAAC;AAED,SAAK,+DAA+D,YAAY;AAC/E,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,QAAQA,GAAE,OAAO,CAAC,EACxB,MAAM,OAAOA,GAAE,OAAO,CAAC,EACvB,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,MAAM,SAAS,KAAK,GAAG;AAAA,QACnC,EAAE,IAAI,MAAM,MAAM,OAAO,KAAK,GAAG;AAAA,QACjC,EAAE,IAAI,MAAM,MAAM,SAAS,KAAK,GAAG;AAAA,MACpC,CAAC;AACD,YAAM,aAAaC,aAAY,OAAO,EAAE,IAAI;AAAA,QAC3C,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE;AAAA,QACrB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,GAAG,CAAC,MAAM,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AAAA,MACzE,CAAC;AACD,YAAM,UAAU,EAAE,SAAS,CAAC,IAAI,QAAQ,OAAO,MAAM,CAAC,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,MAAM,EAAE;AACrG,YAAM,OAAO,MAAM,IAAI,SAAS,YAAY,OAAO;AACnD,aAAO,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,MAAM,MAAM,QAAQ,CAAC,CAAC;AAAA,IACnD,CAAC;AAED,SAAK,mEAAmE,YAAY;AACnF,YAAM,SAAS,OAAO,KAAK,aAAa,EACtC,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,QAAQA,GAAE,OAAO,CAAC,EACxB,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,cAAc,CAAC;AACxD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,MAAM,QAAQ;AAAA,QAC1B,EAAE,IAAI,MAAM,MAAM,MAAM;AAAA,QACxB,EAAE,IAAI,MAAM,MAAM,QAAQ;AAAA,MAC3B,CAAC;AAED,YAAM,OAAO,IAAI,MAAMC,aAAY,OAAO,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC;AAAA,IAClF,CAAC;AAED,SAAK,6FAA6F,YAAY;AAC7G,YAAM,SAAS,OAAO,KAAK,YAAY,EACrC,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,QAAQA,GAAE,OAAO,CAAC,EACxB,MAAM,OAAOA,GAAE,OAAO,CAAC,EACvB,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,aAAa,CAAC;AACvD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,MAAM,SAAS,KAAK,GAAG;AAAA,QACnC,EAAE,IAAI,MAAM,MAAM,OAAO,KAAK,GAAG;AAAA,QACjC,EAAE,IAAI,MAAM,MAAM,SAAS,KAAK,GAAG;AAAA,QACnC,EAAE,IAAI,MAAM,MAAM,OAAO,KAAK,GAAG;AAAA,MAClC,CAAC;AAED,YAAM,SAASC,aAAY,OAAO,EAAE,GAAG,OAAO,EAAE;AAChD,YAAM,UAAU;AAAA,QACf,SAAS,CAAC,IAAI,QAAQ,OAAO,MAAM,CAAC;AAAA,QACpC,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ,CAAC,MAAM,MAAM;AAAA,MACtB;AACA,YAAM,WAAW,MAAM,IAAI,SAAS,QAAQ,OAAO;AACnD,YAAM,OAAkC,CAAC;AACzC,uBAAiB,OAAO,IAAI,YAAY,QAAQ,EAAE,GAAG,SAAS,WAAW,EAAE,CAAC,GAAG;AAC9E,aAAK,KAAK,GAAG;AAAA,MACd;AAEA,aAAO,IAAI,EAAE,QAAQ,QAAQ;AAC7B,aAAO,IAAI,EAAE,QAAQ;AAAA,QACpB,EAAE,IAAI,MAAM,MAAM,QAAQ;AAAA,QAC1B,EAAE,IAAI,MAAM,MAAM,QAAQ;AAAA,MAC3B,CAAC;AAAA,IACF,CAAC;AAED,SAAK,4DAA4D,YAAY;AAC5E,YAAM,SAAS,OAAO,KAAK,MAAM,EAC/B,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,IAAI,EAC/B,MAAM,SAASA,GAAE,OAAO,CAAC,EACzB,MAAM,QAAQA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC,EACjC,MAAM,QAAQA,GAAE,OAAO,EAAE,GAAGA,GAAE,OAAO,EAAE,CAAC,CAAC,EACzC,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,OAAO,CAAC;AACjD,YAAM,IAAI,UAAU,EAAE,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;AAEvE,YAAM,QAAQ,QAAQ,YAAY;AACjC,cAAM,IAAI,UAAUC,aAAY,OAAO,EAAE,GAAG,MAAM,IAAI,GAAG;AAAA,UACxD,OAAO,IAAIC,OAAM,SAAS,CAAC;AAAA,UAC3B,MAAM,IAAIG,QAAO,QAAQ,GAAG;AAAA,UAC5B,MAAM,IAAIF,SAAQ,QAAQ,EAAE,GAAG,EAAE,CAAC;AAAA,QACnC,CAAC;AAAA,MACF,CAAC;AAED,YAAM;AAAA,QACL,QAAQ,QAAQ,YAAY;AAC3B,gBAAM,IAAI,UAAUF,aAAY,OAAO,EAAE,GAAG,MAAM,IAAI,GAAG,EAAE,MAAM,IAAIG,QAAO,QAAQ,GAAG,EAAE,CAAC;AAC1F,gBAAM,IAAI,MAAM,MAAM;AAAA,QACvB,CAAC;AAAA,MACF,EAAE,QAAQ,QAAQ,MAAM;AAExB,YAAM,MAAM,MAAM,IAAI,QAAQH,aAAY,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC;AACjE,aAAO,GAAG,EAAE,QAAQ,EAAE,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;AAAA,IAC7E,CAAC;AAED,SAAK,yCAAyC,YAAY;AACzD,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,QAAQA,GAAE,OAAO,CAAC,EACxB,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,MAAM,QAAQ;AAAA,QAC1B,EAAE,IAAI,MAAM,MAAM,MAAM;AAAA,QACxB,EAAE,IAAI,MAAM,MAAM,QAAQ;AAAA,MAC3B,CAAC;AACD,YAAM,OAAO,MAAM,IAAI,SAASC,aAAY,OAAO,EAAE,MAAM,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC;AACtF,aAAO,IAAI,EAAE,aAAa,CAAC;AAC3B,aAAO,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK;AAAA,IAChC,CAAC;AAED,SAAK,gDAAgD,YAAY;AAChE,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,OAAOA,GAAE,SAASA,GAAE,OAAO,CAAC,GAAG,EAAE,UAAU,MAAM,OAAU,CAAC,EAClE,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,KAAK,UAAU;AAAA,QAC3B,EAAE,IAAI,MAAM,KAAK,KAAK;AAAA,QACtB,EAAE,IAAI,MAAM,KAAK,OAAU;AAAA,MAC5B,CAAC;AACD,YAAM,aAAa,MAAM,IAAI,SAASC,aAAY,OAAO,EAAE,OAAO,KAAK,CAAC;AACxE,aAAO,UAAU,EAAE,aAAa,CAAC;AACjC,aAAO,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI;AAElC,YAAM,gBAAgB,MAAM,IAAI,SAASA,aAAY,OAAO,EAAE,UAAU,KAAK,CAAC;AAC9E,aAAO,aAAa,EAAE,aAAa,CAAC;AAAA,IACrC,CAAC;AAED,SAAK,yDAAyD,YAAY;AACzE,YAAM,SAAS,OAAO,KAAK,MAAM,EAC/B,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,KAAK,EAChC,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AAEzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,OAAO,CAAC;AACjD,YAAM,IAAI,UAAU,EAAE,IAAI,IAAI,CAAC;AAE/B,YAAM,QAAQ,MAAM,QAAQ,SAAS,QAAQ,EAAE,OAAO,OAAO,GAAG,GAAG;AACnE,aAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;AAEjC,YAAM,UAAU,MAAM,QAAQ,SAAS,QAAQ,EAAE,OAAO,OAAO,GAAG,SAAS;AAC3E,aAAO,OAAO,EAAE,SAAS;AAAA,IAC1B,CAAC;AAED,SAAK,+DAA+D,YAAY;AAC/E,YAAM,EAAE,UAAU,KAAK,IAAI,MAAa;AACxC,YAAM,SAAS,MAAa,MAAW,GAAG,MAAM,MAAM,IAAI,EAAE,mBAAmB,MAAM;AAAA,MAAC,CAAC;AAEvF,sBAAgB,OAAO,CAAC,CAAC;AAEzB,aAAO,KAAK,EAAE,IAAI,iBAAiB;AAEnC,YAAM,YAAY;AAAA,IACnB,CAAC;AAED,SAAK,oDAAoD,MAAM;AAC9D,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,aAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,SAAS,iBAAiB,OAAO,OAAO,OAAO,KAAK,CAAC;AAAA,IAC5F,CAAC;AAED,SAAK,yCAAyC,YAAY;AACzD,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EACxE,MAAM,YAAYA,GAAE,OAAO,CAAC,EAC5B,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,QAC1B,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,QAC1B,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,MAC3B,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,QAAQ,GAAG;AAAA,QAClE,YAAY,CAAC,EAAE,IAAI,SAAS,OAAO,QAAQ,CAAC;AAAA,QAC5C,SAAS,CAAC;AAAA,MACX,CAAC;AACD,aAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAAA,IACtC,CAAC;AAED,SAAK,qCAAqC,YAAY;AACrD,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EACxE,MAAM,YAAYA,GAAE,OAAO,CAAC,EAC5B,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,QAC1B,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,QAC1B,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,MAC3B,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,QAAQ,GAAG;AAAA,QAClE,YAAY,CAAC,EAAE,IAAI,SAAS,OAAO,QAAQ,CAAC;AAAA,QAC5C,SAAS,CAAC;AAAA,QACV,OAAOC,aAAY,OAAO,EAAE,GAAG,YAAY,GAAG;AAAA,MAC/C,CAAC;AACD,aAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAAA,IACtC,CAAC;AAED,SAAK,+CAA+C,YAAY;AAC/D,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMD,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,QAAQ,GAAG;AAAA,QAClE,YAAY,CAAC,EAAE,IAAI,SAAS,OAAO,QAAQ,CAAC;AAAA,QAC5C,SAAS,CAAC;AAAA,MACX,CAAC;AACD,aAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AAAA,IACtC,CAAC;AAED,SAAK,+CAA+C,YAAY;AAC/D,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,SAASA,GAAE,OAAO,CAAC,EACzB,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,OAAO,GAAG;AAAA,QACtB,EAAE,IAAI,MAAM,OAAO,GAAG;AAAA,QACtB,EAAE,IAAI,MAAM,OAAO,GAAG;AAAA,MACvB,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,QAAQ,GAAG;AAAA,QAClE,YAAY;AAAA,UACX,EAAE,IAAI,OAAO,OAAO,SAAS,OAAO,QAAQ;AAAA,UAC5C,EAAE,IAAI,OAAO,OAAO,SAAS,OAAO,MAAM;AAAA,UAC1C,EAAE,IAAI,OAAO,OAAO,SAAS,OAAO,MAAM;AAAA,UAC1C,EAAE,IAAI,OAAO,OAAO,SAAS,OAAO,OAAO;AAAA,QAC5C;AAAA,QACA,SAAS,CAAC;AAAA,MACX,CAAC;AACD,aAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;AAAA,IACnE,CAAC;AAED,SAAK,gDAAgD,YAAY;AAChE,YAAM,SAAS,OAAO,KAAK,OAAO,EAChC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,YAAYA,GAAE,OAAO,CAAC,EAC5B,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,QAAQ,CAAC;AAClD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,QAC1B,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,QAC1B,EAAE,IAAI,MAAM,UAAU,IAAI;AAAA,MAC3B,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,QAAQ,GAAG;AAAA,QAClE,YAAY,CAAC,EAAE,IAAI,iBAAiB,OAAO,YAAY,OAAO,SAAS,CAAC;AAAA,QACxE,SAAS,CAAC;AAAA,MACX,CAAC;AACD,aAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;AAAA,IACvC,CAAC;AAED,SAAK,gDAAgD,YAAY;AAChE,YAAM,SAAS,OAAO,KAAK,QAAQ,EACjC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,UAAUA,GAAE,OAAO,CAAC,EAC1B,MAAM,UAAUA,GAAE,OAAO,CAAC,EAC1B,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,SAAS,CAAC;AACnD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,QACrC,EAAE,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,QACrC,EAAE,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,MACtC,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,SAAS,GAAG;AAAA,QACnE,YAAY;AAAA,UACX,EAAE,IAAI,SAAS,OAAO,MAAM;AAAA,UAC5B,EAAE,IAAI,OAAO,OAAO,UAAU,OAAO,QAAQ;AAAA,QAC9C;AAAA,QACA,SAAS,CAAC,QAAQ;AAAA,MACnB,CAAC;AACD,aAAO,MAAM,EAAE,aAAa,CAAC;AAC7B,YAAM,KAAK,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,IAAI;AAC/C,YAAM,KAAK,OAAO,KAAK,CAAC,MAAM,EAAE,WAAW,IAAI;AAC/C,aAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC;AACtD,aAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC;AAAA,IACvD,CAAC;AAED,SAAK,6CAA6C,YAAY;AAC7D,YAAM,SAAS,OAAO,KAAK,QAAQ,EACjC,GAAG,MAAMA,GAAE,OAAO,GAAG,MAAM,GAAG,EAC9B,MAAM,UAAUA,GAAE,OAAO,CAAC,EAC1B,MAAM,UAAUA,GAAE,OAAO,CAAC,EAC1B,MAAM;AACR,YAAM,UAAU,gBAAgB,OAAO,CAAC,CAAC;AACzC,YAAM,MAAM,QAAQ,IAAI,QAAQ,EAAE,OAAO,SAAS,CAAC;AACnD,YAAM,IAAI,WAAW;AAAA,QACpB,EAAE,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,QACrC,EAAE,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,QACrC,EAAE,IAAI,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,MACtC,CAAC;AACD,YAAM,SAAS,MAAM,QAAQ,UAAU,QAAQ,EAAE,OAAO,SAAS,GAAG;AAAA,QACnE,YAAY,CAAC,EAAE,IAAI,OAAO,OAAO,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC3D,SAAS,CAAC,QAAQ;AAAA,QAClB,QAAQC,aAAY,OAAO,EAAE,GAAG,SAAS,EAAE;AAAA,MAC5C,CAAC;AACD,aAAO,MAAM,EAAE,aAAa,CAAC;AAC7B,aAAO,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,MAAM,OAAO,GAAG,CAAC;AAAA,IACtD,CAAC;AAAA,EACF,CAAC;AACF;","names":["v","FilterGroup","IncOp","PatchOp","PullOp","PushOp"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as s}from "./chunk-6DW4GW3R.min.mjs";import{K as a}from "./chunk-LTDVZJYJ.min.mjs";var o=class{constructor(n){this.config=n}getScopedDb(n){return a.get().getScopedName(n).replaceAll(".","-")}};import{v as u}from"valleyed";var x=()=>u.object({debeziumUrl:u.string(),eventBus:u.instanceOf(s)});import{v as e}from"valleyed";var i=(p=>(p.and="and",p.or="or",p))(i||{}),y=(r=>(r.lt="lt",r.lte="lte",r.gt="gt",r.gte="gte",r.eq="eq",r.ne="ne",r.in="in",r.nin="nin",r))(y||{}),l=e.catch(e.defaults(e.in(["and","or"]),"and"),"and"),f=e.object({field:e.string(),value:e.any(),condition:e.catch(e.defaults(e.in(Object.values(y)),"eq"),"eq")}),c=e.recursive(()=>e.discriminate(t=>Object.values(i).includes(t.condition)?"block":"regular",{block:e.object({condition:l,value:e.array(c)}),regular:f}),"QueryWhereBlock"),d=e.defaults(e.array(c),[]);function m(){return e.meta(e.object({all:e.defaults(e.boolean(),!1),limit:e.lazy(()=>{let t=a.get().settings.utils.paginationDefaultLimit;return e.catch(e.defaults(e.number().pipe(e.lte(t)),t),t)}),page:e.catch(e.defaults(e.number().pipe(e.gte(1)),1),1),search:e.defaults(e.nullish(e.object({value:e.string(),fields:e.array(e.string())})),null),sort:e.defaults(e.array(e.object({field:e.string(),desc:e.defaults(e.boolean(),!1)})),[]),whereType:l,where:d,select:e.optional(e.array(e.string()))}).pipe(t=>({...t,auth:[],authType:"and"})),{title:"Query Params",$refId:"QueryParams"})}function O(t){return e.object({pages:e.object({current:e.number(),start:e.number(),last:e.number(),previous:e.nullable(e.number()),next:e.nullable(e.number())}),docs:e.object({limit:e.number(),total:e.number(),count:e.number()}),results:e.array(t)})}function v(t){return e.assert(m(),t)}export{o as a,x as b,i as c,y as d,m as e,O as f,v as g};
|
|
2
|
+
//# sourceMappingURL=chunk-AUKXL4EA.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/dbs/adapters/base/db.ts","../../src/dbs/adapters/base/types.ts","../../src/dbs/pipes.ts"],"sourcesContent":["import * as core from './core'\nimport type { DbConfig } from './types'\nimport { Instance } from '../../../instance'\n\nexport type TableOptions = { skipAudit?: boolean }\n\nexport abstract class Db<IdKey extends core.IdType> {\n\tconstructor(protected config: DbConfig) {}\n\n\tprotected getScopedDb(db: string) {\n\t\treturn Instance.get().getScopedName(db).replaceAll('.', '-')\n\t}\n\n\tabstract use<Model extends core.Model<IdKey>, Entity extends core.Entity>(\n\t\tconfig: core.Config<Model, Entity>,\n\t): core.Table<IdKey, Model, Entity>\n\n\tabstract session<T>(callback: () => Promise<T>): Promise<T>\n}\n","import { v, type PipeOutput } from 'valleyed'\n\nimport { KafkaEventBus } from '../../../events/adapters/kafka'\n\nexport const dbChangeConfigPipe = () =>\n\tv.object({\n\t\tdebeziumUrl: v.string(),\n\t\teventBus: v.instanceOf(KafkaEventBus as unknown as abstract new (...args: any[]) => KafkaEventBus),\n\t})\n\nexport type DbChangeConfig = PipeOutput<ReturnType<typeof dbChangeConfigPipe>>\n\nexport type DbConfig = {\n\tchanges?: DbChangeConfig\n}\n","import { type ConditionalObjectKeys, type Pipe, type PipeInput, type PipeOutput, v } from 'valleyed'\n\nimport { Instance } from '../instance'\nimport type { Select } from './adapters/base/core'\n\nexport enum QueryKeys {\n\tand = 'and',\n\tor = 'or',\n}\n\nexport enum Conditions {\n\tlt = 'lt',\n\tlte = 'lte',\n\tgt = 'gt',\n\tgte = 'gte',\n\teq = 'eq',\n\tne = 'ne',\n\tin = 'in',\n\tnin = 'nin',\n}\n\n// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\nconst queryKeys = v.catch(v.defaults(v.in([QueryKeys.and, QueryKeys.or]), QueryKeys.and), QueryKeys.and)\nconst queryWhere = v.object({\n\tfield: v.string(),\n\tvalue: v.any(),\n\t// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\n\tcondition: v.catch(v.defaults(v.in(Object.values(Conditions)), Conditions.eq), Conditions.eq),\n})\nconst queryWhereBlock = v.recursive(\n\t() =>\n\t\tv.discriminate((d) => (Object.values(QueryKeys).includes(d.condition as any) ? 'block' : 'regular'), {\n\t\t\tblock: v.object({\n\t\t\t\tcondition: queryKeys,\n\t\t\t\tvalue: v.array(queryWhereBlock),\n\t\t\t}),\n\t\t\tregular: queryWhere,\n\t\t}),\n\t'QueryWhereBlock',\n) as Pipe<\n\t| {\n\t\t\tcondition: PipeInput<typeof queryKeys>\n\t\t\tvalue: PipeInput<typeof queryWhere>[]\n\t }\n\t| PipeInput<typeof queryWhere>,\n\t| {\n\t\t\tcondition: PipeOutput<typeof queryKeys>\n\t\t\tvalue: PipeOutput<typeof queryWhere>[]\n\t }\n\t| PipeOutput<typeof queryWhere>\n>\n\nconst queryWhereClause = v.defaults(v.array(queryWhereBlock), [])\n\nexport function queryParamsPipe() {\n\treturn v.meta(\n\t\tv\n\t\t\t.object({\n\t\t\t\tall: v.defaults(v.boolean(), false),\n\t\t\t\tlimit: v.lazy(() => {\n\t\t\t\t\tconst pagLimit = Instance.get().settings.utils.paginationDefaultLimit\n\t\t\t\t\t// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\n\t\t\t\t\treturn v.catch(v.defaults(v.number().pipe(v.lte(pagLimit)), pagLimit), pagLimit)\n\t\t\t\t}),\n\t\t\t\t// eslint-disable-next-line promise/valid-params -- valleyed v.catch(schema, fallback) is not Promise.prototype.catch\n\t\t\t\tpage: v.catch(v.defaults(v.number().pipe(v.gte(1)), 1), 1),\n\t\t\t\tsearch: v.defaults(\n\t\t\t\t\tv.nullish(\n\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\tvalue: v.string(),\n\t\t\t\t\t\t\tfields: v.array(v.string()),\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t\tnull,\n\t\t\t\t),\n\t\t\t\tsort: v.defaults(\n\t\t\t\t\tv.array(\n\t\t\t\t\t\tv.object({\n\t\t\t\t\t\t\tfield: v.string(),\n\t\t\t\t\t\t\tdesc: v.defaults(v.boolean(), false),\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t\t[],\n\t\t\t\t),\n\t\t\t\twhereType: queryKeys,\n\t\t\t\twhere: queryWhereClause,\n\t\t\t\tselect: v.optional(v.array(v.string())),\n\t\t\t})\n\t\t\t.pipe((p) => ({ ...p, auth: <(typeof p)['where']>[], authType: QueryKeys.and })),\n\t\t{ title: 'Query Params', $refId: 'QueryParams' },\n\t)\n}\n\nexport function queryResultsPipe<T>(model: Pipe<any, T>) {\n\treturn v.object({\n\t\tpages: v.object({\n\t\t\tcurrent: v.number(),\n\t\t\tstart: v.number(),\n\t\t\tlast: v.number(),\n\t\t\tprevious: v.nullable(v.number()),\n\t\t\tnext: v.nullable(v.number()),\n\t\t}),\n\t\tdocs: v.object({\n\t\t\tlimit: v.number(),\n\t\t\ttotal: v.number(),\n\t\t\tcount: v.number(),\n\t\t}),\n\t\tresults: v.array(model),\n\t})\n}\n\nexport function wrapQueryParams(params: QueryParamsInput): QueryParamsBase {\n\treturn v.assert(queryParamsPipe(), params)\n}\n\nexport type QueryParamsBase = PipeOutput<ReturnType<typeof queryParamsPipe>>\nexport type QueryParams<T, S extends Select<T> | undefined = undefined> = Omit<QueryParamsBase, 'select'> & {\n\tselect?: S extends undefined ? QueryParamsBase['select'] : S\n}\nexport type QueryParamsInput = ConditionalObjectKeys<PipeInput<ReturnType<typeof queryParamsPipe>>>\nexport type QueryWhereClause = QueryParamsBase['where'][number]\nexport type QueryWhere = Extract<QueryWhereClause, { field: string }>\nexport type QueryWhereBlock = Exclude<QueryWhereClause, { field: string }>\nexport type QueryResults<T> = PipeOutput<ReturnType<typeof queryResultsPipe<T>>>\n"],"mappings":"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","names":["Db","config","db","Instance","v","dbChangeConfigPipe","v","KafkaEventBus","v","QueryKeys","Conditions","queryKeys","v","queryWhere","queryWhereBlock","d","queryWhereClause","queryParamsPipe","pagLimit","Instance","p","queryResultsPipe","model","wrapQueryParams","params"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var t=(a=>(a.CronJob="CronJob",a.RepeatableJob="RepeatableJob",a.DelayedJob="DelayedJob",a))(t||{}),o=class{#e=[];#a={};get callbacks(){return this.#a}set callbacks(e){this.#a=e}get crons(){return this.#e}set crons(e){this.#e=e}};export{t as a,o as b};
|
|
2
|
+
//# sourceMappingURL=chunk-BJNIUCPT.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/jobs/adapters/base.ts"],"sourcesContent":["import type { CronTypes, DelayedJobs, RepeatableJobs } from '../../types'\n\nexport enum JobNames {\n\tCronJob = 'CronJob',\n\tRepeatableJob = 'RepeatableJob',\n\tDelayedJob = 'DelayedJob',\n}\n\nexport type Cron = CronTypes[keyof CronTypes]\nexport type DelayedJobEvent = DelayedJobs[keyof DelayedJobs]\nexport type RepeatableJobEvent = RepeatableJobs[keyof RepeatableJobs]\nexport type DelayedJobCallback = (data: DelayedJobEvent) => Promise<void> | void\nexport type CronJobCallback = (name: CronTypes[keyof CronTypes]) => Promise<void> | void\nexport type RepeatableJobCallback = (data: RepeatableJobEvent) => Promise<void> | void\nexport type JobCallbacks = { onDelayed?: DelayedJobCallback; onCron?: CronJobCallback; onRepeatable?: RepeatableJobCallback }\n\nexport abstract class Job {\n\t#crons: { name: Cron; cron: string }[] = []\n\t#callbacks: JobCallbacks = {}\n\n\tabstract addDelayed(data: DelayedJobEvent, delayInMs: number): Promise<string>\n\tabstract addRepeatable(data: RepeatableJobEvent, cron: string, tz?: string): Promise<string>\n\tabstract removeDelayed(jobId: string): Promise<void>\n\tabstract retryAllFailedJobs(): Promise<void>\n\n\tget callbacks() {\n\t\treturn this.#callbacks\n\t}\n\tset callbacks(newCallbacks: JobCallbacks) {\n\t\tthis.#callbacks = newCallbacks\n\t}\n\tget crons() {\n\t\treturn this.#crons\n\t}\n\tset crons(newCrons: { name: Cron; cron: string }[]) {\n\t\tthis.#crons = newCrons\n\t}\n}\n"],"mappings":"AAEO,IAAKA,OACXA,EAAA,QAAU,UACVA,EAAA,cAAgB,gBAChBA,EAAA,WAAa,aAHFA,OAAA,IAcUC,EAAf,KAAmB,CACzBC,GAAyC,CAAC,EAC1CC,GAA2B,CAAC,EAO5B,IAAI,WAAY,CACf,OAAO,KAAKA,EACb,CACA,IAAI,UAAUC,EAA4B,CACzC,KAAKD,GAAaC,CACnB,CACA,IAAI,OAAQ,CACX,OAAO,KAAKF,EACb,CACA,IAAI,MAAMG,EAA0C,CACnD,KAAKH,GAASG,CACf,CACD","names":["JobNames","Job","#crons","#callbacks","newCallbacks","newCrons"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/jobs/adapters/base.ts
|
|
2
|
+
var JobNames = /* @__PURE__ */ ((JobNames2) => {
|
|
3
|
+
JobNames2["CronJob"] = "CronJob";
|
|
4
|
+
JobNames2["RepeatableJob"] = "RepeatableJob";
|
|
5
|
+
JobNames2["DelayedJob"] = "DelayedJob";
|
|
6
|
+
return JobNames2;
|
|
7
|
+
})(JobNames || {});
|
|
8
|
+
var Job = class {
|
|
9
|
+
#crons = [];
|
|
10
|
+
#callbacks = {};
|
|
11
|
+
get callbacks() {
|
|
12
|
+
return this.#callbacks;
|
|
13
|
+
}
|
|
14
|
+
set callbacks(newCallbacks) {
|
|
15
|
+
this.#callbacks = newCallbacks;
|
|
16
|
+
}
|
|
17
|
+
get crons() {
|
|
18
|
+
return this.#crons;
|
|
19
|
+
}
|
|
20
|
+
set crons(newCrons) {
|
|
21
|
+
this.#crons = newCrons;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
JobNames,
|
|
27
|
+
Job
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=chunk-DKPZJIIR.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/jobs/adapters/base.ts"],"sourcesContent":["import type { CronTypes, DelayedJobs, RepeatableJobs } from '../../types'\n\nexport enum JobNames {\n\tCronJob = 'CronJob',\n\tRepeatableJob = 'RepeatableJob',\n\tDelayedJob = 'DelayedJob',\n}\n\nexport type Cron = CronTypes[keyof CronTypes]\nexport type DelayedJobEvent = DelayedJobs[keyof DelayedJobs]\nexport type RepeatableJobEvent = RepeatableJobs[keyof RepeatableJobs]\nexport type DelayedJobCallback = (data: DelayedJobEvent) => Promise<void> | void\nexport type CronJobCallback = (name: CronTypes[keyof CronTypes]) => Promise<void> | void\nexport type RepeatableJobCallback = (data: RepeatableJobEvent) => Promise<void> | void\nexport type JobCallbacks = { onDelayed?: DelayedJobCallback; onCron?: CronJobCallback; onRepeatable?: RepeatableJobCallback }\n\nexport abstract class Job {\n\t#crons: { name: Cron; cron: string }[] = []\n\t#callbacks: JobCallbacks = {}\n\n\tabstract addDelayed(data: DelayedJobEvent, delayInMs: number): Promise<string>\n\tabstract addRepeatable(data: RepeatableJobEvent, cron: string, tz?: string): Promise<string>\n\tabstract removeDelayed(jobId: string): Promise<void>\n\tabstract retryAllFailedJobs(): Promise<void>\n\n\tget callbacks() {\n\t\treturn this.#callbacks\n\t}\n\tset callbacks(newCallbacks: JobCallbacks) {\n\t\tthis.#callbacks = newCallbacks\n\t}\n\tget crons() {\n\t\treturn this.#crons\n\t}\n\tset crons(newCrons: { name: Cron; cron: string }[]) {\n\t\tthis.#crons = newCrons\n\t}\n}\n"],"mappings":";AAEO,IAAK,WAAL,kBAAKA,cAAL;AACN,EAAAA,UAAA,aAAU;AACV,EAAAA,UAAA,mBAAgB;AAChB,EAAAA,UAAA,gBAAa;AAHF,SAAAA;AAAA,GAAA;AAcL,IAAe,MAAf,MAAmB;AAAA,EACzB,SAAyC,CAAC;AAAA,EAC1C,aAA2B,CAAC;AAAA,EAO5B,IAAI,YAAY;AACf,WAAO,KAAK;AAAA,EACb;AAAA,EACA,IAAI,UAAU,cAA4B;AACzC,SAAK,aAAa;AAAA,EACnB;AAAA,EACA,IAAI,QAAQ;AACX,WAAO,KAAK;AAAA,EACb;AAAA,EACA,IAAI,MAAM,UAA0C;AACnD,SAAK,SAAS;AAAA,EACf;AACD;","names":["JobNames"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/events/adapters/base.ts"],"sourcesContent":["import type { Events } from '../../types'\n\nexport type StreamOptions = { skipScope?: boolean; fanout: boolean }\n\nexport type Stream<EventData> = {\n\tpublish: (data: EventData) => Promise<boolean>\n\tsubscribe: (onMessage: (data: EventData) => Promise<void>) => void\n}\n\nexport abstract class EventBus {\n\tabstract stream<Event extends Events[keyof Events]>(topic: Event['topic'], options?: Partial<StreamOptions>): Stream<Event['data']>\n}\n"],"mappings":"AASO,IAAeA,EAAf,KAAwB,CAE/B","names":["EventBus"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{K as s}from "./chunk-LTDVZJYJ.min.mjs";var i=class{getScopedKey(t){return s.get().getScopedName(t,":")}async getOrSet(t,a,n){let e=await this.get(t);if(e)return JSON.parse(e);let r=await a();return await this.set(t,JSON.stringify(r),n),r}};export{i as a};
|
|
2
|
+
//# sourceMappingURL=chunk-ECBJ3NT3.min.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cache/adapters/base.ts"],"sourcesContent":["import { Instance } from '../../instance'\n\nexport abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs?: number): Promise<void>\n\tabstract get(key: string): Promise<string | null>\n\tabstract delete(key: string): Promise<void>\n\n\tgetScopedKey(key: string) {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs?: number): Promise<T> {\n\t\tconst cached = await this.get(key)\n\t\tif (cached) return JSON.parse(cached) as T\n\n\t\tconst result = await fn()\n\t\tawait this.set(key, JSON.stringify(result), ttlInSecs)\n\t\treturn result\n\t}\n}\n"],"mappings":"6CAEO,IAAeA,EAAf,KAAqB,CAK3B,aAAaC,EAAa,CACzB,OAAOC,EAAS,IAAI,EAAE,cAAcD,EAAK,GAAG,CAC7C,CAEA,MAAM,SAAYA,EAAaE,EAAsBC,EAAgC,CACpF,IAAMC,EAAS,MAAM,KAAK,IAAIJ,CAAG,EACjC,GAAII,EAAQ,OAAO,KAAK,MAAMA,CAAM,EAEpC,IAAMC,EAAS,MAAMH,EAAG,EACxB,aAAM,KAAK,IAAIF,EAAK,KAAK,UAAUK,CAAM,EAAGF,CAAS,EAC9CE,CACR,CACD","names":["Cache","key","Instance","fn","ttlInSecs","cached","result"]}
|
|
@@ -1,18 +1,60 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EquippedError,
|
|
3
|
+
Instance,
|
|
4
|
+
configurable,
|
|
5
|
+
parseJSONValue,
|
|
6
|
+
random_exports
|
|
7
|
+
} from "./chunk-2TCFNKRZ.mjs";
|
|
8
|
+
import {
|
|
9
|
+
EventBus
|
|
10
|
+
} from "./chunk-VCCS7CAI.mjs";
|
|
11
|
+
|
|
12
|
+
// src/events/adapters/kafka/index.ts
|
|
1
13
|
import { KafkaJS } from "@confluentinc/kafka-javascript";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
14
|
+
import { v } from "valleyed";
|
|
15
|
+
var kafkaConfigPipe = () => v.meta(
|
|
16
|
+
v.object({
|
|
17
|
+
brokers: v.array(v.string()),
|
|
18
|
+
ssl: v.optional(v.boolean()),
|
|
19
|
+
sasl: v.optional(
|
|
20
|
+
v.object({
|
|
21
|
+
mechanism: v.is("plain"),
|
|
22
|
+
username: v.string(),
|
|
23
|
+
password: v.string()
|
|
24
|
+
})
|
|
25
|
+
),
|
|
26
|
+
clientId: v.optional(v.string())
|
|
27
|
+
}),
|
|
28
|
+
{ title: "Kafka Config", $refId: "KafkaConfig" }
|
|
29
|
+
);
|
|
30
|
+
var KafkaEventBus = class _KafkaEventBus extends configurable(kafkaConfigPipe, EventBus) {
|
|
7
31
|
#client;
|
|
8
|
-
#admin;
|
|
32
|
+
#admin = null;
|
|
9
33
|
constructor(config) {
|
|
10
|
-
super();
|
|
34
|
+
super(config);
|
|
11
35
|
this.#client = new KafkaJS.Kafka({
|
|
12
36
|
kafkaJS: { ...config, logLevel: KafkaJS.logLevel.NOTHING }
|
|
13
37
|
});
|
|
14
38
|
}
|
|
15
|
-
|
|
39
|
+
async #getAdmin() {
|
|
40
|
+
if (!this.#admin)
|
|
41
|
+
this.#admin = (async () => {
|
|
42
|
+
const admin = this.#client.admin();
|
|
43
|
+
await admin.connect();
|
|
44
|
+
return admin;
|
|
45
|
+
})();
|
|
46
|
+
return this.#admin;
|
|
47
|
+
}
|
|
48
|
+
async #createTopic(topic) {
|
|
49
|
+
const admin = await this.#getAdmin();
|
|
50
|
+
await admin.createTopics({ topics: [{ topic }], timeout: 5e3 });
|
|
51
|
+
}
|
|
52
|
+
async #deleteGroup(groupId) {
|
|
53
|
+
const admin = await this.#getAdmin();
|
|
54
|
+
await admin.deleteGroups([groupId]).catch(() => {
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
stream(topicName, options = {}) {
|
|
16
58
|
const topic = options.skipScope ? topicName : Instance.get().getScopedName(topicName);
|
|
17
59
|
return {
|
|
18
60
|
publish: async (data) => {
|
|
@@ -27,7 +69,7 @@ class KafkaEventBus extends EventBus {
|
|
|
27
69
|
subscribe: (onMessage) => {
|
|
28
70
|
const subscribe = async () => {
|
|
29
71
|
await this.#createTopic(topic);
|
|
30
|
-
const groupId = options.fanout ? Instance.get().getScopedName(`${Instance.get().id}-fanout-${
|
|
72
|
+
const groupId = options.fanout ? Instance.get().getScopedName(`${Instance.get().id}-fanout-${random_exports.string(10)}`) : topic;
|
|
31
73
|
const consumer = this.#client.consumer({ kafkaJS: { groupId } });
|
|
32
74
|
await consumer.connect();
|
|
33
75
|
await consumer.subscribe({ topic });
|
|
@@ -42,38 +84,19 @@ class KafkaEventBus extends EventBus {
|
|
|
42
84
|
}
|
|
43
85
|
});
|
|
44
86
|
if (options.fanout)
|
|
45
|
-
Instance.on(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
await this.#deleteGroup(groupId);
|
|
50
|
-
},
|
|
51
|
-
10
|
|
52
|
-
);
|
|
87
|
+
Instance.on("close", async () => {
|
|
88
|
+
await consumer.disconnect();
|
|
89
|
+
await this.#deleteGroup(groupId);
|
|
90
|
+
}, { class: _KafkaEventBus });
|
|
53
91
|
};
|
|
54
|
-
Instance.on("start", subscribe,
|
|
92
|
+
Instance.on("start", subscribe, { class: _KafkaEventBus });
|
|
55
93
|
}
|
|
56
94
|
};
|
|
57
95
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.#admin = (async () => {
|
|
61
|
-
const admin = this.#client.admin();
|
|
62
|
-
await admin.connect();
|
|
63
|
-
return admin;
|
|
64
|
-
})();
|
|
65
|
-
return this.#admin;
|
|
66
|
-
}
|
|
67
|
-
async #createTopic(topic) {
|
|
68
|
-
const admin = await this.#getAdmin();
|
|
69
|
-
await admin.createTopics({ topics: [{ topic }], timeout: 5e3 });
|
|
70
|
-
}
|
|
71
|
-
async #deleteGroup(groupId) {
|
|
72
|
-
const admin = await this.#getAdmin();
|
|
73
|
-
await admin.deleteGroups([groupId]).catch(() => {
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
96
|
+
};
|
|
97
|
+
|
|
77
98
|
export {
|
|
99
|
+
kafkaConfigPipe,
|
|
78
100
|
KafkaEventBus
|
|
79
101
|
};
|
|
102
|
+
//# sourceMappingURL=chunk-I4BB436E.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/events/adapters/kafka/index.ts"],"sourcesContent":["import { KafkaJS } from '@confluentinc/kafka-javascript'\nimport { v } from 'valleyed'\n\nimport { EquippedError } from '../../../errors'\nimport { Instance } from '../../../instance'\nimport type { Events } from '../../../types'\nimport { Random, configurable, parseJSONValue } from '../../../utilities'\nimport { EventBus, type Stream, type StreamOptions } from '../base'\n\nexport const kafkaConfigPipe = () =>\n\tv.meta(\n\t\tv.object({\n\t\t\tbrokers: v.array(v.string()),\n\t\t\tssl: v.optional(v.boolean()),\n\t\t\tsasl: v.optional(\n\t\t\t\tv.object({\n\t\t\t\t\tmechanism: v.is('plain' as const),\n\t\t\t\t\tusername: v.string(),\n\t\t\t\t\tpassword: v.string(),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tclientId: v.optional(v.string()),\n\t\t}),\n\t\t{ title: 'Kafka Config', $refId: 'KafkaConfig' },\n\t)\n\nexport class KafkaEventBus extends configurable(kafkaConfigPipe, EventBus) {\n\t#client: KafkaJS.Kafka\n\t#admin: Promise<KafkaJS.Admin> | null = null\n\n\tprotected constructor(config: typeof KafkaEventBus.Config) {\n\t\tsuper(config)\n\t\tthis.#client = new KafkaJS.Kafka({\n\t\t\tkafkaJS: { ...config, logLevel: KafkaJS.logLevel.NOTHING },\n\t\t})\n\t}\n\n\tasync #getAdmin() {\n\t\tif (!this.#admin)\n\t\t\tthis.#admin = (async () => {\n\t\t\t\tconst admin = this.#client.admin()\n\t\t\t\tawait admin.connect()\n\t\t\t\treturn admin\n\t\t\t})()\n\t\treturn this.#admin\n\t}\n\n\tasync #createTopic(topic: string) {\n\t\tconst admin = await this.#getAdmin()\n\t\tawait admin.createTopics({ topics: [{ topic }], timeout: 5000 })\n\t}\n\n\tasync #deleteGroup(groupId: string) {\n\t\tconst admin = await this.#getAdmin()\n\t\tawait admin.deleteGroups([groupId]).catch(() => {})\n\t}\n\n\tstream<Event extends Events[keyof Events]>(topicName: Event['topic'], options: Partial<StreamOptions> = {}): Stream<Event['data']> {\n\t\tconst topic = options.skipScope ? topicName : Instance.get().getScopedName(topicName)\n\t\treturn {\n\t\t\tpublish: async (data) => {\n\t\t\t\tconst producer = this.#client.producer()\n\t\t\t\tawait producer.connect()\n\t\t\t\tawait producer.send({\n\t\t\t\t\ttopic,\n\t\t\t\t\tmessages: [{ value: JSON.stringify(data) }],\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t},\n\t\t\tsubscribe: (onMessage) => {\n\t\t\t\tconst subscribe = async () => {\n\t\t\t\t\tawait this.#createTopic(topic)\n\t\t\t\t\tconst groupId = options.fanout\n\t\t\t\t\t\t? Instance.get().getScopedName(`${Instance.get().id}-fanout-${Random.string(10)}`)\n\t\t\t\t\t\t: topic\n\t\t\t\t\tconst consumer = this.#client.consumer({ kafkaJS: { groupId } })\n\n\t\t\t\t\tawait consumer.connect()\n\t\t\t\t\tawait consumer.subscribe({ topic })\n\n\t\t\t\t\tawait consumer.run({\n\t\t\t\t\t\teachMessage: async ({ message }) => {\n\t\t\t\t\t\t\tawait Instance.resolveBeforeCrash(async () => {\n\t\t\t\t\t\t\t\tif (!message.value) return\n\t\t\t\t\t\t\t\tawait onMessage(parseJSONValue(message.value.toString()))\n\t\t\t\t\t\t\t}).catch((error) =>\n\t\t\t\t\t\t\t\tInstance.crash(new EquippedError('Error processing kafka event', { topic, groupId, options }, error)),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\n\t\t\t\t\tif (options.fanout)\n\t\t\t\t\t\tInstance.on('close', async () => {\n\t\t\t\t\t\t\tawait consumer.disconnect()\n\t\t\t\t\t\t\tawait this.#deleteGroup(groupId)\n\t\t\t\t\t\t}, { class: KafkaEventBus })\n\t\t\t\t}\n\t\t\t\tInstance.on('start', subscribe, { class: KafkaEventBus })\n\t\t\t},\n\t\t}\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Instance
|
|
3
|
+
} from "./chunk-2TCFNKRZ.mjs";
|
|
4
|
+
|
|
5
|
+
// src/cache/adapters/base.ts
|
|
6
|
+
var Cache = class {
|
|
7
|
+
getScopedKey(key) {
|
|
8
|
+
return Instance.get().getScopedName(key, ":");
|
|
9
|
+
}
|
|
10
|
+
async getOrSet(key, fn, ttlInSecs) {
|
|
11
|
+
const cached = await this.get(key);
|
|
12
|
+
if (cached) return JSON.parse(cached);
|
|
13
|
+
const result = await fn();
|
|
14
|
+
await this.set(key, JSON.stringify(result), ttlInSecs);
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
Cache
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=chunk-IEBC3OWN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cache/adapters/base.ts"],"sourcesContent":["import { Instance } from '../../instance'\n\nexport abstract class Cache {\n\tabstract set(key: string, data: string, ttlInSecs?: number): Promise<void>\n\tabstract get(key: string): Promise<string | null>\n\tabstract delete(key: string): Promise<void>\n\n\tgetScopedKey(key: string) {\n\t\treturn Instance.get().getScopedName(key, ':')\n\t}\n\n\tasync getOrSet<T>(key: string, fn: () => Promise<T>, ttlInSecs?: number): Promise<T> {\n\t\tconst cached = await this.get(key)\n\t\tif (cached) return JSON.parse(cached) as T\n\n\t\tconst result = await fn()\n\t\tawait this.set(key, JSON.stringify(result), ttlInSecs)\n\t\treturn result\n\t}\n}\n"],"mappings":";;;;;AAEO,IAAe,QAAf,MAAqB;AAAA,EAK3B,aAAa,KAAa;AACzB,WAAO,SAAS,IAAI,EAAE,cAAc,KAAK,GAAG;AAAA,EAC7C;AAAA,EAEA,MAAM,SAAY,KAAa,IAAsB,WAAgC;AACpF,UAAM,SAAS,MAAM,KAAK,IAAI,GAAG;AACjC,QAAI,OAAQ,QAAO,KAAK,MAAM,MAAM;AAEpC,UAAM,SAAS,MAAM,GAAG;AACxB,UAAM,KAAK,IAAI,KAAK,KAAK,UAAU,MAAM,GAAG,SAAS;AACrD,WAAO;AAAA,EACR;AACD;","names":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EquippedError
|
|
3
|
+
} from "./chunk-2TCFNKRZ.mjs";
|
|
4
|
+
|
|
5
|
+
// src/orm/errors/introspection.ts
|
|
6
|
+
var OrmIntrospectionError = class extends EquippedError {
|
|
7
|
+
adapter;
|
|
8
|
+
table;
|
|
9
|
+
constructor(opts) {
|
|
10
|
+
super(`Introspection failed for table '${opts.table}' on adapter '${opts.adapter}'`, { adapter: opts.adapter, table: opts.table }, opts.cause);
|
|
11
|
+
this.adapter = opts.adapter;
|
|
12
|
+
this.table = opts.table;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
if (void 0) {
|
|
16
|
+
const { describe, test, expect } = void 0;
|
|
17
|
+
const { EquippedError: EquippedError2 } = await null;
|
|
18
|
+
describe("OrmIntrospectionError", () => {
|
|
19
|
+
test("stores adapter, table, and cause on the instance", () => {
|
|
20
|
+
const cause = new Error("unknown column type");
|
|
21
|
+
const err = new OrmIntrospectionError({ adapter: "postgres", table: "users", cause });
|
|
22
|
+
expect(err.adapter).toBe("postgres");
|
|
23
|
+
expect(err.table).toBe("users");
|
|
24
|
+
expect(err.cause).toBe(cause);
|
|
25
|
+
});
|
|
26
|
+
test("message includes adapter and table", () => {
|
|
27
|
+
const err = new OrmIntrospectionError({ adapter: "pg", table: "posts", cause: "bad type" });
|
|
28
|
+
expect(err.message).toBe("Introspection failed for table 'posts' on adapter 'pg'");
|
|
29
|
+
});
|
|
30
|
+
test("instanceof EquippedError is true", () => {
|
|
31
|
+
const err = new OrmIntrospectionError({ adapter: "x", table: "y", cause: null });
|
|
32
|
+
expect(err).toBeInstanceOf(OrmIntrospectionError);
|
|
33
|
+
expect(err).toBeInstanceOf(EquippedError2);
|
|
34
|
+
});
|
|
35
|
+
test("context carries adapter and table", () => {
|
|
36
|
+
const err = new OrmIntrospectionError({ adapter: "mem", table: "items", cause: "fail" });
|
|
37
|
+
expect(err.context.adapter).toBe("mem");
|
|
38
|
+
expect(err.context.table).toBe("items");
|
|
39
|
+
});
|
|
40
|
+
test("discriminates from sibling error classes", async () => {
|
|
41
|
+
const { OrmMigrationError } = await null;
|
|
42
|
+
const { OrmValidationError } = await null;
|
|
43
|
+
const err = new OrmIntrospectionError({ adapter: "x", table: "y", cause: null });
|
|
44
|
+
expect(err).not.toBeInstanceOf(OrmMigrationError);
|
|
45
|
+
expect(err).not.toBeInstanceOf(OrmValidationError);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
OrmIntrospectionError
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=chunk-KW3PBDFD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orm/errors/introspection.ts"],"sourcesContent":["import { EquippedError } from '../../errors'\n\nexport class OrmIntrospectionError extends EquippedError {\n\treadonly adapter: string\n\treadonly table: string\n\n\tconstructor(opts: { adapter: string; table: string; cause: unknown }) {\n\t\tsuper(`Introspection failed for table '${opts.table}' on adapter '${opts.adapter}'`, { adapter: opts.adapter, table: opts.table }, opts.cause)\n\t\tthis.adapter = opts.adapter\n\t\tthis.table = opts.table\n\t}\n}\n\nif (import.meta.vitest) {\n\tconst { describe, test, expect } = import.meta.vitest\n\tconst { EquippedError } = await import('../../errors')\n\n\tdescribe('OrmIntrospectionError', () => {\n\t\ttest('stores adapter, table, and cause on the instance', () => {\n\t\t\tconst cause = new Error('unknown column type')\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'postgres', table: 'users', cause })\n\t\t\texpect(err.adapter).toBe('postgres')\n\t\t\texpect(err.table).toBe('users')\n\t\t\texpect(err.cause).toBe(cause)\n\t\t})\n\n\t\ttest('message includes adapter and table', () => {\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'pg', table: 'posts', cause: 'bad type' })\n\t\t\texpect(err.message).toBe(\"Introspection failed for table 'posts' on adapter 'pg'\")\n\t\t})\n\n\t\ttest('instanceof EquippedError is true', () => {\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'x', table: 'y', cause: null })\n\t\t\texpect(err).toBeInstanceOf(OrmIntrospectionError)\n\t\t\texpect(err).toBeInstanceOf(EquippedError)\n\t\t})\n\n\t\ttest('context carries adapter and table', () => {\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'mem', table: 'items', cause: 'fail' })\n\t\t\texpect((err.context as any).adapter).toBe('mem')\n\t\t\texpect((err.context as any).table).toBe('items')\n\t\t})\n\n\t\ttest('discriminates from sibling error classes', async () => {\n\t\t\tconst { OrmMigrationError } = await import('./migration')\n\t\t\tconst { OrmValidationError } = await import('./validation')\n\t\t\tconst err = new OrmIntrospectionError({ adapter: 'x', table: 'y', cause: null })\n\t\t\texpect(err).not.toBeInstanceOf(OrmMigrationError)\n\t\t\texpect(err).not.toBeInstanceOf(OrmValidationError)\n\t\t})\n\t})\n}\n"],"mappings":";;;;;AAEO,IAAM,wBAAN,cAAoC,cAAc;AAAA,EAC/C;AAAA,EACA;AAAA,EAET,YAAY,MAA0D;AACrE,UAAM,mCAAmC,KAAK,KAAK,iBAAiB,KAAK,OAAO,KAAK,EAAE,SAAS,KAAK,SAAS,OAAO,KAAK,MAAM,GAAG,KAAK,KAAK;AAC7I,SAAK,UAAU,KAAK;AACpB,SAAK,QAAQ,KAAK;AAAA,EACnB;AACD;AAEA,IAAI,QAAoB;AACvB,QAAM,EAAE,UAAU,MAAM,OAAO,IAAI;AACnC,QAAM,EAAE,eAAAA,eAAc,IAAI,MAAa;AAEvC,WAAS,yBAAyB,MAAM;AACvC,SAAK,oDAAoD,MAAM;AAC9D,YAAM,QAAQ,IAAI,MAAM,qBAAqB;AAC7C,YAAM,MAAM,IAAI,sBAAsB,EAAE,SAAS,YAAY,OAAO,SAAS,MAAM,CAAC;AACpF,aAAO,IAAI,OAAO,EAAE,KAAK,UAAU;AACnC,aAAO,IAAI,KAAK,EAAE,KAAK,OAAO;AAC9B,aAAO,IAAI,KAAK,EAAE,KAAK,KAAK;AAAA,IAC7B,CAAC;AAED,SAAK,sCAAsC,MAAM;AAChD,YAAM,MAAM,IAAI,sBAAsB,EAAE,SAAS,MAAM,OAAO,SAAS,OAAO,WAAW,CAAC;AAC1F,aAAO,IAAI,OAAO,EAAE,KAAK,wDAAwD;AAAA,IAClF,CAAC;AAED,SAAK,oCAAoC,MAAM;AAC9C,YAAM,MAAM,IAAI,sBAAsB,EAAE,SAAS,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC;AAC/E,aAAO,GAAG,EAAE,eAAe,qBAAqB;AAChD,aAAO,GAAG,EAAE,eAAeA,cAAa;AAAA,IACzC,CAAC;AAED,SAAK,qCAAqC,MAAM;AAC/C,YAAM,MAAM,IAAI,sBAAsB,EAAE,SAAS,OAAO,OAAO,SAAS,OAAO,OAAO,CAAC;AACvF,aAAQ,IAAI,QAAgB,OAAO,EAAE,KAAK,KAAK;AAC/C,aAAQ,IAAI,QAAgB,KAAK,EAAE,KAAK,OAAO;AAAA,IAChD,CAAC;AAED,SAAK,4CAA4C,YAAY;AAC5D,YAAM,EAAE,kBAAkB,IAAI,MAAa;AAC3C,YAAM,EAAE,mBAAmB,IAAI,MAAa;AAC5C,YAAM,MAAM,IAAI,sBAAsB,EAAE,SAAS,KAAK,OAAO,KAAK,OAAO,KAAK,CAAC;AAC/E,aAAO,GAAG,EAAE,IAAI,eAAe,iBAAiB;AAChD,aAAO,GAAG,EAAE,IAAI,eAAe,kBAAkB;AAAA,IAClD,CAAC;AAAA,EACF,CAAC;AACF;","names":["EquippedError"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import{a as ee}from "./chunk-DSUJ5FUL.min.mjs";import{a as M}from "./chunk-AQY7QVYI.min.mjs";export*from"valleyed";var we={};M(we,{incomingFile:()=>Ye,incomingFiles:()=>Ze,requestLocalStorage:()=>F,responseLocalStorage:()=>J,withRequest:()=>et,withResponse:()=>tt});import{AsyncLocalStorage as xe}from"async_hooks";import{PipeError as Xe,v as O}from"valleyed";import I from"pino";import{ulid as Qe}from"ulid";import{v as ke}from"valleyed";var y=class extends Error{constructor(t,o,n){super(t,{cause:n});this.message=t;this.context=o;this.cause=n}};var C=class extends y{constructor(t,o,n){super(t,{serializedErrors:o},n);this.message=t;this.serializedErrors=o}};import"@fastify/cors";import"cors";import{Server as Fe}from"socket.io";import Je from"supertest";import{PipeError as We,v as i}from"valleyed";import{convert as N}from"@openapi-contrib/json-schema-to-openapi-schema";import{capitalize as He}from"valleyed";import{v as De}from"valleyed";var v={head:"head",get:"get",post:"post",put:"put",patch:"patch",delete:"delete",options:"options"},m={Ok:200,Found:302,BadRequest:400,NotAuthenticated:401,NotAuthorized:403,NotFound:404,ValidationError:422,TooManyRequests:429,TokenExpired:461};function Q(s,e){return{cb:s,onSetup:e}}var te=(...s)=>Q(...s),at=(...s)=>Q(...s),it=(...s)=>Q(...s);function Pe(...s){let e={params:"",headers:"",query:"",body:"",cookies:"",response:"",responseHeaders:"",responseCookies:"",defaultStatusCode:"",defaultContentType:""};function t(o,n){return o?n?typeof o=="number"||typeof o=="string"||typeof o=="function"?n:De.merge(o,n):o:n}return Object.fromEntries(Object.keys(e).map(o=>[o,s.map(n=>n[o]).reduce(t,null)]))}var se=(s,e)=>e.map(t=>({...s,...t,path:`${s.path}/${t.path}`,groups:[...s.groups??[],...t.groups??[]],middlewares:[...s.middlewares??[],...t.middlewares??[]],responseMiddlewares:[...s.responseMiddlewares??[],...t.responseMiddlewares??[]],schema:Pe(s.schema??{},t.schema??{}),security:[...s.security??[],...t.security??[]]})),j=class{#e={path:""};#t=[];#o=[];constructor(e={path:""}){this.#e=e}#s(e){return(t,o={})=>n=>{let r=se(this.#e,[{...o,path:t,method:e,handler:n}])[0];return this.#t.push(r),r}}head=this.#s(v.head);get=this.#s(v.get);post=this.#s(v.post);put=this.#s(v.put);patch=this.#s(v.patch);delete=this.#s(v.delete);options=this.#s(v.options);nest(...e){e.forEach(t=>this.#o.push(t))}get routes(){return[...this.#t].concat(this.#o.flatMap(e=>se(this.#e,e.routes)))}};var oe=s=>{let e=D.get(),{app:t}=e.settings,o={openapi:"3.0.0",info:{title:`${t.name} ${e.id}`,version:s.openapi.docsVersion??""},servers:s.openapi.docsBaseUrl?.map(a=>({url:a})),paths:{},components:{schemas:{},securitySchemes:{Authorization:{type:"apiKey",name:"authorization",in:"header"},RefreshToken:{type:"apiKey",name:"x-refresh-token",in:"header"},ApiKey:{type:"apiKey",name:"x-api-key",in:"header"}}},tags:[],"x-tagGroups":[]},n={},r={},c=a=>{let{allOf:p,oneOf:d,anyOf:f,...H}=a;return p?p.flatMap(x=>c(x)):[H]},u=a=>{if(!a||typeof a!="object")return a;if(typeof a.$refId=="string"){let{$refId:p,...d}=a,f=u(d);return o.components?.schemas?(o.components.schemas[p]=f,{$ref:`#/components/schemas/${p}`}):f}return Array.isArray(a)?a.map(p=>u(p)):Object.fromEntries(Object.entries(a).map(([p,d])=>[p,u(d)]))},h=a=>{if(!a.length)return;let p=a.map(x=>typeof x=="string"?{name:x}:x),d=p.map(x=>x.name).join(" > "),f=p.at(-1)?.name??"",H=p.map(x=>x.description?.trim()??"").filter(Boolean).join(`
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
`);if(!n[d]){n[d]=!0,o.tags.push({name:d,"x-displayName":f,description:H});let b=p.slice(0,-1).map(q=>q.name).join(" > ")||"default";if(!r[b]){let q={name:b,tags:[]};o["x-tagGroups"].push(q),r[b]=q}r[b].tags=[...new Set([...r[b].tags,d])]}return d},l=async(a,p,d,f)=>{if(d.response.response?.length){f.responses??={};for(let b of d.response.response){f.responses[b.status]??={description:"",content:{}};let q=f.responses[b.status];q.content[b.contentType]={schema:await N(u(b.schema))}}}if(d.response.responseHeaders?.length){f.responses??={};for(let b of d.response.responseHeaders){f.responses[b.status]??={description:"",content:{}},f.responses[b.status];let q=f.responses[b.status];q.headers={schema:await N(u(b.schema))}}}d.request.body&&(f.requestBody={required:!0,content:{"application/json":{schema:await N(u(d.request.body))}}});let H=[],x=async(b,q)=>{if(!q)return;let ve=c(q);for(let _ of ve)if(_.properties)for(let[Z,Te]of Object.entries(_.properties))H.push({name:Z,in:b,schema:await N(u(Te)),required:(_.required||[]).includes(Z)})};await Promise.all([x("query",d.request.query),x("path",d.request.params),x("header",d.request.headers)]),H.length&&(f.parameters=H),o.paths||(o.paths={}),o.paths[a]||(o.paths[a]={}),o.paths[a][p]=f},R=a=>`
|
|
6
|
+
<!doctype html>
|
|
7
|
+
<html>
|
|
8
|
+
<head>
|
|
9
|
+
<title>${He(`${t.name} ${e.id}`)}</title>
|
|
10
|
+
<meta charset="utf-8" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style>
|
|
13
|
+
.darklight-reference {
|
|
14
|
+
display: none;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<script id="api-reference" data-url="${a}"></script>
|
|
20
|
+
<script>
|
|
21
|
+
const configuration = { theme: 'purple' };
|
|
22
|
+
document.getElementById('api-reference').dataset.configuration = JSON.stringify(configuration);
|
|
23
|
+
</script>
|
|
24
|
+
<script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference@1.38.0"></script>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
27
|
+
`,g=a=>{let p=a.replace(/(\/\s*)+/g,"/");return p.startsWith("/")||(p=`/${p}`),p!=="/"&&p.endsWith("/")&&(p=p.slice(0,-1)),p},k=async(a,p)=>{if(a.hide)return;let d=h(a.groups??[]),f=g(a.path),H=`(${a.method.toUpperCase()}) ${f}`;await l(f,a.method.toLowerCase(),p,{operationId:H,summary:a.title??f,description:a.descriptions?.join(`
|
|
28
|
+
|
|
29
|
+
`),tags:d?[d]:void 0,security:a.security})},w="/openapi.json",S=new j({path:s.openapi.docsPath??"/",hide:!0});return S.get("/index.html")(a=>a.res({body:R(`.${w}`),contentType:"text/html"})),S.get(w)(a=>a.res({body:o})),{router:S,register:k,cleanPath:g}};var ae={};M(ae,{signinWithApple:()=>Ee,signinWithFacebook:()=>Oe,signinWithGoogle:()=>qe});import ne from"axios";import re from"jsonwebtoken";import Ae from"jwks-rsa";var qe=async s=>{let e=`https://oauth2.googleapis.com/tokeninfo?id_token=${s}`,{data:t}=await ne.get(e).catch(o=>{throw new y("Failed to sign in with google",{idToken:s},o)});return t.first_name=t.given_name,t.last_name=t.family_name,t},Ee=async s=>{try{let e="https://appleid.apple.com",t=re.decode(s,{complete:!0});if(!t?.header)throw new y("Missing JWT header",{idToken:s,json:t});let{kid:o,alg:n}=t.header,r=await Ae({jwksUri:`${e}/auth/keys`,cache:!0}).getSigningKey(o).then(u=>u.getPublicKey()).catch(()=>null);if(!r)throw new y("no publicKey",{idToken:s,publicKey:r,json:t});let c=re.verify(s,r,{algorithms:[n]});if(!c)throw new y("no data",{idToken:s,data:c});if(c.iss!==e)throw new y("iss doesnt match",{idToken:s,data:c});if(c.exp*1e3<Date.now())throw new y("expired idToken",{idToken:s,data:c});return c}catch(e){throw new y("Failed to sign in with apple",{idToken:s},e)}},Oe=async(s,e=[])=>{e=[...new Set([...e,"name","picture","email"])];let{data:t}=await ne.request({method:"get",url:"https://graph.facebook.com/v15.0/me",params:{fields:e.join(","),access_token:s}}).catch(n=>{throw new y("Failed to sign in with facebook",{accessToken:s,fields:e},n)});if(!e.every(n=>n in t))throw new y("Incomplete scope for access token",{accessToken:s,fields:e,data:t});return t.email_verified="true",t};import{v as ie}from"valleyed";function Ct(s,e){let t=s();ie.compile(t);class o extends e{constructor(c,...u){super(...u);this.config=c}static create(c,...u){let h=ie.validate(t,c);if(!h.valid)throw h.error;return new this(h.value,...u)}}return o}var pe={};M(pe,{compare:()=>Be,hash:()=>Se});import*as L from"bcryptjs";var Se=async s=>(s=s.trim(),s?await L.hash(s,D.get().settings.utils.hashSaltRounds):""),Be=async(s,e)=>(s=s.trim(),!s&&s===e?!0:await L.compare(s,e));var Ie=s=>{try{return s?.constructor?.name!=="String"?s:JSON.parse(s)}catch{return s}};function X(s){return Object.fromEntries(Object.entries(s).map(([e,t])=>[e,Ie(t)]))}import{parseBuffer as Me}from"music-metadata";var Pt=async s=>{try{return(await Me(s)).format.duration??0}catch{return 0}};var ue={};M(ue,{number:()=>Ne,string:()=>je});import ce from"crypto";function je(s=20){return ce.randomBytes(s).toString("hex").slice(0,s)}function Ne(s=0,e=2**48-1){return ce.randomInt(s,e)}var Le=s=>new Promise(e=>setTimeout(e,s)),$e=async(s,e,t)=>{if(e<=0)throw new y("out of tries",{tries:e,waitTimeInMs:t});let o=await s();return o.done===!0?o.value:(await Le(t),await $e(s,e-1,t))};var le=class{ip;method;path;body;params;query;headers;cookies;authUser=null;constructor({ip:e,body:t,cookies:o,params:n,query:r,method:c,path:u,headers:h,files:l}){this.ip=e,this.method=c,this.path=u,this.params=n,this.cookies=o,this.headers=h,this.query=X(r),this.body=Object.assign(X(t),l)}pipe(e,t={}){return new P({...t,piped:!0,body:e})}res(e){return new P({...e,piped:!1})}error(e){return new P({...e,piped:!1})}},P=class{body;headers;cookies;status;contentType;piped;constructor({body:e,status:t=200,headers:o={},cookies:n={},piped:r=!1,contentType:c="application/json"}){this.body=e,this.status=t,this.contentType=c,this.headers=o,this.cookies=n,this.piped=r,this.piped||(this.headers["Content-Type"]=c)}get cookieValues(){return Object.fromEntries(Object.entries(this.cookies).map(([e,t])=>[e,t]))}set cookieValues(e){Object.entries(e).forEach(([t,o])=>{this.cookies[t]&&(this.cookies[t].value=o)})}};import"http2";var A=class{static async process(e,t){if(e.length===0)return null;let o;for(let n of e)try{return await n.parse(t)}catch(r){o=r}throw o instanceof C?o:new $("failed to parse auth user",o)}};var de=class extends A{headerName;constructor(e){super(),this.headerName=e}async parse(e){let t=e[this.headerName];if(!t||typeof t!="string")throw new E;return this.verify(t)}routeSecuritySchemeName(){return this.headerName}};import Ve from"@fastify/cookie";import Y from"jsonwebtoken";var V=class extends A{options;constructor(e){super(),this.options=e}#e(e){return`${this.options.storagePrefix??""}${e}`}async createToken(e){let t=Y.sign(e,this.options.signingKey,{expiresIn:this.options.storageTTL});return await this.store(this.#e(e.id),t,this.options.storageTTL),t}async parse(e){try{let t=await this.parseHeader(e),o=Y.verify(t,this.options.signingKey);if(!o)throw new E;if(this.options.enforceSingleSession){let n=await this.retrieve(this.#e(o.id));if(t&&t!==n)throw new B}return o}catch(t){throw t instanceof B?t:t instanceof Y.TokenExpiredError?new B(void 0,t):new E(void 0,t)}}async retrieveFor(e){return this.retrieve(this.#e(e))}async deleteFor(e){await this.delete(this.#e(e))}},fe=class extends V{options;constructor(e){super(e),this.options=e}async parseHeader(e){let t=e[this.options.headerName];if(!t||typeof t!="string")throw new E;return t.startsWith("Bearer ")?t.slice(7):t}routeSecuritySchemeName(){return this.options.headerName}},ye=class extends V{options;constructor(e){super(e),this.options=e}async parseHeader(e){let o=(Ve.parse(e.cookie||"")??{})[this.options.cookieName];if(!o||typeof o!="string")throw new E;return o}routeSecuritySchemeName(){return`cookie:${this.options.cookieName}`}};import{match as Ge}from"path-to-regexp";var Ke="__listener_emitter",he="*",G=class{constructor(e,t){this.config=t;this.socketInstance=e,this.#n(),D.on("setup",()=>{let o=t.eventBus?.stream(Ke,{fanout:!0});this.#o=o?o.publish:async n=>{e.to(n.channel).emit(n.channel,n)},o?.subscribe(async n=>{e.to(n.channel).emit(n.channel,n)})})}socketInstance;#e={onConnect:async()=>{},onDisconnect:async()=>{}};#t={};#o=async()=>{};async created(e,t,o){await this.#s(e,"created",{after:t.toJSON(),before:null},o)}async updated(e,{after:t,before:o},n){await this.#s(e,"updated",{after:t.toJSON(),before:o.toJSON()},n)}async deleted(e,t,o){await this.#s(e,"deleted",{before:t.toJSON(),after:null},o)}async#s(e,t,{before:o,after:n},r){let c=Array.isArray(r)?r:[r??he],u=e.flatMap(h=>c.map(l=>`${l}:${h}`));await Promise.all(u.map(async h=>this.#o({channel:h,type:t,before:o,after:n})))}set connectionCallbacks(e){this.#e=e,this.#n()}register(e,t){return this.#t[e]=t,this.#t[e+"/:id"]=t,this}#r(e){let t=r=>Ge(r)(e),o=Object.keys(this.#t).find(t)??null;if(!o)return null;let n=t(o);return n?{config:this.#t[o],params:n.params}:null}#n=()=>{this.socketInstance.removeAllListeners("connection"),this.socketInstance.on("connection",async e=>{let t=e.id,o=await A.process(this.config.socketsAuthMethods,e.handshake.headers).catch(()=>null);e.on("leave",async(n,r)=>n.channel?(e.leave(n.channel),typeof r=="function"&&r({code:m.Ok,message:"",channel:n.channel})):typeof r=="function"&&r({code:m.ValidationError,message:"channel is required",channel:""})),e.on("join",async(n,r)=>{if(!n.channel)return typeof r=="function"&&r({code:m.ValidationError,message:"channel is required",channel:""});let c=n.channel,u=this.#r(c)??null;if(!u)return typeof r=="function"&&r({code:m.BadRequest,message:"unknown channel",channel:c});let l=`${await u.config({channel:c,user:o},u.params,n.query??{})??he}:${c}`;return e.join(l),typeof r=="function"&&r({code:m.Ok,message:"",channel:l})}),o&&await this.#e.onConnect(o.id,t),e.on("disconnect",async()=>{o&&await this.#e.onDisconnect(o.id,t)})})}};var ms=()=>i.object({port:i.number(),cors:i.optional(i.object({origin:i.optional(i.or([i.array(i.string()),i.is(!0)])),methods:i.optional(i.array(i.in(Object.values(v)))),credentials:i.optional(i.boolean())})),eventBus:i.optional(i.instanceOf(ee)),publicPath:i.optional(i.string()),healthPath:i.optional(i.string()),openapi:i.defaults(i.object({docsVersion:i.defaults(i.string(),"1.0.0"),docsBaseUrl:i.defaults(i.array(i.string()),["/"]),docsPath:i.defaults(i.string(),"/__docs")}),{}),requests:i.defaults(i.object({log:i.defaults(i.boolean(),!0),rateLimit:i.defaults(i.object({enabled:i.defaults(i.boolean(),!1),periodInMs:i.defaults(i.number(),3600*1e3),limit:i.defaults(i.number(),5e3)}),{}),slowdown:i.defaults(i.object({enabled:i.defaults(i.boolean(),!1),periodInMs:i.defaults(i.number(),600*1e3),delayAfter:i.defaults(i.number(),2e3),delayInMs:i.defaults(i.number(),500)}),{})}),{}),socketsAuthMethods:i.defaults(i.array(i.instanceOf(A)),[])}),Ue=Object.entries(m).filter(([,s])=>s>399).map(([s,e])=>({status:e,contentType:"application/json",pipe:i.meta(i.array(i.object({message:i.string(),field:i.optional(i.string())})),{$refId:`Errors.${s}Response`,description:`${s} Response`})})),me=class{socket;cors;#e;#t;#o;#s=[];#r=new Set;setup(e,t){this.#e=e,this.#o=t,this.cors={origin:t.cors?.origin?(n,r)=>r(null,!0):t.cors?.origin,methods:(t.cors?.methods??Object.values(v)).filter(n=>n!==v.options).map(n=>n.toUpperCase()),credentials:t.cors?.credentials},this.#t=oe(t);let o=new Fe(e,{cors:this.cors});this.socket=new G(o,t),this.addRouter(this.#t.router)}addRouter(...e){e.map(t=>t.routes).forEach(t=>this.addRoute(...t))}addRoute(...e){e.forEach(t=>{this.#s.push(async()=>{let{method:o,path:n,schema:r={},onError:c,middlewares:u=[],responseMiddlewares:h=[]}=t,l=`(${o.toUpperCase()}) ${this.#t.cleanPath(n)}`;if(this.#r.has(l))throw new y(`Route key ${l} already registered. All route keys must be unique`,{route:t,key:l});u.forEach(w=>w.onSetup?.(t)),c?.onSetup?.(t),h.forEach(w=>w.onSetup?.(t));let{validateRequest:R,validateResponse:g,jsonSchema:k}=this.#n(o,r);this.#r.add(l),await this.#t.register(t,k),this.registerRoute(o,this.#t.cleanPath(n),async(w,S)=>{let a=await R(await this.parseRequest(w));try{for(let f of u)await f.cb(a);let p=await t.handler(a),d=p instanceof P?p:new P({body:p,status:m.Ok,headers:{},piped:!1});for(let f of h)await f.cb(a,d);return await this.handleResponse(S,await g(d))}catch(p){if(c?.cb){let d=await c.cb(a,p),f=d instanceof P?d:new P({body:d,status:m.BadRequest,headers:{}});return await this.handleResponse(S,await g(f))}throw p}})})})}test(){return Je(this.#e)}async start(){let e=this.#o,t=D.get(),{app:o}=t.settings;e.healthPath&&this.addRoute({method:v.get,path:e.healthPath,handler:async r=>r.res({body:`${t.id}(${o.name}) service running`,contentType:"text/plain"})}),await Promise.all(this.#s.map(r=>r())),this.registerNotFoundHandler(async r=>{let c=await this.parseRequest(r);throw new W(`Route ${c.path} not found`)}),this.registerErrorHandler(async(r,c,u)=>{r instanceof y||D.get().log.error({error:r},"Uncaught error in route handler");let h=r instanceof C?new P({body:r.serializedErrors,status:r.statusCode}):r instanceof y?new P({body:[{message:r.message}],status:m.BadRequest}):new P({body:[{message:"Something went wrong",data:r.message}],status:m.BadRequest});return await this.handleResponse(u,h)});let n=await this.startServer(e.port);return n&&D.get().log.info(`${t.id}(${o.name}) service listening on port ${e.port}`),n}#n(e,t){let o=t?.defaultStatusCode??m.Ok,n=t?.defaultContentType??"application/json",r=o,c=n,u={response:{},request:{}},h={},l={};[{key:"params",type:"request"},{key:"headers",type:"request"},{key:"cookies",type:"request"},{key:"query",type:"request"},{key:"body",type:"request",skip:![v.post,v.put,v.patch].includes(e)},{key:"response",type:"response"},{key:"responseHeaders",type:"response"},{key:"responseCookies",type:"response"}].forEach(a=>{let p=t[a.key]??i.any();if(!a.skip&&(a.type==="request"&&(h[a.key]=p,u.request[a.key]=i.schema(p)),a.type==="response")){let d=Ue.concat({status:o,contentType:c,pipe:p});l[a.key]=i.any().pipe(f=>{let H=d.find(b=>b.status===r)?.pipe;if(!H)throw We.root(`schema not defined for status code: ${r}`,f);let x=i.validate(H,f);if(!x.valid)throw x.error;return x.value}),u.response[a.key]=d.map(f=>({status:f.status,contentType:f.contentType,schema:i.schema(f.pipe)}))}});let g=i.object(h);i.compile(g,{allErrors:!0});let k=i.object(l);return i.compile(k,{allErrors:!0}),{jsonSchema:u,validateRequest:async a=>{if(!Object.keys(h))return a;let p=F.run(a,()=>i.validate(g,{params:a.params,headers:a.headers,query:a.query,body:a.body,cookies:a.cookies}));if(!p.valid)throw K(p.error);return a.params=p.value.params,a.headers=p.value.headers,a.query=p.value.query,a.body=p.value.body,a.cookies=p.value.cookies,a},validateResponse:async a=>{if(!Object.keys(l))return a;r=a.status,c=a.contentType;let p=J.run(a,()=>i.validate(k,{responseHeaders:a.headers,responseCookies:Object.fromEntries(Object.entries(a.cookies).map(([d,f])=>[d,f.value])),response:a.body}));if(!p.valid)throw K(p.error);return a.body=p.value.response,a.headers=p.value.responseHeaders,a.cookieValues=p.value.responseCookies,a}}}};var xs=s=>te(async e=>{if(e.authUser=await A.process(s,e.headers),!e.authUser)throw new E},e=>{e.security??=[];for(let t of s){let o=t.routeSecuritySchemeName();o&&e.security.push({[o]:[]})}e.descriptions??=[],e.descriptions.push("Requires a valid means of authentication.")});var $=class extends C{statusCode=m.BadRequest;constructor(e,t){super(e,[{message:e}],t)}};var E=class extends C{statusCode=m.NotAuthenticated;constructor(e="Not authenticated",t){super(e,[{message:e}],t)}};var ge=class extends C{statusCode=m.NotAuthorized;constructor(e="Not authorized",t){super(e,[{message:e}],t)}};var W=class extends C{statusCode=m.NotFound;constructor(e="Not found",t){super(e,[{message:e}],t)}};var B=class extends C{statusCode=m.TokenExpired;constructor(e="Token expired",t){super(e,[{message:e}],t)}};var U=class extends C{statusCode=m.ValidationError;constructor(e,t){super("Unprocessable Entity",e.flatMap(({field:o,messages:n})=>n.map(r=>({message:r,field:o}))),t)}};function Re(s,e){for(let t of e.after)if(!s.some(o=>o.class===t)){let o=t.name||"unknown",n=e.class?.name||"anonymous";throw new Error(`Missing dependency: ${n} declares after: [${o}], but ${o} is not registered`)}if(e.class){let t=[...s,e];ze(t)}s.push(e)}function ze(s){let e=new Map;for(let r of s){if(!r.class)continue;let c=e.get(r.class);if(c)for(let u of r.after)c.includes(u)||c.push(u);else e.set(r.class,[...r.after])}let t=new Set,o=new Set;function n(r,c){if(o.has(r)){let u=c.indexOf(r),l=[...c.slice(u),r].map(R=>R.name||"unknown");throw new Error(`Cycle detected: ${l.join(" \u2192 ")}`)}if(!t.has(r)){o.add(r),c.push(r);for(let u of e.get(r)??[])n(u,c);c.pop(),o.delete(r),t.add(r)}}for(let r of e.keys())n(r,[])}function _e(s,e=!1){if(s.length===0)return[];let t=new Map,o=[];for(let l of s)if(l.class){let R=t.get(l.class);R?R.push(l):t.set(l.class,[l])}else o.push(l);let n=[...t.keys()],r=new Map,c=new Map;for(let l of n)r.set(l,0),c.set(l,[]);for(let l of s)if(l.class)for(let R of l.after){let[g,k]=e?[l.class,R]:[R,l.class],w=c.get(g);w.includes(k)||(w.push(k),r.set(k,r.get(k)+1))}let u=[],h=n.filter(l=>r.get(l)===0);for(;h.length>0;){let l=[],R=[];for(let g of h)l.push(...t.get(g)??[]);u.push(l);for(let g of h)for(let k of c.get(g)??[]){let w=r.get(k)-1;r.set(k,w),w===0&&R.push(k)}h=R}if(o.length>0){let l=o.filter(g=>g.after.length>0),R=o.filter(g=>g.after.length===0);if(l.length>0){let g=-1;for(let w of l)for(let S of w.after){let a=u.findIndex(p=>p.some(d=>d.class===S));a>g&&(g=a)}let k=g+1;k<u.length?u[k].push(...l):u.push(l)}R.length>0&&(u.length>0?u[u.length-1].push(...R):u.push(R))}return u}async function z(s,e=o=>{throw o},t=!1){let o=_e(s,t);for(let n of o)await Promise.all(n.map(async r=>{try{return typeof r.cb=="function"?await r.cb():await r.cb}catch(c){return e(c instanceof Error?c:new Error(`${c}`))}}))}import{v as T}from"valleyed";var be=()=>T.object({app:T.object({name:T.string()}),log:T.defaults(T.object({level:T.defaults(T.in(["fatal","error","warn","info","debug","trace","silent"]),"info")}),{}),utils:T.defaults(T.object({hashSaltRounds:T.defaults(T.number(),10),paginationDefaultLimit:T.defaults(T.number(),100),maxFileUploadSizeInMb:T.defaults(T.number(),500)}),{})});var D=class s{static#e;static#t;static#o={};settings;log;constructor(e){s.#t=this,this.settings=Object.freeze(e),this.log=I({level:this.settings.log.level,serializers:{err:I.stdSerializers.err,error:I.stdSerializers.err,req:I.stdSerializers.req,res:I.stdSerializers.res},mixin:()=>({instanceId:s.#e})}),s.#s()}alias(e){if(s.#e!==void 0)return s.crash(new y("Instance already has an alias",{}));s.#e=e}get id(){return s.#e===void 0?s.crash(new y("Instance doesnt have an alias yet",{})):s.#e}getScopedName(e,t="."){return[this.settings.app.name,e].join(t)}async start(){try{await z(s.#o.setup??[]),await z(s.#o.start??[])}catch(e){s.crash(new y("Error starting instance",{},e))}}static envs(e){let t=ke.validate(e,process.env);return t.valid||s.crash(new y(`Environment variables are not valid
|
|
30
|
+
${t.error.toString()}`,{messages:t.error.messages})),t.value}static create(e){if(s.#t)return s.crash(new y("Instance has been initialized already",{}));let t=ke.validate(be(),e);return t.valid||s.crash(new y(`Settings are not valid
|
|
31
|
+
${t.error.toString()}`,{messages:t.error.messages})),new s(t.value)}static get(){return s.#t?s.#t:s.crash(new y("Has not been initialized. Make sure an instance has been created before you get an instance",{}))}static maybeGet(){return s.#t}static on(e,t,o){s.#o[e]??=[];let n={cb:t,class:o?.class,after:o?.after??[]};Re(s.#o[e],n)}static#s(){Object.entries({SIGHUP:1,SIGINT:2,SIGTERM:15}).forEach(([t,o])=>{process.on(t,async()=>{await z(s.#o.close??[],()=>{},!0),process.exit(128+o)})})}static resolveBeforeCrash(e){let t=e();return s.on("close",async()=>await t),t}static crash(e){console.error(e),process.exit(1)}static createId(e){return`${e?.prefix??""}${Qe(e?.time?.getTime())}`}};var Ce=s=>O.array(O.file(s).pipe(e=>{let t=`is larger than allowed limit of ${D.get().settings.utils.maxFileUploadSizeInMb}mb`;if(e?!e.isTruncated:!0)return e;throw Xe.root(t,e)})),Ye=s=>O.define(O.compile(Ce(s).pipe(O.min(1,"no file provided")).pipe(e=>e[0])),{schema:()=>({type:"string",format:"binary"})}),Ze=s=>O.define(O.compile(Ce(s)),{schema:()=>({type:"string",format:"binary"})}),F=new xe,J=new xe,et=s=>O.define(e=>{let t=F.getStore();if(!t)throw new Error("Request not found in context");let o=O.validate(s(t),e);return o.valid?o.value:o.error}),tt=s=>O.define(e=>{let t=J.getStore();if(!t)throw new Error("Response not found in context");let o=O.validate(s(t),e);return o.valid?o.value:o.error});import{v as st}from"valleyed";function K(s){let e=s.messages.reduce((t,{path:o="",message:n})=>(t[o]?t[o].messages.push(n):t[o]={field:o,messages:[n]},t),{});return new U(Object.values(e))}function ko(s,e){let t=st.validate(s,e);if(t.valid)return t.value;throw K(t.error)}export{y as a,C as b,we as c,K as d,ko as e,v as f,m as g,te as h,at as i,it as j,j as k,ae as l,Ct as m,pe as n,Ie as o,X as p,Pt as q,ue as r,Le as s,$e as t,le as u,P as v,A as w,de as x,V as y,fe as z,ye as A,ms as B,me as C,xs as D,$ as E,E as F,ge as G,W as H,B as I,U as J,D as K};
|
|
32
|
+
//# sourceMappingURL=chunk-LTDVZJYJ.min.mjs.map
|