orcaq 1.1.1 → 1.1.3
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{BvUhrUEH.js → 5oARMrld.js} +1 -1
- package/.output/public/_nuxt/{B7HEMfgt.js → 9sDqz0uT.js} +1 -1
- package/.output/public/_nuxt/{C1jMZ4hc.js → B-4cXhNx.js} +1 -1
- package/.output/public/_nuxt/{DhKwXzSk.js → BC6CdfCG.js} +1 -1
- package/.output/public/_nuxt/BCAMWuzu.js +9 -0
- package/.output/public/_nuxt/{DESYlybj.js → BG-rJefG.js} +1 -1
- package/.output/public/_nuxt/BKFPmrcv.js +1 -0
- package/.output/public/_nuxt/{BdDEVolW.js → BMLhg7hE.js} +1 -1
- package/.output/public/_nuxt/BVUHbgGW.js +27 -0
- package/.output/public/_nuxt/{CybtvDjH.js → BYOPXIhP.js} +1 -1
- package/.output/public/_nuxt/{CvcedJeQ.js → BYxQJ0gE.js} +1 -1
- package/.output/public/_nuxt/{CrLqg4B0.js → BZ4ThSRp.js} +1 -1
- package/.output/public/_nuxt/{D60Pzl_V.js → BZmDBfmV.js} +1 -1
- package/.output/public/_nuxt/{CREZ9f0O.js → B_ERKujF.js} +4 -4
- package/.output/public/_nuxt/{ZObQcd0X.js → BccuQbKA.js} +1 -1
- package/.output/public/_nuxt/{DHnNoguE.js → BcyZ-eCi.js} +1 -1
- package/.output/public/_nuxt/BdZsZgcB.js +1 -0
- package/.output/public/_nuxt/BigePTMZ.js +1 -0
- package/.output/public/_nuxt/BkN-uAef.js +1 -0
- package/.output/public/_nuxt/BmAp-sfn.js +1 -0
- package/.output/public/_nuxt/BqHKqsJ5.js +12 -0
- package/.output/public/_nuxt/BseVuOZ1.js +1 -0
- package/.output/public/_nuxt/BtuY54_l.js +1 -0
- package/.output/public/_nuxt/{DWBoXz89.js → Buh0pI3n.js} +1 -1
- package/.output/public/_nuxt/{B84SvUzr.js → BzVvHKKC.js} +1 -1
- package/.output/public/_nuxt/{ByOuUnNS.js → BzywwPw6.js} +1 -1
- package/.output/public/_nuxt/BzzgEvr9.js +7 -0
- package/.output/public/_nuxt/C-I81xfB.js +1 -0
- package/.output/public/_nuxt/C-Pa1rIR.js +1 -0
- package/.output/public/_nuxt/{DNdM2ZyK.js → C-pX1zRI.js} +1 -1
- package/.output/public/_nuxt/{C5bgdIOp.js → C0vscAQB.js} +1 -1
- package/.output/public/_nuxt/C4FrpL8k.js +1 -0
- package/.output/public/_nuxt/{Ci43mke5.js → C4zYnWdF.js} +1 -1
- package/.output/public/_nuxt/C9kgALYc.js +1 -0
- package/.output/public/_nuxt/{B4ebLeWY.js → CCmd8DpQ.js} +3 -3
- package/.output/public/_nuxt/{DXp9fCib.js → CGq9Twnj.js} +1 -1
- package/.output/public/_nuxt/{TuKV3Ilv.js → CHMlsxJw.js} +1 -1
- package/.output/public/_nuxt/CLQzuV82.js +1 -0
- package/.output/public/_nuxt/{BnFDcr74.js → CL_1HDtg.js} +1 -1
- package/.output/public/_nuxt/CRqiHVA4.js +1 -0
- package/.output/public/_nuxt/{DJqZzQsX.js → CS4EJV3B.js} +1 -1
- package/.output/public/_nuxt/CS5akSNT.js +1 -0
- package/.output/public/_nuxt/{B6hH0qos.js → CSExCj8O.js} +1 -1
- package/.output/public/_nuxt/{YJvNy3iu.js → CY_CG0AU.js} +27 -27
- package/.output/public/_nuxt/{b_MfGg1c.js → CbHZwHBV.js} +1 -1
- package/.output/public/_nuxt/Cbo6GmdE.js +1 -0
- package/.output/public/_nuxt/Cf460dGA.js +3867 -0
- package/.output/public/_nuxt/CfseWBL0.js +1 -0
- package/.output/public/_nuxt/{DNNdcUH4.js → Ch0I4juX.js} +1 -1
- package/.output/public/_nuxt/Chvs1m1n.js +1 -0
- package/.output/public/_nuxt/Chx1IK9D.js +1 -0
- package/.output/public/_nuxt/{BGVGiigU.js → CjpXgncp.js} +1 -1
- package/.output/public/_nuxt/CkjXKCQH.js +1 -0
- package/.output/public/_nuxt/Ckry8tuC.js +2 -0
- package/.output/public/_nuxt/{PUe8M07P.js → CmOZ0DCP.js} +1 -1
- package/.output/public/_nuxt/{H5m89x1B.js → CmjR7OTc.js} +1 -1
- package/.output/public/_nuxt/Co7e2XML.js +1 -0
- package/.output/public/_nuxt/CqkctA6I.js +67 -0
- package/.output/public/_nuxt/{CEvNlevo.js → CtB2-SFY.js} +1 -1
- package/.output/public/_nuxt/CtCx-4nJ.js +1 -0
- package/.output/public/_nuxt/CtkhwZY7.js +1 -0
- package/.output/public/_nuxt/Cty7uMrC.js +1 -0
- package/.output/public/_nuxt/CvFjsYJZ.js +1 -0
- package/.output/public/_nuxt/{D9dEqMyH.js → Czr647QE.js} +1 -1
- package/.output/public/_nuxt/{4by6-f6q.js → D0lW43G8.js} +315 -313
- package/.output/public/_nuxt/{DFM-aCBX.js → D28ykMUi.js} +1 -1
- package/.output/public/_nuxt/{DaKikgWm.js → DA4Xn6lm.js} +1 -1
- package/.output/public/_nuxt/{CS5ItJPR.js → DChDHsIe.js} +1 -1
- package/.output/public/_nuxt/{DQT4eICL.js → DJBO_9pO.js} +1 -1
- package/.output/public/_nuxt/DJXB1Li8.js +1 -0
- package/.output/public/_nuxt/{BprXyYdv.js → DKLk0T0H.js} +1 -1
- package/.output/public/_nuxt/{F5lCgNdb.js → DLBsdU7G.js} +1 -1
- package/.output/public/_nuxt/DNB4Xmyo.js +37 -0
- package/.output/public/_nuxt/DOAixkpJ.js +1 -0
- package/.output/public/_nuxt/{Cx6s86aR.js → DPq8O9CC.js} +1 -1
- package/.output/public/_nuxt/{Bq7otXBA.js → DQdA5Twt.js} +1 -1
- package/.output/public/_nuxt/{BeNILdbT.js → DRh-06Hb.js} +1 -1
- package/.output/public/_nuxt/DTvJImVU.js +1 -0
- package/.output/public/_nuxt/DVkCRFXi.js +1 -0
- package/.output/public/_nuxt/DX8ecA59.js +1 -0
- package/.output/public/_nuxt/DakKehZj.js +1 -0
- package/.output/public/_nuxt/Db3rTgnd.js +1 -0
- package/.output/public/_nuxt/DfyynWBR.js +1 -0
- package/.output/public/_nuxt/DgJOougY.js +1 -0
- package/.output/public/_nuxt/DkQCknMw.js +1 -0
- package/.output/public/_nuxt/{CA99KAte.js → DpBeiFQV.js} +2 -2
- package/.output/public/_nuxt/{DaMyovpr.js → DrdbRRXx.js} +1 -1
- package/.output/public/_nuxt/Dtl3qje7.js +1 -0
- package/.output/public/_nuxt/{DkadXn5U.js → Du5Ka6uI.js} +1 -1
- package/.output/public/_nuxt/Dunt8-TF.js +1 -0
- package/.output/public/_nuxt/{minLMBmY.js → DvWEWtFg.js} +1 -1
- package/.output/public/_nuxt/{Cvq07PgE.js → KynNdNgX.js} +1 -1
- package/.output/public/_nuxt/MWrJVKEf.js +2 -0
- package/.output/public/_nuxt/{Dpl6-lqE.js → NYpsF1lW.js} +1 -1
- package/.output/public/_nuxt/{BmU9CNkM.js → Nof0nVJ6.js} +1 -1
- package/.output/public/_nuxt/{BJYf67_H.js → Ohrg3hU7.js} +1 -1
- package/.output/public/_nuxt/Rrce0BXL.js +22 -0
- package/.output/public/_nuxt/VNOocds9.js +1 -0
- package/.output/public/_nuxt/Y-MEKhtd.js +1 -0
- package/.output/public/_nuxt/{CR6_eO9a.js → YdOCcCRS.js} +1 -1
- package/.output/public/_nuxt/bYQCSC5-.js +1 -0
- package/.output/public/_nuxt/bkzIFcLw.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/ad11b978-8fdd-4bb2-9b38-1d6fe93f994e.json +1 -0
- package/.output/public/_nuxt/default.B0xlD4Sl.css +1 -0
- package/.output/public/_nuxt/{CKqvNpN3.js → eOeO5uM0.js} +1 -1
- package/.output/public/_nuxt/entry.DxCQuGXb.css +1 -0
- package/.output/public/_nuxt/g9ZMnTLJ.js +1 -0
- package/.output/public/_nuxt/{TEF-nDfP.js → hIbRoJ89.js} +1 -1
- package/.output/public/_nuxt/{BxDrCsPf.js → j23gQsG7.js} +1 -1
- package/.output/public/_nuxt/klVlxnpt.js +1 -0
- package/.output/public/_nuxt/qRiDKEr7.js +1 -0
- package/.output/public/_nuxt/syq5mCJi.js +1 -0
- package/.output/public/_nuxt/v41yYOa9.js +10 -0
- package/.output/public/_nuxt/{CE8aasoy.js → vaJvtND9.js} +1 -1
- package/.output/public/_nuxt/wodl4bLW.js +2 -0
- package/.output/server/chunks/_/create-adapter.mjs +2 -0
- package/.output/server/chunks/_/create-adapter.mjs.map +1 -1
- package/.output/server/chunks/_/db-connection.mjs +500 -19
- package/.output/server/chunks/_/db-connection.mjs.map +1 -1
- package/.output/server/chunks/_/instance-insights.factory.mjs +2037 -14
- package/.output/server/chunks/_/instance-insights.factory.mjs.map +1 -1
- package/.output/server/chunks/_/metadata.factory.mjs +302 -22
- package/.output/server/chunks/_/metadata.factory.mjs.map +1 -1
- package/.output/server/chunks/_/redis-browser.service.mjs +513 -0
- package/.output/server/chunks/_/redis-browser.service.mjs.map +1 -0
- package/.output/server/chunks/_/redis-instance-insights.service.mjs +442 -0
- package/.output/server/chunks/_/redis-instance-insights.service.mjs.map +1 -0
- package/.output/server/chunks/_/redis-pubsub.service.mjs +227 -0
- package/.output/server/chunks/_/redis-pubsub.service.mjs.map +1 -0
- package/.output/server/chunks/_/redis.client.mjs +129 -0
- package/.output/server/chunks/_/redis.client.mjs.map +1 -0
- package/.output/server/chunks/_/tables.factory.mjs +20 -8
- package/.output/server/chunks/_/tables.factory.mjs.map +1 -1
- package/.output/server/chunks/build/client.manifest.mjs +730 -614
- package/.output/server/chunks/build/client.manifest.mjs.map +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +722 -613
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/api/ai/agent.mjs +4 -1
- package/.output/server/chunks/routes/api/ai/agent.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/export-database.mjs +4 -1
- package/.output/server/chunks/routes/api/database-export/export-database.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs +4 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId/download.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs +4 -1
- package/.output/server/chunks/routes/api/database-export/jobs/_jobId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-import/import-database.mjs +4 -1
- package/.output/server/chunks/routes/api/database-import/import-database.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs +4 -1
- package/.output/server/chunks/routes/api/database-import/jobs/_jobId_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/create-role.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/create-role.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/delete-role.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/delete-role.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases-with-permissions.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases-with-permissions.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-databases.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-permissions.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-permissions.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-role-inheritance.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-role-inheritance.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-role.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-role.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-roles.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-roles.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-schema-objects.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-schema-objects.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/get-schemas.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/get-schemas.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/grant-bulk-permissions.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/grant-bulk-permissions.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/grant-permission.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/grant-permission.mjs.map +1 -1
- package/.output/server/chunks/routes/api/database-roles/revoke-permission.mjs +4 -1
- package/.output/server/chunks/routes/api/database-roles/revoke-permission.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/definition.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/definition.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/delete.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/delete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/overview.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/overview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/rename.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/rename.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/signature.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/signature.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/functions/update.post.mjs +4 -1
- package/.output/server/chunks/routes/api/functions/update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +5 -2
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/cancel-query.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/cancel-query.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/configuration.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/configuration.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/dashboard.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/dashboard.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/drop-slot.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/drop-slot.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/replication.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/replication.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/state.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/state.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/terminate-connection.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/terminate-connection.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/toggle-slot-status.post.mjs +5 -2
- package/.output/server/chunks/routes/api/instance-insights/toggle-slot-status.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/instance-insights/view.post.mjs +66 -0
- package/.output/server/chunks/routes/api/instance-insights/view.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/managment-connection/health-check.mjs +7 -1
- package/.output/server/chunks/routes/api/managment-connection/health-check.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metadata/erd.post.mjs +7 -2
- package/.output/server/chunks/routes/api/metadata/erd.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metadata/meta-data.post.mjs +6 -1
- package/.output/server/chunks/routes/api/metadata/meta-data.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metadata/reverse-schemas.post.mjs +7 -2
- package/.output/server/chunks/routes/api/metadata/reverse-schemas.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics/monitor.post.mjs +4 -1
- package/.output/server/chunks/routes/api/metrics/monitor.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/query/execute.post.mjs +6 -1
- package/.output/server/chunks/routes/api/query/execute.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/query/raw-execute-stream.post.mjs +15 -3
- package/.output/server/chunks/routes/api/query/raw-execute-stream.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/query/raw-execute.post.mjs +8 -1
- package/.output/server/chunks/routes/api/query/raw-execute.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/redis/browser/databases.post.mjs +25 -0
- package/.output/server/chunks/routes/api/redis/browser/databases.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/browser/value.patch.mjs +39 -0
- package/.output/server/chunks/routes/api/redis/browser/value.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/browser/value.post.mjs +25 -0
- package/.output/server/chunks/routes/api/redis/browser/value.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/index.post.mjs +37 -0
- package/.output/server/chunks/routes/api/redis/index.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/kill-client.post.mjs +38 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/kill-client.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/overview.post.mjs +35 -0
- package/.output/server/chunks/routes/api/redis/instance-insights/overview.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/messages.post.mjs +24 -0
- package/.output/server/chunks/routes/api/redis/pubsub/messages.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/overview.post.mjs +38 -0
- package/.output/server/chunks/routes/api/redis/pubsub/overview.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/publish.post.mjs +39 -0
- package/.output/server/chunks/routes/api/redis/pubsub/publish.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/subscribe.post.mjs +39 -0
- package/.output/server/chunks/routes/api/redis/pubsub/subscribe.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/pubsub/unsubscribe.post.mjs +24 -0
- package/.output/server/chunks/routes/api/redis/pubsub/unsubscribe.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/redis/workbench/execute.post.mjs +60 -0
- package/.output/server/chunks/routes/api/redis/workbench/execute.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs +9 -5
- package/.output/server/chunks/routes/api/tables/bulk-delete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs +9 -5
- package/.output/server/chunks/routes/api/tables/bulk-update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/ddl.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/ddl.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/export.post.mjs +5 -2
- package/.output/server/chunks/routes/api/tables/export.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/indexes.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/indexes.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/meta.post.mjs +7 -2
- package/.output/server/chunks/routes/api/tables/meta.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/overview.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/overview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/rls.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/rls.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/rules.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/rules.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/size.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/size.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/structure.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/structure.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/tables/triggers.post.mjs +4 -1
- package/.output/server/chunks/routes/api/tables/triggers.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/definition.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/definition.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/dependencies.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/dependencies.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/explain.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/explain.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/indexes.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/indexes.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/meta.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/meta.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/views/overview.post.mjs +4 -1
- package/.output/server/chunks/routes/api/views/overview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/node_modules/@libsql/client/lib-esm/hrana.js +310 -0
- package/.output/server/node_modules/@libsql/client/lib-esm/http.js +230 -0
- package/.output/server/node_modules/@libsql/client/lib-esm/sql_cache.js +87 -0
- package/.output/server/node_modules/@libsql/client/package.json +123 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/api.js +16 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/config.js +136 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/uri.js +120 -0
- package/.output/server/node_modules/@libsql/core/lib-esm/util.js +55 -0
- package/.output/server/node_modules/@libsql/core/package.json +91 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/batch.js +271 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/byte_queue.js +45 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/client.js +13 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/cursor.js +2 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/describe.js +8 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/index.js +4 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/json/decode.js +59 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/json/encode.js +72 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/protobuf/decode.js +150 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/protobuf/encode.js +95 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/encoding/protobuf/util.js +6 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/errors.js +102 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/client.js +124 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/cursor.js +135 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/json_decode.js +62 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/json_encode.js +55 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/protobuf_decode.js +44 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/protobuf_encode.js +78 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/http/stream.js +363 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/id_alloc.js +47 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/index.js +42 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/libsql_url.js +75 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/queue.js +26 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/queue_microtask.js +13 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/result.js +48 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/json_decode.js +106 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/json_encode.js +71 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/protobuf_decode.js +115 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/shared/protobuf_encode.js +85 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/sql.js +46 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/stmt.js +76 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/stream.js +57 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/util.js +4 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/value.js +83 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/client.js +318 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/cursor.js +80 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/json_decode.js +74 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/json_encode.js +77 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/protobuf_decode.js +60 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/protobuf_encode.js +115 -0
- package/.output/server/node_modules/@libsql/hrana-client/lib-esm/ws/stream.js +211 -0
- package/.output/server/node_modules/@libsql/hrana-client/package.json +60 -0
- package/.output/server/node_modules/@libsql/isomorphic-fetch/node.js +6 -0
- package/.output/server/node_modules/@libsql/isomorphic-fetch/package.json +51 -0
- package/.output/server/node_modules/@libsql/isomorphic-ws/node.mjs +2 -0
- package/.output/server/node_modules/@libsql/isomorphic-ws/package.json +53 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/ADD.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/CARD.js +16 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/EXISTS.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/INSERT.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/LOADCHUNK.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/MADD.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/MEXISTS.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/RESERVE.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/SCANDUMP.js +23 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/helpers.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/bloom/index.js +53 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INCRBY.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INITBYDIM.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/INITBYPROB.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/MERGE.js +33 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/QUERY.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/count-min-sketch/index.js +26 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/ADD.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/ADDNX.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/COUNT.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/DEL.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/EXISTS.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/INSERT.js +34 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/INSERTNX.js +44 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/LOADCHUNK.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/RESERVE.js +31 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/SCANDUMP.js +23 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/cuckoo/index.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/index.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/ADD.js +20 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/BYRANK.js +26 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/BYREVRANK.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/CDF.js +21 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/CREATE.js +21 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/INFO.js +22 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/MAX.js +17 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/MERGE.js +27 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/MIN.js +17 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/QUANTILE.js +21 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/RANK.js +25 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/RESET.js +16 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/REVRANK.js +41 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/TRIMMED_MEAN.js +20 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/t-digest/index.js +50 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/ADD.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/COUNT.js +18 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/INCRBY.js +28 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/INFO.js +24 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/LIST.js +16 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/LIST_WITHCOUNT.js +26 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/QUERY.js +19 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/RESERVE.js +25 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/commands/top-k/index.js +32 -0
- package/.output/server/node_modules/@redis/bloom/dist/lib/index.js +9 -0
- package/.output/server/node_modules/@redis/bloom/package.json +36 -0
- package/.output/server/node_modules/@redis/client/dist/index.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/RESP/decoder.js +727 -0
- package/.output/server/node_modules/@redis/client/dist/lib/RESP/encoder.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/RESP/verbatim-string.js +12 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/credentials-provider.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/index.js +12 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/token-manager.js +184 -0
- package/.output/server/node_modules/@redis/client/dist/lib/authx/token.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/cache.js +634 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/commands-queue.js +497 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/enterprise-maintenance-manager.js +387 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/identity.js +65 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/index.js +1118 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/legacy-mode.js +119 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/linked-list.js +212 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/multi-command.js +118 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/parser.js +83 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/pool.js +373 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/pub-sub.js +351 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/socket.js +336 -0
- package/.output/server/node_modules/@redis/client/dist/lib/client/tracing.js +122 -0
- package/.output/server/node_modules/@redis/client/dist/lib/cluster/cluster-slots.js +657 -0
- package/.output/server/node_modules/@redis/client/dist/lib/cluster/index.js +425 -0
- package/.output/server/node_modules/@redis/client/dist/lib/cluster/multi-command.js +124 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commander.js +91 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_CAT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_DELUSER.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_DRYRUN.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_GENPASS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_GETUSER.js +33 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LIST.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LOAD.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LOG.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_LOG_RESET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_SAVE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_SETUSER.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_USERS.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ACL_WHOAMI.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/APPEND.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ASKING.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/AUTH.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BGREWRITEAOF.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BGSAVE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITCOUNT.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITFIELD.js +33 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITFIELD_RO.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITOP.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BITPOS.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BLMOVE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BLMPOP.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BLPOP.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BRPOP.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BRPOPLPUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BZMPOP.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BZPOPMAX.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/BZPOPMIN.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_CACHING.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_GETNAME.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_GETREDIR.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_ID.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_INFO.js +62 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_KILL.js +66 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_LIST.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_NO-EVICT.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_NO-TOUCH.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_PAUSE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_SETNAME.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKING.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKINGINFO.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLIENT_UNPAUSE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTSRANGE.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_BUMPEPOCH.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNT-FAILURE-REPORTS.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNTKEYSINSLOT.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTSRANGE.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_FAILOVER.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_FORGET.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_INFO.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_KEYSLOT.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_LINKS.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_MEET.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_MYID.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_MYSHARDID.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_NODES.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICAS.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICATE.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_RESET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SAVECONFIG.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SET-CONFIG-EPOCH.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SETSLOT.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CLUSTER_SLOTS.js +30 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_COUNT.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYSANDFLAGS.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_INFO.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COMMAND_LIST.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_GET.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_RESETSTAT.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_REWRITE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/CONFIG_SET.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/COPY.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DBSIZE.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DECR.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DECRBY.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DEL.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DELEX.js +43 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DIGEST.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/DUMP.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ECHO.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVAL.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVALSHA.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVALSHA_RO.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EVAL_RO.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXISTS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXPIRE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXPIREAT.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/EXPIRETIME.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FCALL.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FCALL_RO.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FLUSHALL.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FLUSHDB.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_DELETE.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_DUMP.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_FLUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_KILL.js +15 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST.js +38 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST_WITHCODE.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_LOAD.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_RESTORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/FUNCTION_STATS.js +47 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOADD.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEODIST.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOHASH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOPOS.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO_WITH.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_STORE.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_WITH.js +36 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO.js +45 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO_WITH.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_STORE.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEORADIUS_WITH.js +56 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOSEARCH.js +54 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOSEARCHSTORE.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GEOSEARCH_WITH.js +55 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GET.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETBIT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETDEL.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETEX.js +50 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETRANGE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/GETSET.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HDEL.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HELLO.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXISTS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXPIRE.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXPIREAT.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HEXPIRETIME.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGETALL.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGETDEL.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HGETEX.js +30 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HINCRBY.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HINCRBYFLOAT.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HKEYS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HLEN.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HMGET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_GET.js +131 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_RESET.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_START.js +60 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HOTKEYS_STOP.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPERSIST.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPEXPIRE.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPEXPIREAT.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPEXPIRETIME.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HPTTL.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HRANDFIELD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js +41 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSCAN.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSCAN_NOVALUES.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSET.js +55 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSETEX.js +81 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSETNX.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HSTRLEN.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HTTL.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/HVALS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INCR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INCRBY.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INCRBYFLOAT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/INFO.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/KEYS.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LASTSAVE.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_DOCTOR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_GRAPH.js +37 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_HISTOGRAM.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_HISTORY.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_LATEST.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LATENCY_RESET.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS_IDX.js +33 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS_IDX_WITHMATCHLEN.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LCS_LEN.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LINDEX.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LINSERT.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LLEN.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LMOVE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LMPOP.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LOLWUT.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOP.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOP_COUNT.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOS.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPOS_COUNT.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LPUSHX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LRANGE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LREM.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LSET.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/LTRIM.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_DOCTOR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_PURGE.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_STATS.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MEMORY_USAGE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MGET.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MIGRATE.js +48 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MODULE_LIST.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MODULE_LOAD.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MODULE_UNLOAD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MOVE.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MSET.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MSETEX.js +104 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/MSETNX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_ENCODING.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_FREQ.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_IDLETIME.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/OBJECT_REFCOUNT.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PERSIST.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PEXPIRE.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PEXPIREAT.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PEXPIRETIME.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PFADD.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PFCOUNT.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PFMERGE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PING.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PSETEX.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PTTL.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBLISH.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_CHANNELS.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMPAT.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMSUB.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_SHARDCHANNELS.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/PUBSUB_SHARDNUMSUB.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RANDOMKEY.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/READONLY.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RENAME.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RENAMENX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/REPLICAOF.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RESTORE-ASKING.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RESTORE.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ROLE.js +60 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPOP.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPOPLPUSH.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPOP_COUNT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPUSH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/RPUSHX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SADD.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCAN.js +71 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCARD.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_DEBUG.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_EXISTS.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_FLUSH.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_KILL.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SCRIPT_LOAD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SDIFF.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SDIFFSTORE.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SET.js +61 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETBIT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETEX.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETNX.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SETRANGE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SINTER.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SINTERCARD.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SINTERSTORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SISMEMBER.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SMEMBERS.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SMISMEMBER.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SMOVE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SORT.js +53 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SORT_RO.js +40 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SORT_STORE.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SPOP.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SPOP_COUNT.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SPUBLISH.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SRANDMEMBER.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SREM.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SSCAN.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/STRLEN.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SUNION.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SUNIONSTORE.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/SWAPDB.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TIME.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TOUCH.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TTL.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/TYPE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/UNLINK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VADD.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VCARD.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VDIM.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VEMB.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VEMB_RAW.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VGETATTR.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VINFO.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VLINKS.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VLINKS_WITHSCORES.js +39 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VRANDMEMBER.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VRANGE.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VREM.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VSETATTR.js +27 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VSIM.js +51 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/VSIM_WITHSCORES.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/WAIT.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XACK.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XACKDEL.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XADD.js +71 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XADD_NOMKSTREAM.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM.js +43 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js +35 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XCFGSET.js +28 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XCLAIM.js +52 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XCLAIM_JUSTID.js +31 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XDEL.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XDELEX.js +29 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_CREATE.js +29 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_DESTROY.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XGROUP_SETID.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XINFO_CONSUMERS.js +40 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XINFO_GROUPS.js +46 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XINFO_STREAM.js +72 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XLEN.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XPENDING.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XPENDING_RANGE.js +49 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XRANGE.js +50 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XREAD.js +57 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XREADGROUP.js +42 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XREVRANGE.js +49 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XSETID.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/XTRIM.js +36 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZADD.js +73 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZADD_INCR.js +36 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZCARD.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZCOUNT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZDIFF.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZDIFFSTORE.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINCRBY.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTER.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTERCARD.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTERSTORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZINTER_WITHSCORES.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZLEXCOUNT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZMPOP.js +47 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZMSCORE.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMAX.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMAX_COUNT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMIN.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZPOPMIN_COUNT.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGE.js +45 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGEBYLEX.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGESTORE.js +37 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js +22 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZRANK_WITHSCORE.js +38 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREM.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYLEX.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYRANK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZREVRANK.js +19 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZSCAN.js +26 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZSCORE.js +20 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZUNION.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZUNIONSTORE.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/ZUNION_WITHSCORES.js +21 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/generic-transformers.js +492 -0
- package/.output/server/node_modules/@redis/client/dist/lib/commands/index.js +1161 -0
- package/.output/server/node_modules/@redis/client/dist/lib/errors.js +110 -0
- package/.output/server/node_modules/@redis/client/dist/lib/lua-script.js +16 -0
- package/.output/server/node_modules/@redis/client/dist/lib/multi-command.js +48 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/client-registry.js +84 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/index.js +81 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/metrics.js +647 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/types.js +120 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/utils/error.util.js +199 -0
- package/.output/server/node_modules/@redis/client/dist/lib/opentelemetry/utils/index.js +32 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_MASTER.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_MONITOR.js +17 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_REPLICAS.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_SENTINELS.js +25 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/SENTINEL_SET.js +18 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/commands/index.js +23 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/index.js +1229 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/module.js +10 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/multi-commands.js +115 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/pub-sub-proxy.js +150 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/utils.js +98 -0
- package/.output/server/node_modules/@redis/client/dist/lib/sentinel/wait-queue.js +24 -0
- package/.output/server/node_modules/@redis/client/dist/lib/single-entry-cache.js +38 -0
- package/.output/server/node_modules/@redis/client/dist/lib/utils/digest.js +34 -0
- package/.output/server/node_modules/@redis/client/dist/package.json +52 -0
- package/.output/server/node_modules/@redis/client/package.json +52 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRAPPEND.js +26 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRINDEX.js +31 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRINSERT.js +27 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRLEN.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRPOP.js +32 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/ARRTRIM.js +22 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/CLEAR.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/DEBUG_MEMORY.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/DEL.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/FORGET.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/GET.js +24 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/MERGE.js +22 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/MGET.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/MSET.js +25 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/NUMINCRBY.js +26 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/NUMMULTBY.js +25 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/OBJKEYS.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/OBJLEN.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/SET.js +35 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/STRAPPEND.js +26 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/STRLEN.js +23 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/TOGGLE.js +20 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/TYPE.js +29 -0
- package/.output/server/node_modules/@redis/json/dist/lib/commands/index.js +91 -0
- package/.output/server/node_modules/@redis/json/dist/lib/index.js +9 -0
- package/.output/server/node_modules/@redis/json/package.json +36 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/AGGREGATE.js +212 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/AGGREGATE_WITHCURSOR.js +40 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALIASADD.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALIASDEL.js +16 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALIASUPDATE.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/ALTER.js +19 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CONFIG_GET.js +23 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CONFIG_SET.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CREATE.js +277 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CURSOR_DEL.js +17 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/CURSOR_READ.js +27 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DICTADD.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DICTDEL.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DICTDUMP.js +19 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/DROPINDEX.js +24 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/EXPLAIN.js +29 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/EXPLAINCLI.js +26 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/HYBRID.js +273 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/INFO.js +106 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/PROFILE_AGGREGATE.js +58 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/PROFILE_SEARCH.js +58 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SEARCH.js +160 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SEARCH_NOCONTENT.js +34 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SPELLCHECK.js +56 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGADD.js +28 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGDEL.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET.js +27 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET_WITHPAYLOADS.js +36 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET_WITHSCORES.js +51 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js +53 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SUGLEN.js +15 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SYNDUMP.js +27 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/SYNUPDATE.js +24 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/TAGVALS.js +20 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/_LIST.js +18 -0
- package/.output/server/node_modules/@redis/search/dist/lib/commands/index.js +125 -0
- package/.output/server/node_modules/@redis/search/dist/lib/dialect/default.js +5 -0
- package/.output/server/node_modules/@redis/search/dist/lib/index.js +17 -0
- package/.output/server/node_modules/@redis/search/package.json +37 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/ADD.js +29 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/ALTER.js +23 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/CREATE.js +24 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/CREATERULE.js +48 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/DECRBY.js +40 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/DEL.js +20 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/DELETERULE.js +17 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/GET.js +33 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/INCRBY.js +40 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/INFO.js +58 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/INFO_DEBUG.js +46 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MADD.js +20 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MGET.js +57 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MGET_SELECTED_LABELS.js +23 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MGET_WITHLABELS.js +43 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE.js +44 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_GROUPBY.js +96 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_SELECTED_LABELS.js +51 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_SELECTED_LABELS_GROUPBY.js +52 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_WITHLABELS.js +59 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MRANGE_WITHLABELS_GROUPBY.js +52 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_GROUPBY.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_SELECTED_LABELS.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_SELECTED_LABELS_GROUPBY.js +42 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_WITHLABELS.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/MREVRANGE_WITHLABELS_GROUPBY.js +41 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/QUERYINDEX.js +20 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/RANGE.js +66 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/REVRANGE.js +40 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/helpers.js +237 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/commands/index.js +113 -0
- package/.output/server/node_modules/@redis/time-series/dist/lib/index.js +17 -0
- package/.output/server/node_modules/@redis/time-series/package.json +36 -0
- package/.output/server/node_modules/cluster-key-slot/lib/index.js +166 -0
- package/.output/server/node_modules/cluster-key-slot/package.json +56 -0
- package/.output/server/node_modules/js-base64/base64.mjs +301 -0
- package/.output/server/node_modules/js-base64/package.json +43 -0
- package/.output/server/node_modules/promise-limit/index.js +88 -0
- package/.output/server/node_modules/promise-limit/package.json +39 -0
- package/.output/server/node_modules/redis/dist/index.js +77 -0
- package/.output/server/node_modules/redis/package.json +36 -0
- package/.output/server/node_modules/ws/lib/buffer-util.js +131 -0
- package/.output/server/node_modules/ws/lib/constants.js +19 -0
- package/.output/server/node_modules/ws/lib/event-target.js +292 -0
- package/.output/server/node_modules/ws/lib/extension.js +203 -0
- package/.output/server/node_modules/ws/lib/limiter.js +55 -0
- package/.output/server/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/.output/server/node_modules/ws/lib/receiver.js +706 -0
- package/.output/server/node_modules/ws/lib/sender.js +602 -0
- package/.output/server/node_modules/ws/lib/stream.js +161 -0
- package/.output/server/node_modules/ws/lib/subprotocol.js +62 -0
- package/.output/server/node_modules/ws/lib/validation.js +152 -0
- package/.output/server/node_modules/ws/lib/websocket-server.js +554 -0
- package/.output/server/node_modules/ws/lib/websocket.js +1393 -0
- package/.output/server/node_modules/ws/package.json +69 -0
- package/.output/server/node_modules/ws/wrapper.mjs +8 -0
- package/.output/server/package.json +16 -1
- package/package.json +8 -2
- package/.output/public/_nuxt/8Ppmjv9D.js +0 -1
- package/.output/public/_nuxt/B1qjkRVO.js +0 -1
- package/.output/public/_nuxt/B3KEisfc.js +0 -1
- package/.output/public/_nuxt/BDXvbRNW.js +0 -1
- package/.output/public/_nuxt/BGRcizqy.js +0 -1
- package/.output/public/_nuxt/BOK5ZFNK.js +0 -1
- package/.output/public/_nuxt/BPY2ud8g.js +0 -1
- package/.output/public/_nuxt/BSONoRG4.js +0 -2
- package/.output/public/_nuxt/BT53m-su.js +0 -1
- package/.output/public/_nuxt/BTJSh8in.js +0 -2
- package/.output/public/_nuxt/BVpt8J3a.js +0 -1
- package/.output/public/_nuxt/Bdtn2mn5.js +0 -1
- package/.output/public/_nuxt/BqyO8OjC.js +0 -3867
- package/.output/public/_nuxt/Bs1og3h1.js +0 -10
- package/.output/public/_nuxt/Bs2DgR_z.js +0 -1
- package/.output/public/_nuxt/BxrwrGYE.js +0 -1
- package/.output/public/_nuxt/By0aUn7N.js +0 -1
- package/.output/public/_nuxt/C177_GoB.js +0 -1
- package/.output/public/_nuxt/C69a9jD3.js +0 -67
- package/.output/public/_nuxt/C8AyZ3_X.js +0 -2
- package/.output/public/_nuxt/C8KplD68.js +0 -1
- package/.output/public/_nuxt/CNF1h1lI.js +0 -1
- package/.output/public/_nuxt/CcK14gfI.js +0 -1
- package/.output/public/_nuxt/CjouDEjz.js +0 -1
- package/.output/public/_nuxt/Cp5lMcfd.js +0 -1
- package/.output/public/_nuxt/CpYiq1Wv.js +0 -1
- package/.output/public/_nuxt/CwmbX4-U.js +0 -1
- package/.output/public/_nuxt/D-YUpbah.js +0 -9
- package/.output/public/_nuxt/D9BYd7AV.js +0 -1
- package/.output/public/_nuxt/DCJ49Fnq.js +0 -1
- package/.output/public/_nuxt/DeBdxlx0.js +0 -1
- package/.output/public/_nuxt/Dkikh2OC.js +0 -22
- package/.output/public/_nuxt/DlOyXrKK.js +0 -1
- package/.output/public/_nuxt/DqA_edEU.js +0 -1
- package/.output/public/_nuxt/DqxL2Lpl.js +0 -1
- package/.output/public/_nuxt/Dt3rfvTn.js +0 -1
- package/.output/public/_nuxt/Dt5h0Tys.js +0 -1
- package/.output/public/_nuxt/DwrSZ8Vj.js +0 -1
- package/.output/public/_nuxt/DwyFZZT6.js +0 -1
- package/.output/public/_nuxt/EM8J-XL1.js +0 -7
- package/.output/public/_nuxt/ESKvsKwc.js +0 -1
- package/.output/public/_nuxt/V5LvXMJl.js +0 -1
- package/.output/public/_nuxt/builds/meta/455d4da4-6357-4478-8703-78a79ccbbc0f.json +0 -1
- package/.output/public/_nuxt/default.DC7ec2JI.css +0 -1
- package/.output/public/_nuxt/entry.qdzR7QFr.css +0 -1
- package/.output/public/_nuxt/fpuEgQ7C.js +0 -12
- package/.output/public/_nuxt/jU7fkvuR.js +0 -1
- package/.output/public/_nuxt/lHkFwi3L.js +0 -1
- package/.output/public/_nuxt/pQ8l8BR2.js +0 -1
- package/.output/public/_nuxt/xYXqL1eV.js +0 -1
- package/.output/public/_nuxt/xxfb8w7n.js +0 -1
|
@@ -0,0 +1,1229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RedisSentinelFactory = exports.RedisSentinelClient = void 0;
|
|
7
|
+
const node_events_1 = require("node:events");
|
|
8
|
+
const client_1 = __importDefault(require("../client"));
|
|
9
|
+
const commander_1 = require("../commander");
|
|
10
|
+
const commands_1 = require("../commands");
|
|
11
|
+
const utils_1 = require("./utils");
|
|
12
|
+
const multi_commands_1 = __importDefault(require("./multi-commands"));
|
|
13
|
+
const pub_sub_proxy_1 = require("./pub-sub-proxy");
|
|
14
|
+
const promises_1 = require("node:timers/promises");
|
|
15
|
+
const module_1 = __importDefault(require("./module"));
|
|
16
|
+
const wait_queue_1 = require("./wait-queue");
|
|
17
|
+
const cache_1 = require("../client/cache");
|
|
18
|
+
const identity_1 = require("../client/identity");
|
|
19
|
+
class RedisSentinelClient {
|
|
20
|
+
#clientInfo;
|
|
21
|
+
#internal;
|
|
22
|
+
_self;
|
|
23
|
+
/**
|
|
24
|
+
* Indicates if the client connection is open
|
|
25
|
+
*
|
|
26
|
+
* @returns `true` if the client connection is open, `false` otherwise
|
|
27
|
+
*/
|
|
28
|
+
get isOpen() {
|
|
29
|
+
return this._self.#internal.isOpen;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Indicates if the client connection is ready to accept commands
|
|
33
|
+
*
|
|
34
|
+
* @returns `true` if the client connection is ready, `false` otherwise
|
|
35
|
+
*/
|
|
36
|
+
get isReady() {
|
|
37
|
+
return this._self.#internal.isReady;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Gets the command options configured for this client
|
|
41
|
+
*
|
|
42
|
+
* @returns The command options for this client or `undefined` if none were set
|
|
43
|
+
*/
|
|
44
|
+
get commandOptions() {
|
|
45
|
+
return this._self.#commandOptions;
|
|
46
|
+
}
|
|
47
|
+
#commandOptions;
|
|
48
|
+
constructor(internal, clientInfo, commandOptions) {
|
|
49
|
+
this._self = this;
|
|
50
|
+
this.#internal = internal;
|
|
51
|
+
this.#clientInfo = clientInfo;
|
|
52
|
+
this.#commandOptions = commandOptions;
|
|
53
|
+
}
|
|
54
|
+
static factory(config) {
|
|
55
|
+
const SentinelClient = (0, commander_1.attachConfig)({
|
|
56
|
+
BaseClass: RedisSentinelClient,
|
|
57
|
+
commands: commands_1.NON_STICKY_COMMANDS,
|
|
58
|
+
createCommand: (utils_1.createCommand),
|
|
59
|
+
createModuleCommand: (utils_1.createModuleCommand),
|
|
60
|
+
createFunctionCommand: (utils_1.createFunctionCommand),
|
|
61
|
+
createScriptCommand: (utils_1.createScriptCommand),
|
|
62
|
+
config
|
|
63
|
+
});
|
|
64
|
+
SentinelClient.prototype.Multi = multi_commands_1.default.extend(config);
|
|
65
|
+
return (internal, clientInfo, commandOptions) => {
|
|
66
|
+
// returning a "proxy" to prevent the namespaces._self to leak between "proxies"
|
|
67
|
+
return Object.create(new SentinelClient(internal, clientInfo, commandOptions));
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
static create(options, internal, clientInfo, commandOptions) {
|
|
71
|
+
return RedisSentinelClient.factory(options)(internal, clientInfo, commandOptions);
|
|
72
|
+
}
|
|
73
|
+
withCommandOptions(options) {
|
|
74
|
+
const proxy = Object.create(this);
|
|
75
|
+
proxy._commandOptions = options;
|
|
76
|
+
return proxy;
|
|
77
|
+
}
|
|
78
|
+
_commandOptionsProxy(key, value) {
|
|
79
|
+
const proxy = Object.create(this);
|
|
80
|
+
proxy._commandOptions = Object.create(this._self.#commandOptions ?? null);
|
|
81
|
+
proxy._commandOptions[key] = value;
|
|
82
|
+
return proxy;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Override the `typeMapping` command option
|
|
86
|
+
*/
|
|
87
|
+
withTypeMapping(typeMapping) {
|
|
88
|
+
return this._commandOptionsProxy('typeMapping', typeMapping);
|
|
89
|
+
}
|
|
90
|
+
async _execute(isReadonly, fn) {
|
|
91
|
+
if (this._self.#clientInfo === undefined) {
|
|
92
|
+
throw new Error("Attempted execution on released RedisSentinelClient lease");
|
|
93
|
+
}
|
|
94
|
+
return await this._self.#internal.execute(fn, this._self.#clientInfo);
|
|
95
|
+
}
|
|
96
|
+
async sendCommand(isReadonly, args, options) {
|
|
97
|
+
return this._execute(isReadonly, client => client.sendCommand(args, options));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @internal
|
|
101
|
+
*/
|
|
102
|
+
async _executePipeline(isReadonly, commands) {
|
|
103
|
+
return this._execute(isReadonly, client => client._executePipeline(commands));
|
|
104
|
+
}
|
|
105
|
+
/**f
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
async _executeMulti(isReadonly, commands) {
|
|
109
|
+
return this._execute(isReadonly, client => client._executeMulti(commands));
|
|
110
|
+
}
|
|
111
|
+
MULTI() {
|
|
112
|
+
return new this.Multi(this);
|
|
113
|
+
}
|
|
114
|
+
multi = this.MULTI;
|
|
115
|
+
WATCH(key) {
|
|
116
|
+
if (this._self.#clientInfo === undefined) {
|
|
117
|
+
throw new Error("Attempted execution on released RedisSentinelClient lease");
|
|
118
|
+
}
|
|
119
|
+
return this._execute(false, client => client.watch(key));
|
|
120
|
+
}
|
|
121
|
+
watch = this.WATCH;
|
|
122
|
+
UNWATCH() {
|
|
123
|
+
if (this._self.#clientInfo === undefined) {
|
|
124
|
+
throw new Error('Attempted execution on released RedisSentinelClient lease');
|
|
125
|
+
}
|
|
126
|
+
return this._execute(false, client => client.unwatch());
|
|
127
|
+
}
|
|
128
|
+
unwatch = this.UNWATCH;
|
|
129
|
+
/**
|
|
130
|
+
* Releases the client lease back to the pool
|
|
131
|
+
*
|
|
132
|
+
* After calling this method, the client instance should no longer be used as it
|
|
133
|
+
* will be returned to the client pool and may be given to other operations.
|
|
134
|
+
*
|
|
135
|
+
* @returns A promise that resolves when the client is ready to be reused, or undefined
|
|
136
|
+
* if the client was immediately ready
|
|
137
|
+
* @throws Error if the lease has already been released
|
|
138
|
+
*/
|
|
139
|
+
release() {
|
|
140
|
+
if (this._self.#clientInfo === undefined) {
|
|
141
|
+
throw new Error('RedisSentinelClient lease already released');
|
|
142
|
+
}
|
|
143
|
+
const result = this._self.#internal.releaseClientLease(this._self.#clientInfo);
|
|
144
|
+
this._self.#clientInfo = undefined;
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.RedisSentinelClient = RedisSentinelClient;
|
|
149
|
+
class RedisSentinel extends node_events_1.EventEmitter {
|
|
150
|
+
_self;
|
|
151
|
+
#internal;
|
|
152
|
+
#options;
|
|
153
|
+
#identity;
|
|
154
|
+
/**
|
|
155
|
+
* Indicates if the sentinel connection is open
|
|
156
|
+
*
|
|
157
|
+
* @returns `true` if the sentinel connection is open, `false` otherwise
|
|
158
|
+
*/
|
|
159
|
+
get isOpen() {
|
|
160
|
+
return this._self.#internal.isOpen;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Indicates if the sentinel connection is ready to accept commands
|
|
164
|
+
*
|
|
165
|
+
* @returns `true` if the sentinel connection is ready, `false` otherwise
|
|
166
|
+
*/
|
|
167
|
+
get isReady() {
|
|
168
|
+
return this._self.#internal.isReady;
|
|
169
|
+
}
|
|
170
|
+
get commandOptions() {
|
|
171
|
+
return this._self.#commandOptions;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* @internal
|
|
175
|
+
* Returns the sentinel identity for tracking in metrics.
|
|
176
|
+
*/
|
|
177
|
+
get identity() {
|
|
178
|
+
return this._self.#identity;
|
|
179
|
+
}
|
|
180
|
+
#commandOptions;
|
|
181
|
+
#trace = () => { };
|
|
182
|
+
#reservedClientInfo;
|
|
183
|
+
#masterClientCount = 0;
|
|
184
|
+
#masterClientInfo;
|
|
185
|
+
get clientSideCache() {
|
|
186
|
+
return this._self.#internal.clientSideCache;
|
|
187
|
+
}
|
|
188
|
+
constructor(options) {
|
|
189
|
+
super();
|
|
190
|
+
this._self = this;
|
|
191
|
+
const firstSentinel = options.sentinelRootNodes[0];
|
|
192
|
+
this.#identity = {
|
|
193
|
+
id: (0, identity_1.generateClientId)(firstSentinel?.host, firstSentinel?.port, undefined),
|
|
194
|
+
role: identity_1.ClientRole.SENTINEL,
|
|
195
|
+
};
|
|
196
|
+
this.#options = options;
|
|
197
|
+
if (options.commandOptions) {
|
|
198
|
+
this.#commandOptions = options.commandOptions;
|
|
199
|
+
}
|
|
200
|
+
this.#internal = new RedisSentinelInternal(options, this.#identity.id);
|
|
201
|
+
this.#internal.on('error', err => this.emit('error', err));
|
|
202
|
+
/* pass through underling events */
|
|
203
|
+
/* TODO: perhaps make this a struct and one vent, instead of multiple events */
|
|
204
|
+
this.#internal.on('topology-change', (event) => {
|
|
205
|
+
if (!this.emit('topology-change', event)) {
|
|
206
|
+
this._self.#trace(`RedisSentinel: re-emit for topology-change for ${event.type} event returned false`);
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
static factory(config) {
|
|
211
|
+
const Sentinel = (0, commander_1.attachConfig)({
|
|
212
|
+
BaseClass: RedisSentinel,
|
|
213
|
+
commands: commands_1.NON_STICKY_COMMANDS,
|
|
214
|
+
createCommand: (utils_1.createCommand),
|
|
215
|
+
createModuleCommand: (utils_1.createModuleCommand),
|
|
216
|
+
createFunctionCommand: (utils_1.createFunctionCommand),
|
|
217
|
+
createScriptCommand: (utils_1.createScriptCommand),
|
|
218
|
+
config
|
|
219
|
+
});
|
|
220
|
+
Sentinel.prototype.Multi = multi_commands_1.default.extend(config);
|
|
221
|
+
return (options) => {
|
|
222
|
+
// returning a "proxy" to prevent the namespaces.self to leak between "proxies"
|
|
223
|
+
return Object.create(new Sentinel(options));
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
static create(options) {
|
|
227
|
+
return RedisSentinel.factory(options)(options);
|
|
228
|
+
}
|
|
229
|
+
withCommandOptions(options) {
|
|
230
|
+
const proxy = Object.create(this);
|
|
231
|
+
proxy._commandOptions = options;
|
|
232
|
+
return proxy;
|
|
233
|
+
}
|
|
234
|
+
_commandOptionsProxy(key, value) {
|
|
235
|
+
const proxy = Object.create(this);
|
|
236
|
+
// Create new commandOptions object with the inherited properties
|
|
237
|
+
proxy._self.#commandOptions = {
|
|
238
|
+
...(this._self.#commandOptions || {}),
|
|
239
|
+
[key]: value
|
|
240
|
+
};
|
|
241
|
+
return proxy;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Override the `typeMapping` command option
|
|
245
|
+
*/
|
|
246
|
+
withTypeMapping(typeMapping) {
|
|
247
|
+
return this._commandOptionsProxy('typeMapping', typeMapping);
|
|
248
|
+
}
|
|
249
|
+
async connect() {
|
|
250
|
+
await this._self.#internal.connect();
|
|
251
|
+
if (this._self.#options.reserveClient) {
|
|
252
|
+
this._self.#reservedClientInfo = await this._self.#internal.getClientLease();
|
|
253
|
+
}
|
|
254
|
+
return this;
|
|
255
|
+
}
|
|
256
|
+
async _execute(isReadonly, fn) {
|
|
257
|
+
let clientInfo;
|
|
258
|
+
if (!isReadonly || !this._self.#internal.useReplicas) {
|
|
259
|
+
if (this._self.#reservedClientInfo) {
|
|
260
|
+
clientInfo = this._self.#reservedClientInfo;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
this._self.#masterClientInfo ??= await this._self.#internal.getClientLease();
|
|
264
|
+
clientInfo = this._self.#masterClientInfo;
|
|
265
|
+
this._self.#masterClientCount++;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
try {
|
|
269
|
+
return await this._self.#internal.execute(fn, clientInfo);
|
|
270
|
+
}
|
|
271
|
+
finally {
|
|
272
|
+
if (clientInfo !== undefined &&
|
|
273
|
+
clientInfo === this._self.#masterClientInfo &&
|
|
274
|
+
--this._self.#masterClientCount === 0) {
|
|
275
|
+
const promise = this._self.#internal.releaseClientLease(clientInfo);
|
|
276
|
+
this._self.#masterClientInfo = undefined;
|
|
277
|
+
if (promise)
|
|
278
|
+
await promise;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async use(fn) {
|
|
283
|
+
const clientInfo = await this._self.#internal.getClientLease();
|
|
284
|
+
try {
|
|
285
|
+
return await fn(RedisSentinelClient.create(this._self.#options, this._self.#internal, clientInfo, this._self.#commandOptions));
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
const promise = this._self.#internal.releaseClientLease(clientInfo);
|
|
289
|
+
if (promise)
|
|
290
|
+
await promise;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
async sendCommand(isReadonly, args, options) {
|
|
294
|
+
return this._execute(isReadonly, client => client.sendCommand(args, options));
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* @internal
|
|
298
|
+
*/
|
|
299
|
+
async _executePipeline(isReadonly, commands) {
|
|
300
|
+
return this._execute(isReadonly, client => client._executePipeline(commands));
|
|
301
|
+
}
|
|
302
|
+
/**f
|
|
303
|
+
* @internal
|
|
304
|
+
*/
|
|
305
|
+
async _executeMulti(isReadonly, commands) {
|
|
306
|
+
return this._execute(isReadonly, client => client._executeMulti(commands));
|
|
307
|
+
}
|
|
308
|
+
MULTI() {
|
|
309
|
+
return new this.Multi(this);
|
|
310
|
+
}
|
|
311
|
+
multi = this.MULTI;
|
|
312
|
+
async close() {
|
|
313
|
+
return this._self.#internal.close();
|
|
314
|
+
}
|
|
315
|
+
destroy() {
|
|
316
|
+
return this._self.#internal.destroy();
|
|
317
|
+
}
|
|
318
|
+
async SUBSCRIBE(channels, listener, bufferMode) {
|
|
319
|
+
return this._self.#internal.subscribe(channels, listener, bufferMode);
|
|
320
|
+
}
|
|
321
|
+
subscribe = this.SUBSCRIBE;
|
|
322
|
+
async UNSUBSCRIBE(channels, listener, bufferMode) {
|
|
323
|
+
return this._self.#internal.unsubscribe(channels, listener, bufferMode);
|
|
324
|
+
}
|
|
325
|
+
unsubscribe = this.UNSUBSCRIBE;
|
|
326
|
+
async PSUBSCRIBE(patterns, listener, bufferMode) {
|
|
327
|
+
return this._self.#internal.pSubscribe(patterns, listener, bufferMode);
|
|
328
|
+
}
|
|
329
|
+
pSubscribe = this.PSUBSCRIBE;
|
|
330
|
+
async PUNSUBSCRIBE(patterns, listener, bufferMode) {
|
|
331
|
+
return this._self.#internal.pUnsubscribe(patterns, listener, bufferMode);
|
|
332
|
+
}
|
|
333
|
+
pUnsubscribe = this.PUNSUBSCRIBE;
|
|
334
|
+
async SSUBSCRIBE(channels, listener, bufferMode) {
|
|
335
|
+
return this._self.#internal.sSubscribe(channels, listener, bufferMode);
|
|
336
|
+
}
|
|
337
|
+
sSubscribe = this.SSUBSCRIBE;
|
|
338
|
+
async SUNSUBSCRIBE(channels, listener, bufferMode) {
|
|
339
|
+
return this._self.#internal.sUnsubscribe(channels, listener, bufferMode);
|
|
340
|
+
}
|
|
341
|
+
sUnsubscribe = this.SUNSUBSCRIBE;
|
|
342
|
+
/**
|
|
343
|
+
* Acquires a master client lease for exclusive operations
|
|
344
|
+
*
|
|
345
|
+
* Used when multiple commands need to run on an exclusive client (for example, using `WATCH/MULTI/EXEC`).
|
|
346
|
+
* The returned client must be released after use with the `release()` method.
|
|
347
|
+
*
|
|
348
|
+
* @returns A promise that resolves to a Redis client connected to the master node
|
|
349
|
+
* @example
|
|
350
|
+
* ```javascript
|
|
351
|
+
* const clientLease = await sentinel.acquire();
|
|
352
|
+
*
|
|
353
|
+
* try {
|
|
354
|
+
* await clientLease.watch('key');
|
|
355
|
+
* const resp = await clientLease.multi()
|
|
356
|
+
* .get('key')
|
|
357
|
+
* .exec();
|
|
358
|
+
* } finally {
|
|
359
|
+
* clientLease.release();
|
|
360
|
+
* }
|
|
361
|
+
* ```
|
|
362
|
+
*/
|
|
363
|
+
async acquire() {
|
|
364
|
+
const clientInfo = await this._self.#internal.getClientLease();
|
|
365
|
+
return RedisSentinelClient.create(this._self.#options, this._self.#internal, clientInfo, this._self.#commandOptions);
|
|
366
|
+
}
|
|
367
|
+
getSentinelNode() {
|
|
368
|
+
return this._self.#internal.getSentinelNode();
|
|
369
|
+
}
|
|
370
|
+
getMasterNode() {
|
|
371
|
+
return this._self.#internal.getMasterNode();
|
|
372
|
+
}
|
|
373
|
+
getReplicaNodes() {
|
|
374
|
+
return this._self.#internal.getReplicaNodes();
|
|
375
|
+
}
|
|
376
|
+
setTracer(tracer) {
|
|
377
|
+
if (tracer) {
|
|
378
|
+
this._self.#trace = (msg) => { tracer.push(msg); };
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
this._self.#trace = () => { };
|
|
382
|
+
}
|
|
383
|
+
this._self.#internal.setTracer(tracer);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
exports.default = RedisSentinel;
|
|
387
|
+
class RedisSentinelInternal extends node_events_1.EventEmitter {
|
|
388
|
+
#isOpen = false;
|
|
389
|
+
get isOpen() {
|
|
390
|
+
return this.#isOpen;
|
|
391
|
+
}
|
|
392
|
+
#isReady = false;
|
|
393
|
+
get isReady() {
|
|
394
|
+
return this.#isReady;
|
|
395
|
+
}
|
|
396
|
+
#name;
|
|
397
|
+
#sentinelClientId;
|
|
398
|
+
#nodeClientOptions;
|
|
399
|
+
#sentinelClientOptions;
|
|
400
|
+
#nodeAddressMap;
|
|
401
|
+
#scanInterval;
|
|
402
|
+
#passthroughClientErrorEvents;
|
|
403
|
+
#RESP;
|
|
404
|
+
#anotherReset = false;
|
|
405
|
+
#configEpoch = 0;
|
|
406
|
+
#sentinelSeedNodes;
|
|
407
|
+
#sentinelRootNodes;
|
|
408
|
+
#sentinelClient;
|
|
409
|
+
#masterClients = [];
|
|
410
|
+
#masterClientQueue;
|
|
411
|
+
#masterPoolSize;
|
|
412
|
+
#replicaClients = [];
|
|
413
|
+
#replicaClientsIdx = 0;
|
|
414
|
+
#replicaPoolSize;
|
|
415
|
+
get useReplicas() {
|
|
416
|
+
return this.#replicaPoolSize > 0;
|
|
417
|
+
}
|
|
418
|
+
#connectPromise;
|
|
419
|
+
#maxCommandRediscovers;
|
|
420
|
+
#pubSubProxy;
|
|
421
|
+
#scanTimer;
|
|
422
|
+
#destroy = false;
|
|
423
|
+
#trace = () => { };
|
|
424
|
+
#clientSideCache;
|
|
425
|
+
get clientSideCache() {
|
|
426
|
+
return this.#clientSideCache;
|
|
427
|
+
}
|
|
428
|
+
#validateOptions(options) {
|
|
429
|
+
if (options?.clientSideCache && options?.RESP !== 3) {
|
|
430
|
+
throw new Error('Client Side Caching is only supported with RESP3');
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
constructor(options, sentinelClientId) {
|
|
434
|
+
super();
|
|
435
|
+
this.#validateOptions(options);
|
|
436
|
+
this.#name = options.name;
|
|
437
|
+
this.#sentinelClientId = sentinelClientId;
|
|
438
|
+
this.#RESP = options.RESP;
|
|
439
|
+
this.#sentinelSeedNodes = Array.from(options.sentinelRootNodes);
|
|
440
|
+
this.#sentinelRootNodes = Array.from(this.#sentinelSeedNodes);
|
|
441
|
+
this.#maxCommandRediscovers = options.maxCommandRediscovers ?? 16;
|
|
442
|
+
this.#masterPoolSize = options.masterPoolSize ?? 1;
|
|
443
|
+
this.#replicaPoolSize = options.replicaPoolSize ?? 0;
|
|
444
|
+
this.#nodeAddressMap = options.nodeAddressMap;
|
|
445
|
+
this.#scanInterval = options.scanInterval ?? 0;
|
|
446
|
+
this.#passthroughClientErrorEvents = options.passthroughClientErrorEvents ?? false;
|
|
447
|
+
this.#nodeClientOptions = (options.nodeClientOptions ? { ...options.nodeClientOptions } : {});
|
|
448
|
+
if (this.#nodeClientOptions.url !== undefined) {
|
|
449
|
+
throw new Error("invalid nodeClientOptions for Sentinel");
|
|
450
|
+
}
|
|
451
|
+
if (options.clientSideCache) {
|
|
452
|
+
if (options.clientSideCache instanceof cache_1.PooledClientSideCacheProvider) {
|
|
453
|
+
this.#clientSideCache = this.#nodeClientOptions.clientSideCache = options.clientSideCache;
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
const cscConfig = options.clientSideCache;
|
|
457
|
+
this.#clientSideCache = this.#nodeClientOptions.clientSideCache = new cache_1.BasicPooledClientSideCache(cscConfig);
|
|
458
|
+
// this.#clientSideCache = this.#nodeClientOptions.clientSideCache = new PooledNoRedirectClientSideCache(cscConfig);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
this.#sentinelClientOptions = options.sentinelClientOptions ? Object.assign({}, options.sentinelClientOptions) : {};
|
|
462
|
+
this.#sentinelClientOptions.modules = module_1.default;
|
|
463
|
+
if (this.#sentinelClientOptions.url !== undefined) {
|
|
464
|
+
throw new Error("invalid sentinelClientOptions for Sentinel");
|
|
465
|
+
}
|
|
466
|
+
this.#masterClientQueue = new wait_queue_1.WaitQueue();
|
|
467
|
+
for (let i = 0; i < this.#masterPoolSize; i++) {
|
|
468
|
+
this.#masterClientQueue.push(i);
|
|
469
|
+
}
|
|
470
|
+
/* persistent object for life of sentinel object */
|
|
471
|
+
this.#pubSubProxy = new pub_sub_proxy_1.PubSubProxy(this.#nodeClientOptions, err => this.emit('error', err));
|
|
472
|
+
}
|
|
473
|
+
#createClient(node, clientOptions, reconnectStrategy) {
|
|
474
|
+
const socket = (0, utils_1.getMappedNode)(node.host, node.port, this.#nodeAddressMap);
|
|
475
|
+
const client = client_1.default.create({
|
|
476
|
+
//first take the globally set RESP
|
|
477
|
+
RESP: this.#RESP,
|
|
478
|
+
//then take the client options, which can in theory overwrite it
|
|
479
|
+
...clientOptions,
|
|
480
|
+
socket: {
|
|
481
|
+
...clientOptions.socket,
|
|
482
|
+
host: socket.host,
|
|
483
|
+
port: socket.port,
|
|
484
|
+
...(reconnectStrategy !== undefined && { reconnectStrategy })
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
client._setIdentity(identity_1.ClientRole.SENTINEL_CLIENT, this.#sentinelClientId);
|
|
488
|
+
return client;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Gets a client lease from the master client pool
|
|
492
|
+
*
|
|
493
|
+
* @returns A client info object or a promise that resolves to a client info object
|
|
494
|
+
* when a client becomes available
|
|
495
|
+
*/
|
|
496
|
+
getClientLease() {
|
|
497
|
+
const id = this.#masterClientQueue.shift();
|
|
498
|
+
if (id !== undefined) {
|
|
499
|
+
return Promise.resolve({ id });
|
|
500
|
+
}
|
|
501
|
+
return this.#masterClientQueue.wait().then(id => ({ id }));
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Releases a client lease back to the pool
|
|
505
|
+
*
|
|
506
|
+
* If the client was used for a transaction that might have left it in a dirty state,
|
|
507
|
+
* it will be reset before being returned to the pool.
|
|
508
|
+
*
|
|
509
|
+
* @param clientInfo The client info object representing the client to release
|
|
510
|
+
* @returns A promise that resolves when the client is ready to be reused, or undefined
|
|
511
|
+
* if the client was immediately ready or no longer exists
|
|
512
|
+
*/
|
|
513
|
+
releaseClientLease(clientInfo) {
|
|
514
|
+
const client = this.#masterClients[clientInfo.id];
|
|
515
|
+
// client can be undefined if releasing in middle of a reconfigure
|
|
516
|
+
if (client !== undefined) {
|
|
517
|
+
const dirtyPromise = client.resetIfDirty();
|
|
518
|
+
if (dirtyPromise) {
|
|
519
|
+
return dirtyPromise
|
|
520
|
+
.then(() => this.#masterClientQueue.push(clientInfo.id));
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
this.#masterClientQueue.push(clientInfo.id);
|
|
524
|
+
}
|
|
525
|
+
async connect() {
|
|
526
|
+
if (this.#isOpen) {
|
|
527
|
+
throw new Error("already attempting to open");
|
|
528
|
+
}
|
|
529
|
+
try {
|
|
530
|
+
this.#isOpen = true;
|
|
531
|
+
this.#connectPromise = this.#connect();
|
|
532
|
+
await this.#connectPromise;
|
|
533
|
+
this.#isReady = true;
|
|
534
|
+
}
|
|
535
|
+
finally {
|
|
536
|
+
this.#connectPromise = undefined;
|
|
537
|
+
if (this.#scanInterval > 0) {
|
|
538
|
+
this.#scanTimer = setInterval(this.#reset.bind(this), this.#scanInterval);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
async #connect() {
|
|
543
|
+
let count = 0;
|
|
544
|
+
while (true) {
|
|
545
|
+
this.#trace("starting connect loop");
|
|
546
|
+
count += 1;
|
|
547
|
+
if (this.#destroy) {
|
|
548
|
+
this.#trace("in #connect and want to destroy");
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
try {
|
|
552
|
+
this.#anotherReset = false;
|
|
553
|
+
await this.transform(this.analyze(await this.observe()));
|
|
554
|
+
if (this.#anotherReset) {
|
|
555
|
+
this.#trace("#connect: anotherReset is true, so continuing");
|
|
556
|
+
continue;
|
|
557
|
+
}
|
|
558
|
+
this.#trace("#connect: returning");
|
|
559
|
+
return;
|
|
560
|
+
}
|
|
561
|
+
catch (e) {
|
|
562
|
+
this.#trace(`#connect: exception ${e.message}`);
|
|
563
|
+
if (!this.#isReady && count > this.#maxCommandRediscovers) {
|
|
564
|
+
throw e;
|
|
565
|
+
}
|
|
566
|
+
if (e.message !== 'no valid master node') {
|
|
567
|
+
console.log(e);
|
|
568
|
+
}
|
|
569
|
+
await (0, promises_1.setTimeout)(1000);
|
|
570
|
+
}
|
|
571
|
+
finally {
|
|
572
|
+
this.#trace("finished connect");
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
async execute(fn, clientInfo) {
|
|
577
|
+
let iter = 0;
|
|
578
|
+
while (true) {
|
|
579
|
+
if (this.#connectPromise !== undefined) {
|
|
580
|
+
await this.#connectPromise;
|
|
581
|
+
}
|
|
582
|
+
const client = this.#getClient(clientInfo);
|
|
583
|
+
if (!client.isReady) {
|
|
584
|
+
await this.#reset();
|
|
585
|
+
continue;
|
|
586
|
+
}
|
|
587
|
+
const sockOpts = client.options?.socket;
|
|
588
|
+
this.#trace("attemping to send command to " + sockOpts?.host + ":" + sockOpts?.port);
|
|
589
|
+
try {
|
|
590
|
+
/*
|
|
591
|
+
// force testing of READONLY errors
|
|
592
|
+
if (clientInfo !== undefined) {
|
|
593
|
+
if (Math.floor(Math.random() * 10) < 1) {
|
|
594
|
+
console.log("throwing READONLY error");
|
|
595
|
+
throw new Error("READONLY You can't write against a read only replica.");
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
*/
|
|
599
|
+
return await fn(client);
|
|
600
|
+
}
|
|
601
|
+
catch (err) {
|
|
602
|
+
if (++iter > this.#maxCommandRediscovers || !(err instanceof Error)) {
|
|
603
|
+
throw err;
|
|
604
|
+
}
|
|
605
|
+
/*
|
|
606
|
+
rediscover and retry if doing a command against a "master"
|
|
607
|
+
a) READONLY error (topology has changed) but we haven't been notified yet via pubsub
|
|
608
|
+
b) client is "not ready" (disconnected), which means topology might have changed, but sentinel might not see it yet
|
|
609
|
+
*/
|
|
610
|
+
if (clientInfo !== undefined && (err.message.startsWith('READONLY') || !client.isReady)) {
|
|
611
|
+
await this.#reset();
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
throw err;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
async #createPubSub(client) {
|
|
619
|
+
/* Whenever sentinels or slaves get added, or when slave configuration changes, reconfigure */
|
|
620
|
+
await client.pSubscribe(['switch-master', '[-+]sdown', '+slave', '+sentinel', '[-+]odown', '+slave-reconf-done'], (message, channel) => {
|
|
621
|
+
this.#handlePubSubControlChannel(channel, message);
|
|
622
|
+
}, true);
|
|
623
|
+
return client;
|
|
624
|
+
}
|
|
625
|
+
async #handlePubSubControlChannel(channel, message) {
|
|
626
|
+
this.#trace("pubsub control channel message on " + channel);
|
|
627
|
+
this.#reset();
|
|
628
|
+
}
|
|
629
|
+
// if clientInfo is defined, it corresponds to a master client in the #masterClients array, otherwise loop around replicaClients
|
|
630
|
+
#getClient(clientInfo) {
|
|
631
|
+
if (clientInfo !== undefined) {
|
|
632
|
+
return this.#masterClients[clientInfo.id];
|
|
633
|
+
}
|
|
634
|
+
if (this.#replicaClientsIdx >= this.#replicaClients.length) {
|
|
635
|
+
this.#replicaClientsIdx = 0;
|
|
636
|
+
}
|
|
637
|
+
if (this.#replicaClients.length == 0) {
|
|
638
|
+
throw new Error("no replicas available for read");
|
|
639
|
+
}
|
|
640
|
+
return this.#replicaClients[this.#replicaClientsIdx++];
|
|
641
|
+
}
|
|
642
|
+
async #reset() {
|
|
643
|
+
/* closing / don't reset */
|
|
644
|
+
if (this.#isReady == false || this.#destroy == true) {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
// already in #connect()
|
|
648
|
+
if (this.#connectPromise !== undefined) {
|
|
649
|
+
this.#anotherReset = true;
|
|
650
|
+
return await this.#connectPromise;
|
|
651
|
+
}
|
|
652
|
+
try {
|
|
653
|
+
this.#connectPromise = this.#connect();
|
|
654
|
+
return await this.#connectPromise;
|
|
655
|
+
}
|
|
656
|
+
finally {
|
|
657
|
+
this.#trace("finished reconfgure");
|
|
658
|
+
this.#connectPromise = undefined;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
#sentinelNodeListKey(nodes) {
|
|
662
|
+
return nodes.map(node => `${node.host}:${node.port}`).sort().join('|');
|
|
663
|
+
}
|
|
664
|
+
#restoreSentinelRootNodesIfEmpty() {
|
|
665
|
+
if (this.#sentinelRootNodes.length !== 0) {
|
|
666
|
+
return;
|
|
667
|
+
}
|
|
668
|
+
this.#trace("restoring sentinel roots from seed nodes");
|
|
669
|
+
this.#sentinelRootNodes = Array.from(this.#sentinelSeedNodes);
|
|
670
|
+
}
|
|
671
|
+
#handleSentinelFailure(node) {
|
|
672
|
+
const found = this.#sentinelRootNodes.findIndex((rootNode) => rootNode.host === node.host && rootNode.port === node.port);
|
|
673
|
+
if (found !== -1) {
|
|
674
|
+
this.#sentinelRootNodes.splice(found, 1);
|
|
675
|
+
}
|
|
676
|
+
this.#restoreSentinelRootNodesIfEmpty();
|
|
677
|
+
this.#reset();
|
|
678
|
+
}
|
|
679
|
+
async close() {
|
|
680
|
+
this.#destroy = true;
|
|
681
|
+
if (this.#connectPromise != undefined) {
|
|
682
|
+
await this.#connectPromise;
|
|
683
|
+
}
|
|
684
|
+
this.#isReady = false;
|
|
685
|
+
this.#clientSideCache?.onPoolClose();
|
|
686
|
+
if (this.#scanTimer) {
|
|
687
|
+
clearInterval(this.#scanTimer);
|
|
688
|
+
this.#scanTimer = undefined;
|
|
689
|
+
}
|
|
690
|
+
const promises = [];
|
|
691
|
+
if (this.#sentinelClient !== undefined) {
|
|
692
|
+
if (this.#sentinelClient.isOpen) {
|
|
693
|
+
promises.push(this.#sentinelClient.close());
|
|
694
|
+
}
|
|
695
|
+
this.#sentinelClient = undefined;
|
|
696
|
+
}
|
|
697
|
+
for (const client of this.#masterClients) {
|
|
698
|
+
if (client.isOpen) {
|
|
699
|
+
promises.push(client.close());
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
this.#masterClients = [];
|
|
703
|
+
for (const client of this.#replicaClients) {
|
|
704
|
+
if (client.isOpen) {
|
|
705
|
+
promises.push(client.close());
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
this.#replicaClients = [];
|
|
709
|
+
await Promise.all(promises);
|
|
710
|
+
this.#pubSubProxy.destroy();
|
|
711
|
+
this.#isOpen = false;
|
|
712
|
+
}
|
|
713
|
+
// destroy has to be async because its stopping others async events, timers and the like
|
|
714
|
+
// and shouldn't return until its finished.
|
|
715
|
+
async destroy() {
|
|
716
|
+
this.#destroy = true;
|
|
717
|
+
if (this.#connectPromise != undefined) {
|
|
718
|
+
await this.#connectPromise;
|
|
719
|
+
}
|
|
720
|
+
this.#isReady = false;
|
|
721
|
+
this.#clientSideCache?.onPoolClose();
|
|
722
|
+
if (this.#scanTimer) {
|
|
723
|
+
clearInterval(this.#scanTimer);
|
|
724
|
+
this.#scanTimer = undefined;
|
|
725
|
+
}
|
|
726
|
+
if (this.#sentinelClient !== undefined) {
|
|
727
|
+
if (this.#sentinelClient.isOpen) {
|
|
728
|
+
this.#sentinelClient.destroy();
|
|
729
|
+
}
|
|
730
|
+
this.#sentinelClient = undefined;
|
|
731
|
+
}
|
|
732
|
+
for (const client of this.#masterClients) {
|
|
733
|
+
if (client.isOpen) {
|
|
734
|
+
client.destroy();
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
this.#masterClients = [];
|
|
738
|
+
for (const client of this.#replicaClients) {
|
|
739
|
+
if (client.isOpen) {
|
|
740
|
+
client.destroy();
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
this.#replicaClients = [];
|
|
744
|
+
this.#pubSubProxy.destroy();
|
|
745
|
+
this.#isOpen = false;
|
|
746
|
+
this.#destroy = false;
|
|
747
|
+
}
|
|
748
|
+
async subscribe(channels, listener, bufferMode) {
|
|
749
|
+
return this.#pubSubProxy.subscribe(channels, listener, bufferMode);
|
|
750
|
+
}
|
|
751
|
+
async unsubscribe(channels, listener, bufferMode) {
|
|
752
|
+
return this.#pubSubProxy.unsubscribe(channels, listener, bufferMode);
|
|
753
|
+
}
|
|
754
|
+
async pSubscribe(patterns, listener, bufferMode) {
|
|
755
|
+
return this.#pubSubProxy.pSubscribe(patterns, listener, bufferMode);
|
|
756
|
+
}
|
|
757
|
+
async pUnsubscribe(patterns, listener, bufferMode) {
|
|
758
|
+
return this.#pubSubProxy.pUnsubscribe(patterns, listener, bufferMode);
|
|
759
|
+
}
|
|
760
|
+
async sSubscribe(channels, listener, bufferMode) {
|
|
761
|
+
return this.#pubSubProxy.sSubscribe(channels, listener, bufferMode);
|
|
762
|
+
}
|
|
763
|
+
async sUnsubscribe(channels, listener, bufferMode) {
|
|
764
|
+
return this.#pubSubProxy.sUnsubscribe(channels, listener, bufferMode);
|
|
765
|
+
}
|
|
766
|
+
// observe/analyze/transform remediation functions
|
|
767
|
+
async observe() {
|
|
768
|
+
this.#restoreSentinelRootNodesIfEmpty();
|
|
769
|
+
for (const node of this.#sentinelRootNodes) {
|
|
770
|
+
let client;
|
|
771
|
+
try {
|
|
772
|
+
this.#trace(`observe: trying to connect to sentinel: ${node.host}:${node.port}`);
|
|
773
|
+
client = this.#createClient(node, this.#sentinelClientOptions, false);
|
|
774
|
+
client.on('error', (err) => this.emit('error', `obseve client error: ${err}`));
|
|
775
|
+
await client.connect();
|
|
776
|
+
this.#trace(`observe: connected to sentinel`);
|
|
777
|
+
const [sentinelData, masterData, replicaData] = await Promise.all([
|
|
778
|
+
client.sentinel.sentinelSentinels(this.#name),
|
|
779
|
+
client.sentinel.sentinelMaster(this.#name),
|
|
780
|
+
client.sentinel.sentinelReplicas(this.#name)
|
|
781
|
+
]);
|
|
782
|
+
this.#trace("observe: got all sentinel data");
|
|
783
|
+
const ret = {
|
|
784
|
+
sentinelConnected: node,
|
|
785
|
+
sentinelData: sentinelData,
|
|
786
|
+
masterData: masterData,
|
|
787
|
+
replicaData: replicaData,
|
|
788
|
+
currentMaster: this.getMasterNode(),
|
|
789
|
+
currentReplicas: this.getReplicaNodes(),
|
|
790
|
+
currentSentinel: this.getSentinelNode(),
|
|
791
|
+
replicaPoolSize: this.#replicaPoolSize,
|
|
792
|
+
useReplicas: this.useReplicas
|
|
793
|
+
};
|
|
794
|
+
return ret;
|
|
795
|
+
}
|
|
796
|
+
catch (err) {
|
|
797
|
+
this.#trace(`observe: error ${err}`);
|
|
798
|
+
this.emit('error', err);
|
|
799
|
+
}
|
|
800
|
+
finally {
|
|
801
|
+
if (client !== undefined && client.isOpen) {
|
|
802
|
+
this.#trace(`observe: destroying sentinel client`);
|
|
803
|
+
client.destroy();
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
this.#trace(`observe: none of the sentinels are available`);
|
|
808
|
+
throw new Error('None of the sentinels are available');
|
|
809
|
+
}
|
|
810
|
+
analyze(observed) {
|
|
811
|
+
let master = (0, utils_1.parseNode)(observed.masterData);
|
|
812
|
+
if (master === undefined) {
|
|
813
|
+
this.#trace(`analyze: no valid master node because ${observed.masterData.flags}`);
|
|
814
|
+
throw new Error("no valid master node");
|
|
815
|
+
}
|
|
816
|
+
if (master.host === observed.currentMaster?.host && master.port === observed.currentMaster?.port) {
|
|
817
|
+
this.#trace(`analyze: master node hasn't changed from ${observed.currentMaster?.host}:${observed.currentMaster?.port}`);
|
|
818
|
+
master = undefined;
|
|
819
|
+
}
|
|
820
|
+
else {
|
|
821
|
+
this.#trace(`analyze: master node has changed to ${master.host}:${master.port} from ${observed.currentMaster?.host}:${observed.currentMaster?.port}`);
|
|
822
|
+
}
|
|
823
|
+
let sentinel = observed.sentinelConnected;
|
|
824
|
+
if (sentinel.host === observed.currentSentinel?.host && sentinel.port === observed.currentSentinel.port) {
|
|
825
|
+
this.#trace(`analyze: sentinel node hasn't changed`);
|
|
826
|
+
sentinel = undefined;
|
|
827
|
+
}
|
|
828
|
+
else {
|
|
829
|
+
this.#trace(`analyze: sentinel node has changed to ${sentinel.host}:${sentinel.port}`);
|
|
830
|
+
}
|
|
831
|
+
const replicasToClose = [];
|
|
832
|
+
const replicasToOpen = new Map();
|
|
833
|
+
const desiredSet = new Set();
|
|
834
|
+
const seen = new Set();
|
|
835
|
+
if (observed.useReplicas) {
|
|
836
|
+
const replicaList = (0, utils_1.createNodeList)(observed.replicaData);
|
|
837
|
+
for (const node of replicaList) {
|
|
838
|
+
desiredSet.add(JSON.stringify(node));
|
|
839
|
+
}
|
|
840
|
+
for (const [node, value] of observed.currentReplicas) {
|
|
841
|
+
if (!desiredSet.has(JSON.stringify(node))) {
|
|
842
|
+
replicasToClose.push(node);
|
|
843
|
+
this.#trace(`analyze: adding ${node.host}:${node.port} to replicsToClose`);
|
|
844
|
+
}
|
|
845
|
+
else {
|
|
846
|
+
seen.add(JSON.stringify(node));
|
|
847
|
+
if (value != observed.replicaPoolSize) {
|
|
848
|
+
replicasToOpen.set(node, observed.replicaPoolSize - value);
|
|
849
|
+
this.#trace(`analyze: adding ${node.host}:${node.port} to replicsToOpen`);
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
for (const node of replicaList) {
|
|
854
|
+
if (!seen.has(JSON.stringify(node))) {
|
|
855
|
+
replicasToOpen.set(node, observed.replicaPoolSize);
|
|
856
|
+
this.#trace(`analyze: adding ${node.host}:${node.port} to replicsToOpen`);
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
const ret = {
|
|
861
|
+
sentinelList: [observed.sentinelConnected].concat((0, utils_1.createNodeList)(observed.sentinelData)),
|
|
862
|
+
epoch: Number(observed.masterData['config-epoch']),
|
|
863
|
+
sentinelToOpen: sentinel,
|
|
864
|
+
masterToOpen: master,
|
|
865
|
+
replicasToClose: replicasToClose,
|
|
866
|
+
replicasToOpen: replicasToOpen,
|
|
867
|
+
};
|
|
868
|
+
return ret;
|
|
869
|
+
}
|
|
870
|
+
async transform(analyzed) {
|
|
871
|
+
this.#trace("transform: enter");
|
|
872
|
+
let promises = [];
|
|
873
|
+
if (analyzed.sentinelToOpen) {
|
|
874
|
+
this.#trace(`transform: opening a new sentinel`);
|
|
875
|
+
if (this.#sentinelClient !== undefined && this.#sentinelClient.isOpen) {
|
|
876
|
+
this.#trace(`transform: destroying old sentinel as open`);
|
|
877
|
+
this.#sentinelClient.destroy();
|
|
878
|
+
this.#sentinelClient = undefined;
|
|
879
|
+
}
|
|
880
|
+
else {
|
|
881
|
+
this.#trace(`transform: not destroying old sentinel as not open`);
|
|
882
|
+
}
|
|
883
|
+
this.#trace(`transform: creating new sentinel to ${analyzed.sentinelToOpen.host}:${analyzed.sentinelToOpen.port}`);
|
|
884
|
+
const node = analyzed.sentinelToOpen;
|
|
885
|
+
const client = this.#createClient(analyzed.sentinelToOpen, this.#sentinelClientOptions, false);
|
|
886
|
+
client.on('error', (err) => {
|
|
887
|
+
if (this.#passthroughClientErrorEvents) {
|
|
888
|
+
this.emit('error', new Error(`Sentinel Client (${node.host}:${node.port}): ${err.message}`, { cause: err }));
|
|
889
|
+
}
|
|
890
|
+
const event = {
|
|
891
|
+
type: 'SENTINEL',
|
|
892
|
+
node: (0, utils_1.clientSocketToNode)(client.options.socket),
|
|
893
|
+
error: err
|
|
894
|
+
};
|
|
895
|
+
this.emit('client-error', event);
|
|
896
|
+
this.#handleSentinelFailure(node);
|
|
897
|
+
});
|
|
898
|
+
this.#sentinelClient = client;
|
|
899
|
+
this.#trace(`transform: adding sentinel client connect() to promise list`);
|
|
900
|
+
const promise = this.#sentinelClient.connect().then((client) => { return this.#createPubSub(client); });
|
|
901
|
+
promises.push(promise);
|
|
902
|
+
this.#trace(`created sentinel client to ${analyzed.sentinelToOpen.host}:${analyzed.sentinelToOpen.port}`);
|
|
903
|
+
const event = {
|
|
904
|
+
type: "SENTINEL_CHANGE",
|
|
905
|
+
node: analyzed.sentinelToOpen
|
|
906
|
+
};
|
|
907
|
+
this.#trace(`transform: emiting topology-change event for sentinel_change`);
|
|
908
|
+
if (!this.emit('topology-change', event)) {
|
|
909
|
+
this.#trace(`transform: emit for topology-change for sentinel_change returned false`);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
if (analyzed.masterToOpen) {
|
|
913
|
+
this.#trace(`transform: opening a new master`);
|
|
914
|
+
const masterPromises = [];
|
|
915
|
+
const masterWatches = [];
|
|
916
|
+
this.#trace(`transform: destroying old masters if open`);
|
|
917
|
+
for (const client of this.#masterClients) {
|
|
918
|
+
masterWatches.push(client.isWatching || client.isDirtyWatch);
|
|
919
|
+
if (client.isOpen) {
|
|
920
|
+
client.destroy();
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
this.#masterClients = [];
|
|
924
|
+
this.#trace(`transform: creating all master clients and adding connect promises`);
|
|
925
|
+
for (let i = 0; i < this.#masterPoolSize; i++) {
|
|
926
|
+
const node = analyzed.masterToOpen;
|
|
927
|
+
const client = this.#createClient(analyzed.masterToOpen, this.#nodeClientOptions);
|
|
928
|
+
client.on('error', (err) => {
|
|
929
|
+
if (this.#passthroughClientErrorEvents) {
|
|
930
|
+
this.emit('error', new Error(`Master Client (${node.host}:${node.port}): ${err.message}`, { cause: err }));
|
|
931
|
+
}
|
|
932
|
+
const event = {
|
|
933
|
+
type: "MASTER",
|
|
934
|
+
node: (0, utils_1.clientSocketToNode)(client.options.socket),
|
|
935
|
+
error: err
|
|
936
|
+
};
|
|
937
|
+
this.emit('client-error', event);
|
|
938
|
+
});
|
|
939
|
+
if (masterWatches[i]) {
|
|
940
|
+
client.setDirtyWatch("sentinel config changed in middle of a WATCH Transaction");
|
|
941
|
+
}
|
|
942
|
+
this.#masterClients.push(client);
|
|
943
|
+
masterPromises.push(client.connect());
|
|
944
|
+
this.#trace(`created master client to ${analyzed.masterToOpen.host}:${analyzed.masterToOpen.port}`);
|
|
945
|
+
}
|
|
946
|
+
this.#trace(`transform: adding promise to change #pubSubProxy node`);
|
|
947
|
+
masterPromises.push(this.#pubSubProxy.changeNode(analyzed.masterToOpen));
|
|
948
|
+
promises.push(...masterPromises);
|
|
949
|
+
const event = {
|
|
950
|
+
type: "MASTER_CHANGE",
|
|
951
|
+
node: analyzed.masterToOpen
|
|
952
|
+
};
|
|
953
|
+
this.#trace(`transform: emiting topology-change event for master_change`);
|
|
954
|
+
if (!this.emit('topology-change', event)) {
|
|
955
|
+
this.#trace(`transform: emit for topology-change for master_change returned false`);
|
|
956
|
+
}
|
|
957
|
+
this.#configEpoch++;
|
|
958
|
+
}
|
|
959
|
+
const replicaCloseSet = new Set();
|
|
960
|
+
for (const node of analyzed.replicasToClose) {
|
|
961
|
+
const str = JSON.stringify(node);
|
|
962
|
+
replicaCloseSet.add(str);
|
|
963
|
+
}
|
|
964
|
+
const newClientList = [];
|
|
965
|
+
const removedSet = new Set();
|
|
966
|
+
for (const replica of this.#replicaClients) {
|
|
967
|
+
const node = (0, utils_1.clientSocketToNode)(replica.options.socket);
|
|
968
|
+
const str = JSON.stringify(node);
|
|
969
|
+
if (replicaCloseSet.has(str) || !replica.isOpen) {
|
|
970
|
+
if (replica.isOpen) {
|
|
971
|
+
const sockOpts = replica.options?.socket;
|
|
972
|
+
this.#trace(`destroying replica client to ${sockOpts?.host}:${sockOpts?.port}`);
|
|
973
|
+
replica.destroy();
|
|
974
|
+
}
|
|
975
|
+
if (!removedSet.has(str)) {
|
|
976
|
+
const event = {
|
|
977
|
+
type: "REPLICA_REMOVE",
|
|
978
|
+
node: node
|
|
979
|
+
};
|
|
980
|
+
this.emit('topology-change', event);
|
|
981
|
+
removedSet.add(str);
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
else {
|
|
985
|
+
newClientList.push(replica);
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
this.#replicaClients = newClientList;
|
|
989
|
+
if (analyzed.replicasToOpen.size != 0) {
|
|
990
|
+
for (const [node, size] of analyzed.replicasToOpen) {
|
|
991
|
+
for (let i = 0; i < size; i++) {
|
|
992
|
+
const client = this.#createClient(node, this.#nodeClientOptions);
|
|
993
|
+
client.on('error', (err) => {
|
|
994
|
+
if (this.#passthroughClientErrorEvents) {
|
|
995
|
+
this.emit('error', new Error(`Replica Client (${node.host}:${node.port}): ${err.message}`, { cause: err }));
|
|
996
|
+
}
|
|
997
|
+
const event = {
|
|
998
|
+
type: "REPLICA",
|
|
999
|
+
node: (0, utils_1.clientSocketToNode)(client.options.socket),
|
|
1000
|
+
error: err
|
|
1001
|
+
};
|
|
1002
|
+
this.emit('client-error', event);
|
|
1003
|
+
});
|
|
1004
|
+
this.#replicaClients.push(client);
|
|
1005
|
+
promises.push(client.connect());
|
|
1006
|
+
this.#trace(`created replica client to ${node.host}:${node.port}`);
|
|
1007
|
+
}
|
|
1008
|
+
const event = {
|
|
1009
|
+
type: "REPLICA_ADD",
|
|
1010
|
+
node: node
|
|
1011
|
+
};
|
|
1012
|
+
this.emit('topology-change', event);
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
if (this.#sentinelNodeListKey(analyzed.sentinelList) !== this.#sentinelNodeListKey(this.#sentinelRootNodes)) {
|
|
1016
|
+
this.#sentinelRootNodes = analyzed.sentinelList;
|
|
1017
|
+
const event = {
|
|
1018
|
+
type: "SENTINE_LIST_CHANGE",
|
|
1019
|
+
size: analyzed.sentinelList.length
|
|
1020
|
+
};
|
|
1021
|
+
this.emit('topology-change', event);
|
|
1022
|
+
}
|
|
1023
|
+
await Promise.all(promises);
|
|
1024
|
+
this.#trace("transform: exit");
|
|
1025
|
+
}
|
|
1026
|
+
// introspection functions
|
|
1027
|
+
getMasterNode() {
|
|
1028
|
+
if (this.#masterClients.length == 0) {
|
|
1029
|
+
return undefined;
|
|
1030
|
+
}
|
|
1031
|
+
for (const master of this.#masterClients) {
|
|
1032
|
+
if (master.isReady) {
|
|
1033
|
+
return (0, utils_1.clientSocketToNode)(master.options.socket);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
return undefined;
|
|
1037
|
+
}
|
|
1038
|
+
getSentinelNode() {
|
|
1039
|
+
if (this.#sentinelClient === undefined) {
|
|
1040
|
+
return undefined;
|
|
1041
|
+
}
|
|
1042
|
+
return (0, utils_1.clientSocketToNode)(this.#sentinelClient.options.socket);
|
|
1043
|
+
}
|
|
1044
|
+
getReplicaNodes() {
|
|
1045
|
+
const ret = new Map();
|
|
1046
|
+
const initialMap = new Map();
|
|
1047
|
+
for (const replica of this.#replicaClients) {
|
|
1048
|
+
const node = (0, utils_1.clientSocketToNode)(replica.options.socket);
|
|
1049
|
+
const hash = JSON.stringify(node);
|
|
1050
|
+
if (replica.isReady) {
|
|
1051
|
+
initialMap.set(hash, (initialMap.get(hash) ?? 0) + 1);
|
|
1052
|
+
}
|
|
1053
|
+
else {
|
|
1054
|
+
if (!initialMap.has(hash)) {
|
|
1055
|
+
initialMap.set(hash, 0);
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
for (const [key, value] of initialMap) {
|
|
1060
|
+
ret.set(JSON.parse(key), value);
|
|
1061
|
+
}
|
|
1062
|
+
return ret;
|
|
1063
|
+
}
|
|
1064
|
+
setTracer(tracer) {
|
|
1065
|
+
if (tracer) {
|
|
1066
|
+
this.#trace = (msg) => { tracer.push(msg); };
|
|
1067
|
+
}
|
|
1068
|
+
else {
|
|
1069
|
+
// empty function is faster than testing if something is defined or not
|
|
1070
|
+
this.#trace = () => { };
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
class RedisSentinelFactory extends node_events_1.EventEmitter {
|
|
1075
|
+
options;
|
|
1076
|
+
#sentinelRootNodes;
|
|
1077
|
+
#replicaIdx = -1;
|
|
1078
|
+
constructor(options) {
|
|
1079
|
+
super();
|
|
1080
|
+
this.options = options;
|
|
1081
|
+
this.#sentinelRootNodes = options.sentinelRootNodes;
|
|
1082
|
+
}
|
|
1083
|
+
async updateSentinelRootNodes() {
|
|
1084
|
+
for (const node of this.#sentinelRootNodes) {
|
|
1085
|
+
const client = client_1.default.create({
|
|
1086
|
+
...this.options.sentinelClientOptions,
|
|
1087
|
+
socket: {
|
|
1088
|
+
...this.options.sentinelClientOptions?.socket,
|
|
1089
|
+
host: node.host,
|
|
1090
|
+
port: node.port,
|
|
1091
|
+
reconnectStrategy: false
|
|
1092
|
+
},
|
|
1093
|
+
modules: module_1.default
|
|
1094
|
+
}).on('error', (err) => this.emit(`updateSentinelRootNodes: ${err}`));
|
|
1095
|
+
try {
|
|
1096
|
+
await client.connect();
|
|
1097
|
+
}
|
|
1098
|
+
catch {
|
|
1099
|
+
if (client.isOpen) {
|
|
1100
|
+
client.destroy();
|
|
1101
|
+
}
|
|
1102
|
+
continue;
|
|
1103
|
+
}
|
|
1104
|
+
try {
|
|
1105
|
+
const sentinelData = await client.sentinel.sentinelSentinels(this.options.name);
|
|
1106
|
+
this.#sentinelRootNodes = [node].concat((0, utils_1.createNodeList)(sentinelData));
|
|
1107
|
+
return;
|
|
1108
|
+
}
|
|
1109
|
+
finally {
|
|
1110
|
+
client.destroy();
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
throw new Error("Couldn't connect to any sentinel node");
|
|
1114
|
+
}
|
|
1115
|
+
async getMasterNode() {
|
|
1116
|
+
let connected = false;
|
|
1117
|
+
for (const node of this.#sentinelRootNodes) {
|
|
1118
|
+
const client = client_1.default.create({
|
|
1119
|
+
...this.options.sentinelClientOptions,
|
|
1120
|
+
socket: {
|
|
1121
|
+
...this.options.sentinelClientOptions?.socket,
|
|
1122
|
+
host: node.host,
|
|
1123
|
+
port: node.port,
|
|
1124
|
+
reconnectStrategy: false
|
|
1125
|
+
},
|
|
1126
|
+
modules: module_1.default
|
|
1127
|
+
}).on('error', err => this.emit(`getMasterNode: ${err}`));
|
|
1128
|
+
try {
|
|
1129
|
+
await client.connect();
|
|
1130
|
+
}
|
|
1131
|
+
catch {
|
|
1132
|
+
if (client.isOpen) {
|
|
1133
|
+
client.destroy();
|
|
1134
|
+
}
|
|
1135
|
+
continue;
|
|
1136
|
+
}
|
|
1137
|
+
connected = true;
|
|
1138
|
+
try {
|
|
1139
|
+
const masterData = await client.sentinel.sentinelMaster(this.options.name);
|
|
1140
|
+
let master = (0, utils_1.parseNode)(masterData);
|
|
1141
|
+
if (master === undefined) {
|
|
1142
|
+
continue;
|
|
1143
|
+
}
|
|
1144
|
+
return master;
|
|
1145
|
+
}
|
|
1146
|
+
finally {
|
|
1147
|
+
client.destroy();
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
if (connected) {
|
|
1151
|
+
throw new Error("Master Node Not Enumerated");
|
|
1152
|
+
}
|
|
1153
|
+
throw new Error("couldn't connect to any sentinels");
|
|
1154
|
+
}
|
|
1155
|
+
async getMasterClient() {
|
|
1156
|
+
const master = await this.getMasterNode();
|
|
1157
|
+
const socket = (0, utils_1.getMappedNode)(master.host, master.port, this.options.nodeAddressMap);
|
|
1158
|
+
return client_1.default.create({
|
|
1159
|
+
...this.options.nodeClientOptions,
|
|
1160
|
+
socket: {
|
|
1161
|
+
...this.options.nodeClientOptions?.socket,
|
|
1162
|
+
host: socket.host,
|
|
1163
|
+
port: socket.port
|
|
1164
|
+
}
|
|
1165
|
+
});
|
|
1166
|
+
}
|
|
1167
|
+
async getReplicaNodes() {
|
|
1168
|
+
let connected = false;
|
|
1169
|
+
for (const node of this.#sentinelRootNodes) {
|
|
1170
|
+
const client = client_1.default.create({
|
|
1171
|
+
...this.options.sentinelClientOptions,
|
|
1172
|
+
socket: {
|
|
1173
|
+
...this.options.sentinelClientOptions?.socket,
|
|
1174
|
+
host: node.host,
|
|
1175
|
+
port: node.port,
|
|
1176
|
+
reconnectStrategy: false
|
|
1177
|
+
},
|
|
1178
|
+
modules: module_1.default
|
|
1179
|
+
}).on('error', err => this.emit(`getReplicaNodes: ${err}`));
|
|
1180
|
+
try {
|
|
1181
|
+
await client.connect();
|
|
1182
|
+
}
|
|
1183
|
+
catch {
|
|
1184
|
+
if (client.isOpen) {
|
|
1185
|
+
client.destroy();
|
|
1186
|
+
}
|
|
1187
|
+
continue;
|
|
1188
|
+
}
|
|
1189
|
+
connected = true;
|
|
1190
|
+
try {
|
|
1191
|
+
const replicaData = await client.sentinel.sentinelReplicas(this.options.name);
|
|
1192
|
+
const replicas = (0, utils_1.createNodeList)(replicaData);
|
|
1193
|
+
if (replicas.length == 0) {
|
|
1194
|
+
continue;
|
|
1195
|
+
}
|
|
1196
|
+
return replicas;
|
|
1197
|
+
}
|
|
1198
|
+
finally {
|
|
1199
|
+
client.destroy();
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
if (connected) {
|
|
1203
|
+
throw new Error("No Replicas Nodes Enumerated");
|
|
1204
|
+
}
|
|
1205
|
+
throw new Error("couldn't connect to any sentinels");
|
|
1206
|
+
}
|
|
1207
|
+
async getReplicaClient() {
|
|
1208
|
+
const replicas = await this.getReplicaNodes();
|
|
1209
|
+
if (replicas.length == 0) {
|
|
1210
|
+
throw new Error("no available replicas");
|
|
1211
|
+
}
|
|
1212
|
+
this.#replicaIdx++;
|
|
1213
|
+
if (this.#replicaIdx >= replicas.length) {
|
|
1214
|
+
this.#replicaIdx = 0;
|
|
1215
|
+
}
|
|
1216
|
+
const replica = replicas[this.#replicaIdx];
|
|
1217
|
+
const socket = (0, utils_1.getMappedNode)(replica.host, replica.port, this.options.nodeAddressMap);
|
|
1218
|
+
return client_1.default.create({
|
|
1219
|
+
...this.options.nodeClientOptions,
|
|
1220
|
+
socket: {
|
|
1221
|
+
...this.options.nodeClientOptions?.socket,
|
|
1222
|
+
host: socket.host,
|
|
1223
|
+
port: socket.port
|
|
1224
|
+
}
|
|
1225
|
+
});
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
exports.RedisSentinelFactory = RedisSentinelFactory;
|
|
1229
|
+
//# sourceMappingURL=index.js.map
|